【问题标题】: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 时,它都会检查资源依赖关系并相应地执行。

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2020-04-12
      • 1970-01-01
      • 2016-03-21
      • 2018-11-12
      • 1970-01-01
      • 2021-12-04
      • 2021-07-13
      • 1970-01-01
      相关资源
      最近更新 更多