【问题标题】:Take Output From First Terraform and Use in Second Terraform从第一个 Terraform 获取输出并在第二个 Terraform 中使用
【发布时间】:2018-11-20 05:09:48
【问题描述】:
我需要两个不同的 Terraform 文件用于不同的目的。在第二个 Terraform 文件中,我必须从 First Terraform 文件的输出中获取输入。
在我的场景中,我的第一个 Terraform 创建了一个 AWS 安全组。现在我必须在我的 Second Terraform 文件中使用这个安全组的 ID。
我还想确保在 First Terraform 完成之前不能初始化 Second Terraform 创建。我怎样才能做到这一点?
【问题讨论】:
标签:
amazon-web-services
terraform
terraform-provider-aws
【解决方案1】:
创建多少 .tf 文件并不重要。 Terraform 首先加载所有 .tf 文件,然后尝试创建一个图表来创建资源。所以你可以这样做。
resource "aws_security_group" "default" {
name = "allow_all"
description = "Allow all inbound traffic"
.
.
}
现在您可以在另一个文件/其他模块中使用此安全组的 ID。例如。让我们用它来创建 ec2。喜欢。
resource "aws_instance" "web" {
ami = "${var.ami_id}"
instance_type = "t2.micro"
security_groups = ["${aws_security_group.default.id}"]
}
有关安全组参数的更多详细信息,您可以查看以下文档。
https://www.terraform.io/docs/providers/aws/r/security_group.html
【解决方案2】:
对于这个要求,您可能希望使用 terraform 模块,您可以使用这些模块重用代码,并且可以将安全组的 ID 提供给任意数量的 terraform 文件。每当您执行 terraform apply 时,它都会检查资源依赖关系并相应地执行。