从第一个 Terraform 获取输出并在第二个 Terraform 中使用

Take Output From First Terraform and Use in Second Terraform

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

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

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

创建多少 .tf 文件并不重要。 Terraform 首先加载所有 .tf 文件,然后尝试创建一个图形来创建资源。所以你可以这样做。

resource "aws_security_group" "default" {
    name        = "allow_all"
    description = "Allow all inbound traffic"
    .
    .
}

现在您可以在另一个 file/other 模块中使用此安全组的 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

对于此要求,您可能希望使用 terraform 模块,通过它您可以享受代码重用的乐趣,并且可以将安全组的 ID 提供给尽可能多的 terraform随心所欲的文件。每当您执行 terraform apply 时,它都会检查资源依赖性并相应地执行。