#azure #terraform #hcl
#azure #terraform #hcl
Вопрос:
Когда я пытаюсь создать брандмауэр с использованием Terraform HCL, я получаю следующее сообщение об ошибке. Просто замечание о #{переменных} #, я передаю токены через Azure DevOps, и эта часть работает нормально:
#Create public ip for load balancer
resource "azurerm_public_ip" "#{application}##{vertical}#PublicIPforLB" {
name = "lbip#{application}##{vertical}#"
location = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.location
resource_group_name = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.name
allocation_method = "Static"
#sku = "Standard"
}
#Create firewall for public ip
resource "azurerm_firewall" "#{application}##{vertical}#Firewall" {
name = "fw#{application}##{vertical}#"
location = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.location
resource_group_name = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.name
ip_configuration {
name = "ipconfFW"
subnet_id = azurerm_subnet.AzureFirewallSubnet.id
public_ip_address_id = azurerm_public_ip.#{application}##{vertical}#PublicIPforLB.id
}
}
#Create security group and rule for accessing web application
resource "azurerm_network_security_group" "#{application}##{vertical}#SecurityGroup" {
name = "sg#{application}##{vertical}#"
location = "canadaeast"
resource_group_name = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.name
security_rule {
name = "SSH"
priority = 1001
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "443"
source_address_prefix = "*"
destination_address_prefix = "*"
}
}
#Create load balancer for 2 front-end web server VMs
resource "azurerm_lb" "#{application}##{vertical}#LoadBalancer" {
name = "lb#{application}##{vertical}#"
location = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.location
resource_group_name = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.name
frontend_ip_configuration {
name = "ipconfLB"
public_ip_address_id = azurerm_public_ip.#{application}##{vertical}#PublicIPforLB.id
}
}
Ошибка: Code =»AzureFirewallPublicIPNotStandard» Message =»AzureFirewall fwMyTest ссылается на нестандартный общедоступный IP-адрес
Я попытался указать артикул в качестве стандартного; однако я получаю следующую ошибку:
Ошибка: Code =»PublicIPAndLBSkuDoNotMatch» Message =»Базовый балансировщик нагрузки sku не может ссылаться на стандартный PublicIP sku
Любая помощь будет принята с благодарностью!!
Спасибо!! 🙂
Ответ №1:
Я предлагаю посмотреть артикул, который в настоящее время установлен в PublicIP. Azure хочет, чтобы артикул из LB соответствовал артикулу ресурса PublicIP, который вы пытаетесь использовать (в данном случае «Стандартный»). В настоящее время он прокомментирован для публикации. И PublicIP, и LB по умолчанию имеют «Базовый» артикул.
#Create public ip for load balancer
resource "azurerm_public_ip" "#{application}##{vertical}#PublicIPforLB" {
name = "lbip#{application}##{vertical}#"
location = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.location
resource_group_name = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.name
allocation_method = "Static"
sku = "Standard"
}
и
#Create load balancer for 2 front-end web server VMs
resource "azurerm_lb" "#{application}##{vertical}#LoadBalancer" {
name = "lb#{application}##{vertical}#"
location = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.location
resource_group_name = azurerm_resource_group.#{application}##{vertical}#ResourceGroup.name
sku = "Standard"
frontend_ip_configuration {
name = "ipconfLB"
public_ip_address_id = azurerm_public_ip.#{application}##{vertical}#PublicIPforLB.id
}
}
Комментарии:
1. Это исправлено! БОЛЬШОЕ СПАСИБО!