用例: 使用分配给每个VM的公共IP创建X个VM。
到目前为止,研究发现已创建了先前的问题单-日期为2017(https://github.com/hashicorp/terraform/issues/15285),其中@apparentlymart讨论了此问题。
此修复程序是,在terraform v0.12中,显式支持增加了对要添加的独立常量的引用,以便在depends_on中进行引用。
我的回购:https://github.com/CPWu/terraform_azure_compute
尝试创建将创建X数量的Azure Linux计算的模块,第一个VM创建完美,但是在“ 2X”请求上的第二个计算单元未正确创建。动态IP已创建,但未分配给与第二个VM关联的NIC。我的理解是,因为被计数的资源被视为单个节点,并且在创建NIC时IP不可用。研究了v0.12.6中实现的for_each构造,但看起来并不能解决我的问题。
更新:我可以看到所有资源都已创建,但是IP [1]仍然存在,因此继续前进不会获得与相应服务器NIC的关联。我还张贴在Hashicorp社区论坛上,但没有回复。
答案 0 :(得分:0)
好主意
尝试在此处更改依赖项:
resource "azurerm_network_interface" "sandbox_nic" {
name = "${var.SERVER_NAME}-${format("%02d",count.index)}-nic"
location = var.AZURE_REGION
resource_group_name = var.RESOURCE_GROUP_NAME
count = var.NODE_COUNT
ip_configuration {
name = "${var.SERVER_NAME}-ip"
subnet_id = azurerm_subnet.sandbox_subnet.id
private_ip_address_allocation = "dynamic"
public_ip_address_id = count.index == 0 ? element(azurerm_public_ip.sandbox_public_ip.*.id,count.index) : null
}
**depends_on = [
azurerm_public_ip.sandbox_public_ip[1],
]**
}
收件人:
azurerm_public_ip.sandbox_public_ip ,不带索引指针 该接口的创建速度可能比第3个和第4个IP更快,因此无法使用它