我有以下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。我知道我可以分别设置每个参数,但是对我来说,只设置完整的块会容易得多。
答案 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
的声明以了解这一点。