如何在Terraform中为属于另一列表的列表元素创建资源
Terraform 筛选列表交集并输出/创建资源
给定变量定义:
variable names { default = ["vk", "sb", "vc", "ss"] } variable subnames { default = ["vk", "sb"] }
要实现从names中筛选出同时属于subnames的元素,并输出结果或创建对应资源,可按以下方式编写代码:
1. 计算列表交集
使用Terraform内置的setintersection函数获取两个列表的交集,将结果存储为本地值:
locals { matched_names = setintersection(var.names, var.subnames) }
2. 输出符合条件的元素
通过输出块打印筛选后的结果:
output "matched_names" { value = local.matched_names }
执行terraform apply后,输出结果会显示:
matched_names = toset([ "sb", "vk", ])
3. 基于匹配元素创建资源
如果要为每个匹配的元素创建资源,以null_resource为例:
resource "null_resource" "example" { for_each = local.matched_names provisioner "local-exec" { command = "echo 正在为元素 ${each.key} 创建资源" } }
这段代码会为vk和sb分别创建一个null_resource实例,并在执行时打印对应提示。
内容的提问来源于stack exchange,提问作者Vinit Khandelwal
相关产品推荐
相关产品推荐

