Terraform ebs 卷
Terraform ebs volume
我是 terraform 的新手,创建了 3 个 ec2 实例,并且创建了 6 个 ebs 卷。我们如何将 2 个 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)}]"
}
错误:
- 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: : 无效或未知密钥:volume
- aws_volume_attachment.ebs_att #3:"device_name":未设置必填字段
- aws_volume_attachment.ebs_att #3:"volume_id":未设置必填字段
- aws_volume_attachment.ebs_att #3: : 无效或未知密钥:volume
- 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: : 无效或未知密钥:volume
- aws_volume_attachment.ebs_att#5:"volume_id":未设置必填字段
- aws_volume_attachment.ebs_att #5:"device_name":未设置必填字段
- aws_volume_attachment.ebs_att #5: : 无效或未知密钥:volume
注意:此方法将销毁并重新创建服务器。如果您无法接受,请使用 'aws volume attachment' method。
解决这个问题的一种方法,以及我将如何解决它,是将 ebs 卷直接附加到实例资源。
您可以通过向每个服务器配置添加一个 'ebs_block_device' 元素,然后 运行ning 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"
}
}
然后运行terraform plan
,看到块设备会添加到服务器和服务器中。使用此方法,服务器将被销毁并重新创建。如果可以接受,运行 terraform apply
使用额外的卷重建服务器。
Check out the documentation around ebs_block_device and aws_instance here.
我会做一些这样的格式:
resource "aws_instance" "example" {
ami = "${lookup(var.AMIS, var.AWS_REGION)}"
instance_type = "t2.micro"
}
resource "aws_ebs_volume" "ebs-volume-1" {
availability_zone = "eu-west-1a"
size = 500
type = "st1"
tags {
Name = "more volume"
}
}
resource "aws_ebs_volume" "ebs-volume-2" {
availability_zone = "eu-west-1a"
size = 500
type = "st1"
tags {
Name = "more volume"
}
}
resource "aws_volume_attachment" "ebs-volume-1-attachment" {
device_name = "/dev/sdf"
volume_id = "${aws_ebs_volume.ebs-volume-1.id}"
instance_id = "${aws_instance.example.id}"
}
resource "aws_volume_attachment" "ebs-volume-2-attachment" {
device_name = "/dev/sdg"
volume_id = "${aws_ebs_volume.ebs-volume-2.id}"
instance_id = "${aws_instance.example.id}"
}
希望对你有所帮助
我是 terraform 的新手,创建了 3 个 ec2 实例,并且创建了 6 个 ebs 卷。我们如何将 2 个 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)}]"
}
错误:
- 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: : 无效或未知密钥:volume
- aws_volume_attachment.ebs_att #3:"device_name":未设置必填字段
- aws_volume_attachment.ebs_att #3:"volume_id":未设置必填字段
- aws_volume_attachment.ebs_att #3: : 无效或未知密钥:volume
- 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: : 无效或未知密钥:volume
- aws_volume_attachment.ebs_att#5:"volume_id":未设置必填字段
- aws_volume_attachment.ebs_att #5:"device_name":未设置必填字段
- aws_volume_attachment.ebs_att #5: : 无效或未知密钥:volume
注意:此方法将销毁并重新创建服务器。如果您无法接受,请使用 'aws volume attachment' method。
解决这个问题的一种方法,以及我将如何解决它,是将 ebs 卷直接附加到实例资源。
您可以通过向每个服务器配置添加一个 'ebs_block_device' 元素,然后 运行ning 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"
}
}
然后运行terraform plan
,看到块设备会添加到服务器和服务器中。使用此方法,服务器将被销毁并重新创建。如果可以接受,运行 terraform apply
使用额外的卷重建服务器。
Check out the documentation around ebs_block_device and aws_instance here.
我会做一些这样的格式:
resource "aws_instance" "example" {
ami = "${lookup(var.AMIS, var.AWS_REGION)}"
instance_type = "t2.micro"
}
resource "aws_ebs_volume" "ebs-volume-1" {
availability_zone = "eu-west-1a"
size = 500
type = "st1"
tags {
Name = "more volume"
}
}
resource "aws_ebs_volume" "ebs-volume-2" {
availability_zone = "eu-west-1a"
size = 500
type = "st1"
tags {
Name = "more volume"
}
}
resource "aws_volume_attachment" "ebs-volume-1-attachment" {
device_name = "/dev/sdf"
volume_id = "${aws_ebs_volume.ebs-volume-1.id}"
instance_id = "${aws_instance.example.id}"
}
resource "aws_volume_attachment" "ebs-volume-2-attachment" {
device_name = "/dev/sdg"
volume_id = "${aws_ebs_volume.ebs-volume-2.id}"
instance_id = "${aws_instance.example.id}"
}
希望对你有所帮助