在 terraform 中,如何获取数据资源的结果?
In terraform, how can I get the result of a data resource?
terraform v0.12.17。我读过 Data Source: aws_ebs_snapshot 但它没有告诉我如何使用结果。
假设我想从最新的 AWS 快照创建一个 AWS 卷。如何使用 data{} 资源获取最新的快照,然后使用它来创建卷?
provider "aws" {
region = "us-east-1"
}
data "aws_ebs_snapshot_ids" "jenkins_master" {
filter {
name = "tag:Name"
values = ["jenkins-master"]
}
}
resource "aws_ebs_volume" "jenkins_master_ebs" {
availability_zone = "us-east-1a"
size = ??? // taken from result of above data{}
snapshot_id = ??? // taken from result of above data{}
tags = {
Name = "jenkins-master-ebs"
}
}
根据 Terraform 文档,您将获得 ids
的列表,因此您可以使用如下内容:
resource "aws_ebs_volume" "jenkins_master_ebs" {
availability_zone = "us-east-1a"
size = 50 # Your custom size
snapshot_id = data.aws_ebs_snapshot_ids.jenkins_master.ids.0 # First element
tags = {
Name = "jenkins-master-ebs"
}
}
terraform v0.12.17。我读过 Data Source: aws_ebs_snapshot 但它没有告诉我如何使用结果。
假设我想从最新的 AWS 快照创建一个 AWS 卷。如何使用 data{} 资源获取最新的快照,然后使用它来创建卷?
provider "aws" {
region = "us-east-1"
}
data "aws_ebs_snapshot_ids" "jenkins_master" {
filter {
name = "tag:Name"
values = ["jenkins-master"]
}
}
resource "aws_ebs_volume" "jenkins_master_ebs" {
availability_zone = "us-east-1a"
size = ??? // taken from result of above data{}
snapshot_id = ??? // taken from result of above data{}
tags = {
Name = "jenkins-master-ebs"
}
}
根据 Terraform 文档,您将获得 ids
的列表,因此您可以使用如下内容:
resource "aws_ebs_volume" "jenkins_master_ebs" {
availability_zone = "us-east-1a"
size = 50 # Your custom size
snapshot_id = data.aws_ebs_snapshot_ids.jenkins_master.ids.0 # First element
tags = {
Name = "jenkins-master-ebs"
}
}