Terraform 变量中的地形变量
首先-道歉-我对使用terraform非常陌生(3小时了!) 我希望尝试在另一个变量的声明中使用一个变量的值 下面是我的代码-我做错了什么 变量。tf:Terraform 变量中的地形变量,terraform,Terraform,首先-道歉-我对使用terraform非常陌生(3小时了!) 我希望尝试在另一个变量的声明中使用一个变量的值 下面是我的代码-我做错了什么 变量。tf: variable "EnvironmentName" { type = "string" } variable "tags" { type = "map" default = { Environment = "${var.EnvironmentName}" CostCentre = "C1
variable "EnvironmentName" {
type = "string"
}
variable "tags" {
type = "map"
default = {
Environment = "${var.EnvironmentName}"
CostCentre = "C1234"
Project = "TerraformTest"
Department = "Systems"
}
}
EnvShortName = "Dev"
EnvironmentName = "Development1"
#Location
Location = "westeurope"
resource “azurerm_resource_group” “TestAppRG” {
name = “EUW-RGs-${var.EnvShortName}”
location = “${var.Location}”
tags = “${var.tags}”
}
Variables-dev.tfvars:
variable "EnvironmentName" {
type = "string"
}
variable "tags" {
type = "map"
default = {
Environment = "${var.EnvironmentName}"
CostCentre = "C1234"
Project = "TerraformTest"
Department = "Systems"
}
}
EnvShortName = "Dev"
EnvironmentName = "Development1"
#Location
Location = "westeurope"
resource “azurerm_resource_group” “TestAppRG” {
name = “EUW-RGs-${var.EnvShortName}”
location = “${var.Location}”
tags = “${var.tags}”
}
main.tf:
variable "EnvironmentName" {
type = "string"
}
variable "tags" {
type = "map"
default = {
Environment = "${var.EnvironmentName}"
CostCentre = "C1234"
Project = "TerraformTest"
Department = "Systems"
}
}
EnvShortName = "Dev"
EnvironmentName = "Development1"
#Location
Location = "westeurope"
resource “azurerm_resource_group” “TestAppRG” {
name = “EUW-RGs-${var.EnvShortName}”
location = “${var.Location}”
tags = “${var.tags}”
}
我得到以下错误:
错误:变量中的Variables.tf第18行不允许使用变量“标记”:18:Environment=“${var.EnvironmentName}”
这里不能使用变量 我知道错误信息是不言自明的,可能是我的方法错了——但是我如何在另一个变量映射的定义中使用一个变量呢?这可能吗
我将支持多个资源—因此希望将标记构建为一个映射并传递到每个资源—但我还希望将映射与其他tfvars文件一起循环使用,以部署多个实例供不同团队使用。Terraform不支持变量内的变量。 如果您想基于两个或多个变量生成一个值,那么可以尝试Terraform locals() 当地人应该帮助你们实现这个目标 差不多
locals {
tags = {
Environment = "${var.EnvironmentName}"
CostCentre = "C1234"
Project = "TerraformTest"
Department = "Systems"
}
}
然后您可以使用aslocal.tags
resource “azurerm_resource_group” “TestAppRG” {
name = “EUW-RGs-${var.EnvShortName}”
location = “${var.Location}”
tags = “${local.tags}”
}
希望这有帮助但是我们需要在每个模块中定义它,如果我必须为整个平台实现,并且我有不同的资源模块,我应该在每个模块main.tf文件中创建它吗?