Terraform 子模块中的参考资源

Terraform 子模块中的参考资源

我正在将旧的 aws 设置转换为 Terraform,并且具有以下内容:

ci
  - main.tf
ci/worker
    - main.tf

在 ci 中,我有一个 aws 安全组,我想在我的子模块中引用它。目前我有:

vpc_security_group_ids      = ["${aws_security_group.vpc-idhere.id}"]

哪些错误:

A managed resource "aws_security_group" "vpc-idhere" has not been declared in ci-workers.

安全组在 ci/main.tf 中定义

如何正确引用子模块中的资源?

答案1

跨模块边界调用时,您需要使用变量/输出来传递对资源的引用;模块无法窥视其他模块内部。

因此您的ci-workers模块需要声明一个输入变量,例如:

variable "vpc_security_group_ids" {
  description = "List of VPC security group IDs"
  type        = list
}

然后在模块内使用${var.vpc_security_group_ids}。然后,当您实例化此模块时,您可以传入父级的 ID:

module "ci-workers" {
  source                 = "..."
  vpc_security_group_ids = ["${aws_security_group.vpc-idhere.id}"]
}

查看模块文档了解更多信息。

相关内容