Я создаю сетевую карту в 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-адреса.