You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Terraform的domain_lst变量中提取去重后的DNS值列表?

在Terraform中提取去重后的DNS值列表

你可以通过Terraform内置函数的组合来实现需求,核心用到values、map和distinct三个函数,具体实现如下:

代码示例

# 原变量定义
variable "domain_lst" {
  type = map(object({
    dns = string
  }))
  default = {
    env1 = { dns = "application1.domain.com" }
    env2 = { dns = "application2.domain.com" }
    env3 = { dns = "application1.domain.com" }
  }
}

# 定义局部值处理去重逻辑
locals {
  unique_domains = distinct(map(var.domain_lst, _, __.dns))
}

# 输出去重后的结果
output "unique_dns_list" {
  value = local.unique_domains
}

逻辑拆解

  1. values(var.domain_lst):将原map类型变量转换为包含所有子对象的列表,得到:
    [{dns = "application1.domain.com"}, {dns = "application2.domain.com"}, {dns = "application1.domain.com"}]
    
  2. map(..., _, __.dns):遍历上述列表,从每个子对象中提取dns字段的值,得到带重复项的域名列表:
    ["application1.domain.com", "application2.domain.com", "application1.domain.com"]
    
  3. distinct():对提取后的列表进行去重,最终得到唯一域名列表。

注意:该方案要求Terraform版本在0.12及以上,这些函数从该版本开始支持。

内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:45:38