多个模块的公共变量

时间:2020-06-23 14:22:07

标签: terraform

这是在模块之间共享变量的正确方法还是我做错了?

在基本模块中,我添加了一个变量:

variable "aws_region" {
  description = "Region to use"
  default     = "eu-west-1"
}

然后我使用output公开它:

output "AwsRegion" {
  value = var.aws_region
}

然后在要使用的模块中,导入基本模块并引用它:

module "base" {
  source = "../base"
}

provider "aws" {
  version = "~> 2.37"
  region  = module.base.AwsRegion
}

是否有一种定义变量并将其导出为输出的方法? Terraform是否具有访问修饰符的概念?能做public variableoutput variable ...

1 个答案:

答案 0 :(得分:1)

我不认为这是最好的方法,但是我一直将它们传递到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
}