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很陌生。我只想在模块间共享变量。。。