有关如何使用具有可更改的复杂 YAML 文件的模板的指南

guidance on how to use a template with complex YAML files that can change

我有一个 Terraform 配置,它基本上包装了 Kubespray,基本上是一组 Ansible 剧本。许多 Kubernetes 集群配置都存储在 YAML 文件中。在某些方面,在配置器中嵌入对诸如 Perl 之类的东西的调用将是将变量替换到这些文件中的最简单方法。这留下了诸如 Terraform 模板函数之类的东西,我已经完成了诸如获取 YAML 文件之类的事情,例如 k8s-cluster.yml 并将其转换为模板文件,问题是如果 YAML 文件在Kubespray 的上游 GitHub 回购我必须重新创建模板文件,这不是一个很好的做事方式。假设其他人一定遇到过这个问题,那么处理可以这种方式更改的 YAML 配置的最优雅方式是什么?

迄今为止我想出的最好的解决方案是这个,用变量替换硬编码是可取的,但它有效:

data "http" "k8s_cluster_yml" {
  url = "https://raw.githubusercontent.com/kubernetes-sigs/kubespray/master/inventory/sample/group_vars/k8s_cluster/k8s-cluster.yml"
}

resource "local_file" "k8s_cluster_yml" {
  content  = replace(data.http.k8s_cluster_yml.body, "/kube_version: v[0-9].[0-9][0-9].[0-9]/", "kube_version: v1.22.5")
  filename = "./k8s-cluster.yaml"
}