首先 - 抱歉 - 我对使用 terraform 非常陌生(3 小时后!)。
我希望尝试在另一个变量的声明中使用变量的值。
下面是我的代码 - 我做错了什么?
变量.tf:
variable "EnvironmentName" {
type = "string"
}
variable "tags" {
type = "map"
default = {
Environment = "${var.EnvironmentName}"
CostCentre = "C1234"
Project = "TerraformTest"
Department = "Systems"
}
}
Run Code Online (Sandbox Code Playgroud)
变量-dev.tfvars:
EnvShortName = "Dev"
EnvironmentName = "Development1"
#Location
Location = "westeurope"
Run Code Online (Sandbox Code Playgroud)
主要.tf:
resource “azurerm_resource_group” “TestAppRG” {
name = “EUW-RGs-${var.EnvShortName}”
location = “${var.Location}”
tags = “${var.tags}”
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误:variables.tf 第 18 行,在变量
“tags”中不允许使用变量:18:Environment = “${var.EnvironmentName}”
此处不能使用变量。
我知道错误消息是不言自明的,这可能是我的方法错误 - 但是如何在另一个变量映射的定义中使用变量?这甚至可能吗?
我将建立多个资源 - 因此希望将标签构建为地图并将其传递到每个资源中 - 但我还想将地图与其他 tfvars 文件一起回收,以便为不同的团队部署多个实例以进行处理。
pra*_*eep 28
Terraform 不支持变量内的变量。如果要基于两个或多个变量生成值,则可以尝试 Terraform locals ( https://www.terraform.io/docs/configuration/locals.html )。
当地人应该在这里帮助您实现目标。
就像是
locals {
tags = {
Environment = "${var.EnvironmentName}"
CostCentre = "C1234"
Project = "TerraformTest"
Department = "Systems"
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用 local.tags
resource “azurerm_resource_group” “TestAppRG” {
name = “EUW-RGs-${var.EnvShortName}”
location = “${var.Location}”
tags = “${local.tags}”
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
您需要使用当地人来进行您想要的转换
\n变量.tf:
\nvariable "EnvironmentName" {\n type = "string"\n}\nRun Code Online (Sandbox Code Playgroud)\n当地人.tf
\nlocals {\n tags = {\n Environment = var.EnvironmentName\n CostCentre = "C1234"\n Project = "TerraformTest"\n Department = "Systems"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n变量-dev.tfvars:
\nEnvShortName = "Dev"\nEnvironmentName = "Development1"\n#Location\nLocation = "westeurope"\nRun Code Online (Sandbox Code Playgroud)\n主要.tf:
\nresource \xe2\x80\x9cazurerm_resource_group\xe2\x80\x9d \xe2\x80\x9cTestAppRG\xe2\x80\x9d {\n name = \xe2\x80\x9cEUW-RGs-${var.EnvShortName}\xe2\x80\x9d\n location = var.Location\n tags = local.tags\n}\nRun Code Online (Sandbox Code Playgroud)\n您可以执行诸如 `tags = merge(local.tags,{"key"="value"}) 之类的操作来扩展标签。
\n| 归档时间: |
|
| 查看次数: |
13048 次 |
| 最近记录: |