首页 > 解决方案 > 多个模块的公共变量

问题描述

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

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

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......

标签: 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
}

推荐阅读