【问题标题】:Terraform: How to read the volume ID of one instance?Terraform:如何读取一个实例的卷 ID?
【发布时间】:2017-08-07 13:33:04
【问题描述】:

我使用默认的 CentOS 7 AMI 创建实例。此 AMI 自动创建一个卷并附加到实例。是否可以使用 terraform 读取该卷 ID?我使用下面的代码创建实例:

resource "aws_instance" "DCOS-master3" {
    ami = "${var.aws_centos_ami}"
    availability_zone = "eu-west-1b"
    instance_type = "t2.medium"
    key_name = "${var.aws_key_name}"
    security_groups = ["${aws_security_group.bastion.id}"]
    associate_public_ip_address = true
    private_ip = "10.0.0.13"
    source_dest_check = false
    subnet_id = "${aws_subnet.eu-west-1b-public.id}"

    tags {
            Name = "master3"
        }
}

【问题讨论】:

    标签: amazon-web-services amazon-ec2 terraform


    【解决方案1】:

    您将无法从 aws_instance 提取 EBS 详细信息,因为它是 AWS 端为资源提供 EBS 卷。

    但是您可以使用一些过滤器定义 EBS data source

    data "aws_ebs_volume" "ebs_volume" {
      most_recent = true
    
      filter {
        name   = "attachment.instance-id"
        values = ["${aws_instance.DCOS-master3.id}"]
      }
    }
    
    output "ebs_volume_id" {
      value = "${data.aws_ebs_volume.ebs_volume.id}"
    }
    

    您可以在此处参考 EBS 过滤器: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-volumes.html

    【讨论】:

      【解决方案2】:
      output "volume-id-C" {
        description = "root volume-id"
        #get the root volume id form the instance
           value       =  element(tolist(data.aws_instance.DCOS-master3.root_block_device.*.volume_id),0)
      }
      
      output "volume-id-D" {
         description = "ebs-volume-id"
          #get the 1st esb volume id form the instance
              value       =  element(tolist(data.aws_instance.DCOS-master3.ebs_block_device.*.volume_id),0)
      }
      

      【讨论】:

        【解决方案3】:

        您可以:aws_instance.DCOS-master3.root_block_device.0.volume_id

        Terraform docs中所述:

        对于任何root_block_deviceebs_block_device,导出volume_id。例如aws_instance.web.root_block_device.0.volume_id

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-13
          • 2018-11-06
          • 2018-08-29
          • 2014-11-19
          • 1970-01-01
          • 2015-04-13
          • 1970-01-01
          相关资源
          最近更新 更多