Terraform ebs音量

use*_*691 4 terraform

我是terraform的新手,创建了3个ec2实例,并创建了6个ebs卷.我们如何将3个ebs卷附加到三个实例中的每一个?

#Create 6 EBS volumes and attach 2 per instance.
resource "aws_ebs_volume" "vertica_ebs" {
        count                           = "6"
        availability_zone               = "${var.availability_zone}"
        size                            = "500"
        type                            = "st1"

       }
    }

#Attach ebs volume
resource "aws_volume_attachment" "ebs_att" {
     count = "6"
volume {
     device_name = "/dev/sdf"
     volume_id = "[${element(aws_ebs_volume.vertica_ebs.*.id, count.index)}]"
}
volume{
     device_name = "/dev/sdg"
     volume_id = "[${element(aws_ebs_volume.vertica_ebs.*.id, count.index)}]"
}
     instance_id = "[${element(aws_instance.vertica1.*.id,count.index)}]"
}
Run Code Online (Sandbox Code Playgroud)

错误:

  • aws_volume_attachment.ebs_att#2:"device_name":未设置必填字段
  • aws_volume_attachment.ebs_att#2:"volume_id":未设置必填字段
  • aws_volume_attachment.ebs_att#2 ::无效或未知密钥:卷
  • aws_volume_attachment.ebs_att#4:"device_name":未设置必填字段
  • aws_volume_attachment.ebs_att#4:"volume_id":未设置必填字段
  • aws_volume_attachment.ebs_att#4 ::无效或未知密钥:卷
  • aws_volume_attachment.ebs_att#3:"device_name":未设置必填字段
  • aws_volume_attachment.ebs_att#3:"volume_id":未设置必填字段
  • aws_volume_attachment.ebs_att#3 ::无效或未知密钥:卷
  • aws_volume_attachment.ebs_att#0:"volume_id":未设置必填字段
  • aws_volume_attachment.ebs_att#0:"device_name":未设置必填字段
  • aws_volume_attachment.ebs_att#0 ::无效或未知密钥:卷
  • aws_volume_attachment.ebs_att#1:"device_name":未设置必填字段
  • aws_volume_attachment.ebs_att#1:"volume_id":未设置必填字段
  • aws_volume_attachment.ebs_att#1 ::无效或未知密钥:卷
  • aws_volume_attachment.ebs_att#5:"volume_id":未设置必填字段
  • aws_volume_attachment.ebs_att#5:"device_name":未设置必填字段
  • aws_volume_attachment.ebs_att#5 ::无效或未知密钥:卷

Mr.*_*ris 6

注意:此方法将销毁并重新创建服务器.如果您不能接受,请使用'aws volume attachment'方法.

解决此问题的一种方法,以及如何解决它,是将ebs卷直接附加到实例资源.

您可以通过向每个服务器配置添加"ebs_block_device"元素然后运行来完成此操作terraform apply.例如,您希望添加2个ebs块设备的每个服务器资源看起来像:

resource "aws_instance""example_instance"{
#INSTANCE CONFIGURATION VALUES  
    ebs_block_device{
      device_name = "/dev/sdf"
      volume_size = 500
      volume_type = "st1"
    }
    ebs_block_device{
      device_name = "/dev/sdg"
      volume_size = 500
      volume_type = "st1"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后运行terraform plan,看到块设备将被添加到服务器和服务器.使用此方法,服务器将被破坏和重新启动.如果这是可接受的,请运行terraform apply以使用其他卷重建服务器.

查看ebs_block_device和aws_instance周围的文档.