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

Terraform嵌套数据筛选含terraform主题仓库失败,循环集合为空求助

解决Terraform中筛选含特定主题仓库的问题

你尝试基于嵌套的仓库数据构建可遍历集合,目标是给所有带有terraform主题的仓库上传tflint配置文件,但目前local.terraform_repos返回空映射,无法正确筛选目标仓库。

现有配置

repos.tfvars

repositories = {
  workflows = {
    description                     = "Reusable workflow repository"
    topics                          = ["github-actions", "reusable-workflows"]
  },
  aws-network-speciality = {
    description          = "AWS Network Speciality study repository"
    topics               = ["amazon-web-services", "aws", "terraform", "iac"]
  }
}

main.tf

locals {
  terraform_repos  = { for each, repo in var.repositories : each => repo if contains(["terraform"], repo)}

resource "github_repository_file" "tflint" {
  for_each       = local.terraform_repos
  repository     = each.key
  file           = ".tflint"
  content        = file("${path.module}/github_repository_files/.tflint")
  commit_message = "chore(managed-by-terraform): tflint configuration file"
}

问题原因与修正

你当前的contains函数调用逻辑错误:contains(["terraform"], repo)是在检查完整的仓库对象是否等于字符串"terraform",而非检查仓库的topics数组中是否包含该字符串。

修正local.terraform_repos的筛选逻辑,改为深入查询仓库的topics字段:

locals {
  terraform_repos = {
    for repo_name, repo_details in var.repositories :
    repo_name => repo_details
    if contains(repo_details.topics, "terraform")
  }
}
  • 遍历var.repositories时,repo_details代表每个仓库的详情对象,包含description和topics字段
  • contains(repo_details.topics, "terraform")会判断该仓库的主题数组中是否包含terraform关键词
  • 筛选后的local.terraform_repos仅保留符合条件的仓库,后续github_repository_file资源就能正确遍历这些仓库并上传tflint文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:07