Terraform如何遍历列表为list(map(string))类型参数赋值
解决方案
直接使用Terraform的列表推导式(for表达式)在master_nodes参数内部做转换即可,不需要使用资源级别的count参数:
resource "some_resource" "this" { name = var.name master_nodes = [for ip in public_subnet_ip : { address = ip }] }
说明
- 该语法适用于Terraform 0.12及以上版本,会自动遍历
public_subnet_ip的所有元素,逐个转换为包含address字段的对象,最终生成符合list(map(string))类型要求的参数值,IP数量变化时会自动适配,无需手动修改下标。 - 之前使用
count生成多份资源的原因是count是作用于整个资源的迭代参数,会为每个索引生成独立的资源实例,你需要的是单个资源内部的属性值为列表,所以只需要在属性赋值层面做遍历转换即可。
内容的提问来源于stack exchange,提问作者huytn1219
相关产品推荐
相关产品推荐

