从第一地形获取输出并在第二地形中使用

时间:2018-11-20 05:09:48

标签: amazon-web-services terraform terraform-provider-aws

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

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

我还想确保在完成第一个Terraform之前不能初始化第二个Terraform。我该如何实现?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

为此要求,您可能希望使用 terraform模块,使用它们可以大量使用代码,并可以将安全组的ID提供给所需的任意terraform文件。每当您执行Terraform应用时,它都会检查资源依赖关系,并相应地执行。