Назад | Перейти на главную страницу

Как установить статический частный IP-адрес для сетевой карты в Azure с помощью terraform?

Я создаю сетевую карту в Azure с помощью скрипта terraform. по умолчанию он назначает сетевой карте динамический частный IP-адрес. Если я выберу private_ip_address_allocation = "Static" Затем мне нужно передать статический IP-адрес, и очень сложно управлять всей информацией IP.

Я пробовал использовать, как показано ниже - Terraform - предоставление статических IP-адресов в Azure

resource "azurerm_network_interface" "myterraformnic1" {
  count               = "${var.my_count}"
   name                      = "myNIC1"
    location                  = "eastus"
    resource_group_name       = "${azurerm_resource_group.myterraformgroup.name}"
    network_security_group_id = "${azurerm_network_security_group.myterraformnsg.id}"

    ip_configuration {
        name                          = "myNicConfiguration1"
        subnet_id                     = "${azurerm_subnet.myterraformsubnet.id}"
        private_ip_address_allocation = "static"
        private_ip_address            = "${cidrhost("10.0.1.0/24",  4+count.index)}"

    }

    tags = {
        environment = "Terraform Demo1"
    }
}

Он будет работать для 1 NIC, но у меня уже есть 20 NIC, назначенных со статическими IP-адресами, а затем я не могу получить IP-адреса и установить доступный статический IP-адрес.

Как я могу автоматизировать установку частного IP-адреса на Статический в самом коде terraform?

К сожалению, нет простого решения. Если вам нужна сетевая карта со статическим внутренним IP-адресом, тогда Azure ожидает, что вы укажете ему, какой IP-адрес вы хотите использовать, он не выберет вас. Если вы посмотрите на пример для этого с шаблоном ARM они обманывают и сначала устанавливают динамический IP-адрес, поэтому Azure генерирует IP-адрес, а затем меняет режим на динамический.

Таким образом, в Terraform вам нужно будет сделать что-то подобное: сначала создать сетевой адаптер с динамическим IP-адресом, затем создать тот же сетевой адаптер во второй раз, но на этот раз сделать его статическим.

Альтернативой является использование cidrsubnet нотацию в Terraform для создания действительного IP-адреса в вашей подсети. Это будет работать, но проблема здесь в том, что у вас нет гарантии, что этот IP-адрес еще не используется другими ресурсами в вашей подсети, если вы не создали их все с помощью Terraform и не увеличивали каждый раз IP-адреса.