如何在Terraform中显示列表中的值?

时间:2019-03-05 11:52:19

标签: azure terraform

我有一个从资源组中获取托管磁盘的模块,然后从另一个模块中调用该模块,其中将显示所有托管磁盘的名称。

当我运行plan命令时,出现错误“名称必须是单个值,而不是列表”。如何显示列表中的值?

模块1-获取值

data "azurerm_managed_disk" "disk" {
resource_group_name = "mfa-rg"
name = ["*"]
}

output "disks" {  
value = ["${data.azurerm_managed_disk.disk.name}"]

}

模块2-调用模块1显示值

 module "rgmod"{
 source = "./RG"
 }

output "rgdetails"{
value = "${module.rgmod.disks}"
  }

1 个答案:

答案 0 :(得分:0)

在您的问题中,当您创建包含所有Azure托管磁盘的列表时,可以像这样显示列表中的所有磁盘名称:

output "disks" {  
  value = "${data.azurerm_managed_disk.disk.*.name}"
}

让我们看一下多个接口列表的示例。当您这样创建多个接口时:

resource "azurerm_network_interface" "test" {
  count               = 5
  name                = "acceptanceTestNetworkInterface1"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_resource_group.test.name}"

  ip_configuration {
    name                          = "testconfiguration1"
    subnet_id                     = "${azurerm_subnet.test.id}"
    private_ip_address_allocation = "Dynamic"
  }

  tags {
    environment = "staging"
  }
}

然后您可以显示所有接口名称,如下所示:

    output "disks" {  
      value = "${azurerm_network_interface.test.*.id}"
    }

因此,您应该确保列表是真​​实列表。然后像上面一样输出。