需要了解terraform资源结构

时间:2017-12-15 17:32:46

标签: terraform

我正在阅读terraform并找到以下代码:

resource "aws_vpc" "vpc_main" {
  cidr_block       = "10.0.0.0/16"

  tags {
    Name = "Main VPC"
  }
}

在这里,我无法理解资源定义中 vpc_main 代表什么。有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

它是资源的用户定义名称 - 如果没有这个名称,您将无法区分同一资源类型的多个实例。

有关详细信息,请参阅the docs

答案 1 :(得分:0)

其他编程语言中的变量类型和名称是一个很好的类比。例如,在Java中,您可以按如下方式声明变量:

String foo

变量的类型String,变量的名称foo。您必须指定一个名称,以便(a)将其与同类型的其他变量区分开来,(b)稍后再参考。

在Terraform中,它基本上是相同的想法:

resource "aws_instance" "foo" { ... }

此处,资源的类型aws_instance名称foo。您必须指定一个名称,以便(a)将其与相同类型的其他资源区分开来,并(b)稍后再参考。例如,要输出该实例的公共IP地址,您可以执行以下操作:

output "public_ip" {
  value = "${aws_instance.foo.public_ip}"
}