【问题标题】:How do you pass outputs in a list from one module to vars in another module in Terraform?如何将列表中的输出从一个模块传递到 Terraform 中另一个模块的变量?
【发布时间】:2018-04-13 01:24:00
【问题描述】:

我的问题之前的初步信息......

文件结构:

-thing.tf
--module1
---outputs.tf
--module2
---vars.tf
---main.tf

thing.tf

module "module2" {
  source = "./module2"
  vpc_id = "${module.vpc_utility.vpc_id}"
  private_subnets = ["${module.vpc_utility.private_subnets}"]

}

模块 1 信息: VPC_UTILITY 预先创建成功,输出如下:

output "vpc_id" {
  description = "The ID of the VPC"
  value       = "${module.vpc_utility.vpc_id}"
}
output "private_subnets" {
  description = "List of IDs of private subnets"
  value       = ["${module.vpc_utility.private_subnets}"]
}

模块 2 信息: vars.tf

variable "vpc_id" {
  type = "string"
}
variable "private_subnets" {
  type = "list"
}

main.tf

resource "aws_elasticache_subnet_group" "subnet_group" {
  name       = "subnet_group"
  **subnet_ids = ["${module.vpc_id.private_subnets}"]**
}

错误:

-unknown module referenced: vpc_id
-reference to undefined module "vpc_id"

模块中的 vpc_id 或子网都无法从模块 1 识别到模块 2。 在 aws_elasticache_subnet_group.subnet_group.subnet_ids 中为多个子网输入正确值的语法是什么? 我似乎无法找到一个直接的答案或基于 Terraform 版本的格式更改。如果这很重要,我在版本 11。

【问题讨论】:

    标签: amazon-web-services module terraform


    【解决方案1】:

    我想!应该是这样的,

    ${module.module2.private_subnets}
    

    【讨论】:

    • 我试过了,但它出错了:引用未定义的模块“module2”
    【解决方案2】:

    想通了...它在“输入变量配置”页面的 Terraform 文档中有点模糊,https://www.terraform.io/docs/configuration/variables.html

    使用上面的示例代码,我将 main.tf 文件中的 subnet_ids = ["${module.vpc_id.private_subnets}"] 行更改为: ["${var.private_subnets}"] 我以前试过这个,但缺少封闭的 [] 对于未来的读者,这是我的想法...... 所以 main.tf 从指向 vars.tf 文件的 ["${var.private_subnets}"] 中提取子网列表并查看:

    variable "private_subnets" {
      type = "list"
    }
    

    该值是从 thing.tf 文件中收集的,该文件根据其输入(在我的例子中是 Module1 的输出)声明 private_subnets 的值。

    output "private_subnets" {
      description = "List of IDs of private subnets"
      value       = ["${module.vpc_utility.private_subnets}"]
    }
    

    希望这对以后的人有所帮助,因为到目前为止我能找到的任何文档都不清楚这一点。

    另外,如果有人看到这个并且认为我的想法是错误的,那么请纠正我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多