出于不同的目的,我需要两个不同的Terraform文件。在第二Terraform文件中,我必须从第一Terraform文件的输出中获取输入。
在我的方案中,我的第一个Terraform创建了一个AWS安全组。现在,我必须在第二个Terraform文件中使用此安全组的ID。
我还想确保在完成第一个Terraform之前不能初始化第二个Terraform。我该如何实现?
答案 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应用时,它都会检查资源依赖关系,并相应地执行。