【问题标题】:In terraform, how can I get the result of a data resource?在 terraform 中,如何获取数据资源的结果?
【发布时间】:2020-06-04 08:22:31
【问题描述】:

terraform v0.12.17。我已经阅读了Data Source: aws_ebs_snapshot,但它并没有告诉我如何使用结果。

假设我想从最新的 AWS 快照创建一个 AWS 卷。如何使用数据资源获取最新快照,然后使用它创建卷?

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 terraform-provider-aws


    【解决方案1】:

    根据 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"
      }
    }
    

    【讨论】:

    • 这是一个很好的答案,但请注意[0] 是访问第一个索引的更典型语法,如data.aws_ebs_snapshot_ids.jenkins_master.ids[0].0 表单是一种遗留语法,仅支持与旧版 Terraform 向后兼容。
    猜你喜欢
    • 2021-05-22
    • 2021-11-29
    • 2019-09-26
    • 1970-01-01
    • 2021-04-05
    • 2021-01-03
    • 1970-01-01
    • 2020-03-26
    • 2019-07-19
    相关资源
    最近更新 更多