如何使用对象变量作为块?

时间:2019-09-16 07:52:13

标签: terraform

我有以下Terraform文件:

array2

但是当我尝试验证它时,我得到了以下输出。

  

错误:参数不受支持

     

在main.tf第48行的资源“ azurerm_network_interface”“测试”中:     48:ip_configuration = var.azure_network_interface_ip_configuration

     

此处不应使用名为“ ip_configuration”的参数。你是说要   定义一个类型为“ ip_configuration”的块?

我只想使用一个变量作为一个块。我正在使用Terraform 0.12.8。我知道我可以分别设置每个参数,但是对我来说,只设置完整的块会容易得多。

1 个答案:

答案 0 :(得分:1)

不可能仅在一行中填充整个块。相反,您必须写出块并分别分配每个参数,以便从对象值到块的转换是显式的,并且Terraform可以验证各个参数:

  ip_configuration {
    name                          = var.azure_network_interface_ip_configuration.name
    subnet_id                     = var.azure_network_interface_ip_configuration.subnet_id
    private_ip_address_allocation = var.azure_network_interface_ip_configuration.private_ip_address_allocation
    private_ip_address            = var.azure_network_interface_ip_configuration.private_ip_address
    public_ip_address_id          = var.azure_network_interface_ip_configuration.public_ip_address_id
  }

这是Terraform设计权衡的一个示例,旨在权衡将来的读者,使配置更清晰,但又需要配置作者付出更多工作。在这种情况下,我们的目标是明确指出正在设置哪些参数,而不是要求读者查找并理解var.azure_network_interface_ip_configuration的声明以了解这一点。