TF:通过查找循环映射并相应地设置变量
TF: Loop through map with lookup and set variable accordingly
我有一个地图,其中一些环境 ID 作为键,然后关键字作为列表中的值。
variable "environments" {
type = map(list(string))
default = {
"env-one" = ["dev", "test", "stage", "staging"],
"env-two" = ["prod", "production", "live"]
}
}
我希望使用它来根据 var.context["stage"]
的值设置环境名称。
因此,如果 var.context["stage"]
等于 staging
,则 environment
的值将为 dev
我最初想使用 lookup()
,类似于;
environment = "${lookup(var.environments, var.context["stage"])}"
但是,我意识到这是错误的查找方式(查找值而不是键),而且它不能作为地图的一部分工作。所以大概我需要在每次迭代中查看地图和运行查找(尽管)向后(?)?
您可能希望将类型重组为 map(string)
。那么它的值将是:
{
"dev" = "env-one",
"test" = "env-one",
"stage" = "env-one",
"staging" = "env-one",
"prod" = "env-two",
"production" = "env-two",
"live" = "env-two"
}
您也可以将其修改为 map(object)
以包含更多信息。根据问题中描述的用法,local
实际上更有意义。如果您要将此数据放入名为 environments
的 locals
块中,则可以访问 key-value 对(根据问题),例如 local.environments[var.context["stage"]]
.
我有一个地图,其中一些环境 ID 作为键,然后关键字作为列表中的值。
variable "environments" {
type = map(list(string))
default = {
"env-one" = ["dev", "test", "stage", "staging"],
"env-two" = ["prod", "production", "live"]
}
}
我希望使用它来根据 var.context["stage"]
的值设置环境名称。
因此,如果 var.context["stage"]
等于 staging
,则 environment
的值将为 dev
我最初想使用 lookup()
,类似于;
environment = "${lookup(var.environments, var.context["stage"])}"
但是,我意识到这是错误的查找方式(查找值而不是键),而且它不能作为地图的一部分工作。所以大概我需要在每次迭代中查看地图和运行查找(尽管)向后(?)?
您可能希望将类型重组为 map(string)
。那么它的值将是:
{
"dev" = "env-one",
"test" = "env-one",
"stage" = "env-one",
"staging" = "env-one",
"prod" = "env-two",
"production" = "env-two",
"live" = "env-two"
}
您也可以将其修改为 map(object)
以包含更多信息。根据问题中描述的用法,local
实际上更有意义。如果您要将此数据放入名为 environments
的 locals
块中,则可以访问 key-value 对(根据问题),例如 local.environments[var.context["stage"]]
.