首页 > 解决方案 > 从第一个 Terraform 获取输出并在第二个 Terraform 中使用

问题描述

我需要两个不同的 Terraform 文件用于不同的目的。在第二个 Terraform 文件中,我必须从 First Terraform 文件的输出中获取输入。

在我的场景中,我的第一个 Terraform 创建了一个 AWS 安全组。现在我必须在我的 Second Terraform 文件中使用这个安全组的 ID。

我还想确保在 First Terraform 完成之前不能初始化 Second Terraform 创建。我怎样才能做到这一点?

标签: amazon-web-servicesterraformterraform-provider-aws

解决方案


创建多少 .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


推荐阅读