Terraform - vytvořit a přenést soubory mezi moduly ve smyčce

0

Otázka

Moje TF skripty se vytváří k8s zdrojů a generování kubeconfig souborů na základě template_file.
Které jsem pak chcete předat do další modul (který používá GitLab poskytovatele - uložit jako GitLab proměnných).

Až do teď jsem vytvářel pouze jeden kubconfig a přístup byl velmi jednoduchý:

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

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

a pak kolem GitLab modul s:

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

a použití jako:

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

Ale jak toho dosáhnout stejné pro více než jeden soubor?

Vidím, že count pracuje také na data, tak mohu definovat:

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

ale pak output nepodporuje counta moje "fantazie" řešení s nuceným smyčky, nezdá se, že pracovat:

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

Máte nějaký nápad, jak přistupovat k takové téma?

1

Nejlepší odpověď

0

Díky @patric vstup z komentáře, já jsem přešel na "template_file" na "local_file" a tím vyřešit můj problém.

Nový formulář:

resource "local_file" "kubeconfigs" {
  count    = length(var.namespaces)
  filename = "${var.namespaces[count.index].name}_kubeconfig"

  content = templatefile("${path.module}/templates/kubeconfig.tpl", {
    ...
  })
}

output "generated_kubeconfigs" {
  value = local_file.kubeconfigs
}

kolem GitLab modulu:

module "gitlab" {
  source = "./gitlab"
  kubeconfigs = concat(module.kubernetes_dev.generated_kubeconfigs,
                       module.kubernetes_stg.generated_kubeconfigs)
}

a použití jako:

resource "gitlab_group_variable" "group_variables_kubeconfigs" {
  count = length(var.kubeconfigs)
  value = base64encode(var.kubeconfigs[count.index].content)
  ...
}
2021-11-24 22:39:45

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................