0

私の TF スクリプトは、k8s リソースを作成し、に基づいて kubeconfig ファイルを生成していますtemplate_file
次に、別のモジュールに渡したい (GitLab プロバイダーを使用する - GitLab 変数として保存する)。

これまでは kubconfig を 1 つだけ作成していましたが、アプローチは非常に簡単でした。

data "template_file" "kubeconfig_template" {
  template = "${file("${path.module}/templates/kubeconfig.tpl")}"
  vars     = {...}
}

output "kubeconfig" {
  value = data.template_file.kubeconfig_template.rendered
}

次に、GitLab モジュールに次のように渡します。

module "gitlab" {
  source = "./gitlab"
  kubeconfig = module.kubernetes.kubeconfig
}

そして次のように使用します:

resource "gitlab_group_variable" "kubeconfig_var" {
  value     = base64encode(var.kubeconfig)
  ...
}

しかし、複数のファイルで同じことを達成するにはどうすればよいでしょうか?

データでも機能することcountがわかったので、次のように定義できます。

data "template_file" "kubeconfig_templates" {
  count    = length(var.namespaces)
  template = "${file("${path.module}/templates/kubeconfig.tpl")}"
  vars     = {...}
}

しかし、その後outputはサポートcountされず、強制ループを使用した私の「派手な」回避策は機能していないようです:

output "kubeconfigs" {
  value = [
     for namespace in var.namespaces :
     data.template_file.kubeconfig_templates[index(var.namespaces, namespace)].rendered
  ]
}

そのようなトピックにアプローチする方法を知っていますか?

4

1 に答える 1