Terraform 多个模块的公共变量
这是跨模块共享变量的正确方法还是我做得不对 在基本模块中,我添加了一个变量:Terraform 多个模块的公共变量,terraform,Terraform,这是跨模块共享变量的正确方法还是我做得不对 在基本模块中,我添加了一个变量: variable "aws_region" { description = "Region to use" default = "eu-west-1" } 然后我使用输出将其公开: output "AwsRegion" { value = var.aws_region } 然后在我想使用它的模块中,我导入基本模块并引
variable "aws_region" {
description = "Region to use"
default = "eu-west-1"
}
然后我使用输出将其公开:
output "AwsRegion" {
value = var.aws_region
}
然后在我想使用它的模块中,我导入基本模块并引用它:
module "base" {
source = "../base"
}
provider "aws" {
version = "~> 2.37"
region = module.base.AwsRegion
}
是否有一种方法可以定义变量并一次性将其导出为输出?Terraform是否有访问修饰符的概念?能够使用公共变量
或输出变量
…我不确定这是最好的方法,但我一直在main.tf文件中传递它们。通过这样做,我可以看到正在定义的新变量以及填充模块变量的值
module "linuxvm" {
source = "./linuxvm"
vmprefix = var.prefix
resourcegroup = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
vmos = var.os
password = var.vmpassword
subnetid = module.network.subnetid
}
对不起,我不明白。。。这与我已经在做的有什么区别?我看到的区别是我将变量传递到模块中,而不是利用模块范围中的现有变量。在模块中,我将变量引用为var.vmprefix
,而不是module.ModuleName.prefix
。IMO这使它明确了需要哪些变量,而不是必须浏览模块文件中的module.x.value来查看关系。如果你是这么做的,我道歉。我也有点困惑。恐怕我不太清楚你在问什么@马丁纳金斯-谢谢你的评论。。。对不起,我对terraform很陌生。我只想在模块间共享变量。。。