我正在使用下面的代码将变量传递给多个模块。我的问题是,还有更好的方法吗?也许是一个仅包含我要传递给每个模块的变量的文件,或者是一个可以在运行时注入的文件。下面的代码可以从Azure DevOps管道正常运行,只是试图看看是否有一种更简单的方法来使用更少的代码行即可。
谢谢
================================================ =======
module network {
source = "./Network"
prdrgname = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.name
prdlocation = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.location
drrgname = azurerm_resource_group.MYRG-AZ-WUS-BC-01.name
drlocation = azurerm_resource_group.MYRG-AZ-WUS-BC-01.location
}
module compute {
source = "./Compute"
prdrgname = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.name
prdlocation = azurerm_resource_group.MYRG-AZ-EUS-MAIN-01.location
drrgname = azurerm_resource_group.MYRG-AZ-WUS-BC-01.name
drlocation = azurerm_resource_group.MYRG-AZ-WUS-BC-01.location
}
================================================ ============
答案 0 :(得分:0)
我不知道azurerm_resource_group来自何处,如果您可以输入具有娱乐性的代码。但是,最佳实践之一是使用.tfvars文件
您将需要一个这样的变量文件
variable "name"{}
variable "location"{}
variable "name2"{}
variable "location2"{}
和stage.tfvars或其他名称
name="value"
location="value"
name2="value"
location2="value"
您的main.tf将如下所示
module network {
source = "./Network"
prdrgname = var.name
prdlocation = var.location
drrgname = var.name2
drlocation = var.location2
}
module compute {
source = "./Compute"
prdrgname = var.name
prdlocation = var.location
drrgname = var.name2
drlocation = var.location2
}
最后运行您的项目
terraform plan --var-file=stage.tfvars