我正在尝试在插值中进行插值。我的vars.tf文件中包含以下内容。
variable "appname" {
default = "application2"
}
在我的VPC中,我试图通过其名称来引用我的vpc
resource "aws_vpc" "${var.appname}" {
cidr_block = "10.0.0.0/16"
}
到目前为止效果很好。因此,我很难使用子网命名。如何给子网命名?
resource "aws_subnet" "${var.appname-subnet}" {
vpc_id = "${aws_vpc.${aws_vpc.var.appname}.id}"
cidr_block = "10.0.1.0/24"
}
这行对我来说是个问题。在这种情况下,如何指代VPC?
谢谢
答案 0 :(得分:0)
我不认为terraform允许在资源名称中进行插值。
您可以给它起任何名字并参考它。
resource "aws_vpc" "yourvpc" {
cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "yoursubnet" {
vpc_id = "${aws_vpc.yourvpc.id}"
cidr_block = "10.0.1.0/24"
}
我知道这很明显,但是我怀疑我们是否可以在资源命名中使用插值。您可以删除/注释子网资源,然后仅通过带插值的VPC尝试一下,看看它是否有效。
如果要隔离不同环境的资源,可以使用terraform工作区。它为每个环境创建一个不同的状态文件。
参考-https://www.terraform.io/docs/state/workspaces.html