我的问题前的初步信息......
文件结构:
-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}"]
}
MODULE1 INFO: 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}"]
}
MODULE2 INFO: 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都没有从Module1识别到Module2。
在aws_elasticache_subnet_group.subnet_group.subnet_ids
中为多个子网放入正确值的语法是什么?
我似乎无法根据Terraform的版本找到一个直接的答案或格式更改。如果重要的话我就是第11版。
答案 0 :(得分:0)
我想!应该是这样的,
${module.module2.private_subnets}
答案 1 :(得分:0)
想出来......在“输入变量配置”中的Terraform文档中有点模糊。页面https://www.terraform.io/docs/configuration/variables.html
使用上面的示例代码,我将main.tf文件中的 subnet_ids = [" $ {module.vpc_id.private_subnets}"] 行更改为: 的 [" $ {var.private_subnets}"] 强> 我之前尝试过这个但是缺少封闭的[] 对于未来的读者来说,我认为...... 所以main.tf从[" $ {var.private_subnets}"]中提取子网列表,这些子网指向vars.tf文件并查看:
variable "private_subnets" {
type = "list"
}
这个值是从thing.tf文件中收集的,该文件根据输入的内容声明了private_subnets的值,在我的例子中是Module1的输出。
output "private_subnets" {
description = "List of IDs of private subnets"
value = ["${module.vpc_utility.private_subnets}"]
}
希望这会在以后帮助某人,因为从我们能够找到的任何文档中可以清楚地看到这一点,直到今天。
如果有人看到这个并且发现我的想法是错误的那么请纠正我。