首页 > 解决方案 > Terraform - 循环数据源并创建地图,将此地图传递给模块

问题描述

我想用列表循环secrets数据源。grafana-secrets此输出应映射为env_secrets内部模块。现在模块将使用这个映射vars = {}(即使它是空的,它的通用模块)并将模板文件。

这是我的非工作用例,仅用于说明:

variable "grafana-secrets" {
  type = "list"

  default = ["GF_DATABASE_USER","GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET","GF_SESSION_PROVIDER_CONFIG"]
}

data "azurerm_key_vault_secret" "secrets" {
  count     = "${length(var.grafana-secrets)}"
  name      = "${element(var.grafana-secrets, count.index)}"
  vault_uri = "https://foobar.vault.azure.net/"
}

module "grafana" {
   source = "modules/deployment"

   env_secrets = {
     "${element(var.grafana-secrets, count.index)}" = data.azurerm_key_vault_secret.secret.*.value
   }
}

模块/部署:

data "template_file" "template" {
  template = ".secrets"

  vars = "${merge(
    env_secrets,
    map(
      "dummy", "dummy"
    )
  )}"
}

标签: terraformterraform-provider-azure

解决方案


推荐阅读