如何获得 vpc_id 以便我可以在 Terraform 中创建 VPC 子网?
How do I get vpc_id so I can create a VPC subnet in Terraform?
我正在一个全新的 Terraform 项目中创建一个带有单个 public 子网的 AWS VPC,该项目仅包含一个 main.tf
文件。在该文件中,我使用了两个资源块,aws_vpc
和 aws_subnet
。第二个资源必须使用 vpc_id
属性附加到第一个资源。此属性的值仅在应用时创建,因此不能硬编码。如何获取刚刚创建的资源的ID,以便在后续块中使用它?
resource "aws_vpc" "my_vpc" {
cidr_block = "102.0.0.0/16"
tags = {
Name = "My-VPC"
}
}
resource "aws_subnet" "my_subnet" {
vpc_id = # what goes here?
cidr_block = "102.0.0.0/24"
tags = {
Name = "My-Subnet"
}
}
The docs给vpc_id
举个例子data.aws_subnet.selected.vpc_id
。 this 的值似乎取决于另外两个块,variable
和 data
。我很难看到如何将它们连接到我的 VPC。我尝试直接从文档中复制它们。在 运行 terraform plan
我得到提示:
var.subnet_id
Enter a value:
这样不行;我想从我刚刚创建的 VPC 中提取值,而不是在命令提示符下输入它。在哪里指定数据源是我在上一个代码块中刚刚创建的资源?
我听说人们创建一个单独的文件来保存 Terraform 变量。那是我应该在这里做的吗?从一个资源中获取 ID 并在下一个资源中使用它似乎应该是非常基本的。是否有单线传递此信息?
I want to pull the value from the VPC I just created,
你不能这样做。您不能从数据源动态填充变量。但是您可以使用 local
代替:
locals {
subnet_id = data.aws_subnet.selected.id
}
并将其称为 local.subnet_id
。
您可以通过引用Terraform 的指针调用子网块中的VPC。此外,这样做会告诉 Terraform VPC 需要先创建然后销毁。
resource "aws_vpc" "my_vpc" {
cidr_block = "102.0.0.0/16"
tags = {
Name = "My-VPC"
}
}
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.my_vpc.id
cidr_block = "102.0.0.0/24"
tags = {
Name = "My-Subnet"
}
}
我正在一个全新的 Terraform 项目中创建一个带有单个 public 子网的 AWS VPC,该项目仅包含一个 main.tf
文件。在该文件中,我使用了两个资源块,aws_vpc
和 aws_subnet
。第二个资源必须使用 vpc_id
属性附加到第一个资源。此属性的值仅在应用时创建,因此不能硬编码。如何获取刚刚创建的资源的ID,以便在后续块中使用它?
resource "aws_vpc" "my_vpc" {
cidr_block = "102.0.0.0/16"
tags = {
Name = "My-VPC"
}
}
resource "aws_subnet" "my_subnet" {
vpc_id = # what goes here?
cidr_block = "102.0.0.0/24"
tags = {
Name = "My-Subnet"
}
}
The docs给vpc_id
举个例子data.aws_subnet.selected.vpc_id
。 this 的值似乎取决于另外两个块,variable
和 data
。我很难看到如何将它们连接到我的 VPC。我尝试直接从文档中复制它们。在 运行 terraform plan
我得到提示:
var.subnet_id
Enter a value:
这样不行;我想从我刚刚创建的 VPC 中提取值,而不是在命令提示符下输入它。在哪里指定数据源是我在上一个代码块中刚刚创建的资源?
我听说人们创建一个单独的文件来保存 Terraform 变量。那是我应该在这里做的吗?从一个资源中获取 ID 并在下一个资源中使用它似乎应该是非常基本的。是否有单线传递此信息?
I want to pull the value from the VPC I just created,
你不能这样做。您不能从数据源动态填充变量。但是您可以使用 local
代替:
locals {
subnet_id = data.aws_subnet.selected.id
}
并将其称为 local.subnet_id
。
您可以通过引用Terraform 的指针调用子网块中的VPC。此外,这样做会告诉 Terraform VPC 需要先创建然后销毁。
resource "aws_vpc" "my_vpc" {
cidr_block = "102.0.0.0/16"
tags = {
Name = "My-VPC"
}
}
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.my_vpc.id
cidr_block = "102.0.0.0/24"
tags = {
Name = "My-Subnet"
}
}