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

Terraform代码问题:仅填充YAML文件名而非内容至Git仓库

问题解决:Terraform将YAML文件内容写入Git仓库文件

你的代码问题出在fileset返回的是文件名集合而非文件内容,导致each.value传递的是文件名,而非YAML文件的实际内容。以下是修正方案:

修正后的代码

locals.tf

locals {
  # 获取当前模块下所有YAML文件名
  yaml_file_names = fileset(path.module, "*.yaml")
  # 构建文件名到文件内容的映射
  yaml_file_contents = {
    for file_name in local.yaml_file_names : file_name => file("${path.module}/${file_name}")
  }
}

main.tf

resource "git_repository_file" "myresource" {
  # 遍历文件名-内容映射,每个文件对应一个资源实例
  for_each = local.yaml_file_contents
  project  = var.project-name
  # 拼接Git仓库中的目标路径,确保每个文件有独立路径(避免覆盖)
  filepath = "${var.filepath}/${each.key}"
  # 使用映射中的文件内容作为资源的content值
  content  = each.value
}

关键说明

  1. file()函数:Terraform的file()函数会读取指定路径下的文件内容,这里通过${path.module}/${file_name}拼接完整的文件路径,读取每个YAML文件的内容。
  2. 映射型for_each:使用键值对映射遍历,既保留文件名用于生成Git仓库中的文件路径,又能直接获取对应文件内容。
  3. 文件路径唯一性:filepath拼接了基础路径和原文件名,确保每个YAML文件在Git仓库中对应独立的文件,不会出现覆盖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:41:07