Terraform 地形:取决于资源数量

Terraform 地形:取决于资源数量,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,用例: 使用分配给每个VM的公共ip创建X个VM 到目前为止的研究发现,之前的发行单创建日期为2017年。()其中@apparentlymart讨论了这个问题 修复方法是,在terraform v0.12中,添加了对单个常量的显式支持,这些常量是在依赖项中添加以供参考的 我的回购协议: 试图创建一个模块来创建X个azure linux计算,第一个VM创建得非常完美,但“2X”请求中的第二个计算单元没有正确创建。动态IP已创建,但未分配给与第二个VM关联的NIC。我的理解是,因为计数的资源被视为单

用例: 使用分配给每个VM的公共ip创建X个VM

到目前为止的研究发现,之前的发行单创建日期为2017年。()其中@apparentlymart讨论了这个问题

修复方法是,在terraform v0.12中,添加了对单个常量的显式支持,这些常量是在依赖项中添加以供参考的

我的回购协议:

试图创建一个模块来创建X个azure linux计算,第一个VM创建得非常完美,但“2X”请求中的第二个计算单元没有正确创建。动态IP已创建,但未分配给与第二个VM关联的NIC。我的理解是,因为计数的资源被视为单个节点,并且在创建NIC时IP不可用。研究了v0.12.6中实现的每个构造的for_,但这似乎不能解决我的问题

更新:我可以看到所有的资源都被创建了,但是IP[1]和以后的工作并没有得到与相应服务器NIC的关联。我也在Hashicorp社区论坛上发了帖子,但还没有回复。

Quick idea

尝试更改此处的依赖项:

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\u public\u ip.沙盒\u public\u ip不带索引指针
该接口的创建速度可能比第3和第4个IP快,因此无法拾取该接口

感谢您的评论,我最初尝试了该操作,但没有成功,之前已将服务器计数设置为2,因此我认为如果我对创建的NIC的最后一个实例设置依赖项,它将正常工作。Terraform在后端使用依赖关系图,因此不幸的是,资源的实例没有在图中创建。无论资源的数量如何,都只是将其视为图中的一个节点。