vpc设置中的Terraform插值错误

时间:2018-10-29 03:01:26

标签: terraform

我正在尝试在插值中进行插值。我的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?

谢谢

1 个答案:

答案 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

问题- https://github.com/hashicorp/terraform/issues/1114