在Terraform中的另一个模块中使用一个模块局部变量



我正在尝试访问另一个新模块中的一个模块变量,以获取该模块中创建的AWS实例ID,并在模块云手表中使用它们,该模块云手表警报在那些实例ID中创建警报。结构类似于下面的

**Amodule #here this is used for creating kafka aws instances*
     main.tf
     kafkainstancevariables.tf

bmodule#here,这用于在那些kafka实例中创建警报

     main.tf
     cloudwatchalertsforkafkainstancesVariables.tf

外部模块terraform mainfile从所有模块都称为 main.tf 变量.tf ***

如何访问bmodule中Amodule中创建的变量?

谢谢!

您可以使用输出来完成此操作。在您的Kafka模块中,您可以定义一个看起来像这样的输出:

output "instance_ids" {
  value = ["${aws_instance.kafka.*.id}"]
}

在另一个Terraform文件中,假设您用以下内容实例化模块:

module "kafka" {
  source = "./modules/kafka"
}

您可以按以下方式访问该输出:

instances = ["${module.kafka.instance_ids}"]

如果您的模块彼此隔离(即,您的CloudWatch模块不实例化KAFKA模块),则可以将输出作为变量之间的输出传递:

之间
module "kafka" {
  source = "./modules/kafka"
}
module "cloudwatch" {
  source = "./modules/cloudwatch"
  instances = ["${module.kafka.instance_ids}"]
}

当然,您的" CloudWatch"模块必须声明instances变量。

请参阅https://www.terraform.io/docs/modules/usage.html#outputs,以获取有关使用模块中输出的更多信息。

相关内容

最新更新