Terraform:依靠计数资源

时间:2020-11-07 14:45:50

标签: terraform terraform-provider-azure

用例: 使用分配给每个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社区论坛上,但没有回复。

1 个答案:

答案 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更快,因此无法使用它