Как подключить сетевой интерфейс azure vm к пулу адресов балансировщика нагрузки azure? - PullRequest
0 голосов
/ 15 марта 2020

У меня есть некоторый код, который делает несколько vms, я пытаюсь динамически добавить их в пул адресов балансировщика нагрузки, но я столкнулся со следующей ошибкой, которая я понятия не имею, что это значит, любая помощь будет оценена как ошибка кажется несколько неясным

Ошибка: ошибка: Конфигурация IP «azure_network_interface_address_pool_association» не найдена в сетевом интерфейсе «client_host_ni c -0» (группа ресурсов «client_rg»)

в строке 99 vm2.tf, в ресурсе "azurerm_network_interface_backend_address_pool_assoiation" "network_interface_backend_address_pool_association": 99: ресурс "azurerm_network_interface_backend_address_pool_association" "network * * * * * * файл main.tf модуля балансировки

#rember when using this module to call the network module for the resource group name
############## load balancer section  ##############
resource "azurerm_public_ip" "azure_load_balancer_IP" {
  name                = "azure_load_balancer_IP"
  location            = var.resource_group_location
  resource_group_name = var.resource_group_name
  allocation_method   = "Static"
}

resource "azurerm_lb" "azure_load_balancer" {
  name                = "TestLoadBalancer"
  location            = var.resource_group_location
  resource_group_name = var.resource_group_name

  frontend_ip_configuration {
    name                 = "front_end_IP_configuration_for_azure_load_balancer"
    public_ip_address_id = azurerm_public_ip.azure_load_balancer_IP.id
  }
}

resource "azurerm_lb_backend_address_pool" "backend_address_pool" {
  resource_group_name = var.resource_group_name
  loadbalancer_id     = azurerm_lb.azure_load_balancer.id
  name                = "BackEndAddressPool"
}

resource "azurerm_lb_rule" "azure_lb_rule" {
  resource_group_name            = var.resource_group_name
  loadbalancer_id                = azurerm_lb.azure_load_balancer.id
  name                           = "LBRule"
  protocol                       = "Tcp"
  frontend_port                  = 80
  backend_port                   = 80
  frontend_ip_configuration_name = "front_end_IP_configuration_for_azure_load_balancer"
}

output.tf

output "azure_load_balancer_ip" {
  value = azurerm_public_ip.azure_load_balancer_IP.id
}

output "azure_backend_pool_id" {
  value = azurerm_lb_backend_address_pool.backend_address_pool.id
}

дополнительная информация

* provider.azurerm: version = "~> 2.1"

main.tf

module "loadbalancer" {
 source = "./azure_load_balancer_module" #this may need to be a different git repo as we are not referencing branches here only the master
resource_group_name = module.network.azurerm_resource_group_client_name
  resource_group_location = var.resource_group_location
 }

1 Ответ

0 голосов
/ 17 марта 2020

Ошибка означает, что Имя Ipconfiguration , установленное вами для сетевого интерфейса, не совпадает с тем, которое вы указали для ресурса azurerm_network_interface_backend_address_pool_association. Вы можете посмотреть описание для ip_configuration_name здесь . И, как я вижу, вы хотите связать несколько интерфейсов с балансировщиком нагрузки.

Поэтому я рекомендую вам изменить сетевой интерфейс и связь следующим образом:

resource "azurerm_network_interface" "client_nics" {
    count                     = var.node_count
    name                      = "client_host_nic-${count.index}"
    location                  = var.resource_group_location
    resource_group_name       = module.network.azurerm_resource_group_client_name
#    network_security_group_id = module.network.bastion_host_network_security_group

    ip_configuration {
        name                          = "client_host_nic-${count.index}"
        subnet_id                     = module.network.client_subnet_id
        private_ip_address_allocation = "Dynamic"
#       public_ip_address_id          = module.network.bastion_host_puplic_ip_address #optional field we have a bastion host so no need for public IP also its vnet peered so this adds an extra layer of securit in a way
    }

    tags = {
        environment = "Production"
    }
}

resource "azurerm_network_interface_backend_address_pool_association" "network_interface_backend_address_pool_association" {
  count                 = var.node_count
  network_interface_id    = element(azurerm_network_interface.client_nics.*.id, count.index) #fixes interpolation issues
  ip_configuration_name   = "client_host_nic-${count.index}"
  backend_address_pool_id = module.loadbalancer.azure_backend_pool_id
}
...