【发布时间】:2021-07-29 17:25:16
【问题描述】:
我正在创建多个不同大小的卷,如下所示:
resource "aws_ebs_volume" "ebs_volume" {
for_each = {
0 = 100
1 = 50
2 = 20
3 = 20
4 = 50
}
availability_zone = var.availability_zone
size = each.value
type = "gp2"
}
我将像上面那样创建多个卷。现在,我想将它附加到单个 EC2 实例。 在下面,资源 ec2_production 我正在定义 根卷 的配置,即 大小为 40GB,卷类型为 gp2。现在我想再创建 5 个 5 个以上资源中提到的卷 ebs_volume 并将它们附加到我下面定义的 ec2_production 实例
resource "aws_instance" "ec2_production" {
count = "${var.ec2_instance_count}"
ami = "${var.ami}"
availability_zone = var.availability_zone
instance_type = "${var.ec2_instance_type}"
subnet_id = aws_subnet.subnet.id
associate_public_ip_address = true
vpc_security_group_ids = [aws_security_group.security_group_access_internet.id]
key_name = "key-pair"
ebs_block_device {
device_name = "/dev/sda1"
volume_type = "gp2"
volume_size = 40
}
tags = {
Name = var.tag
}
}
这是 EBS_volume_attachment 的资源:
我不确定如何传递设备名称以及如何将所有 EBS 卷附加到我的 AWS 实例:
resource "aws_volume_attachment" "volume_attachement" {
count = "${var.ec2_instance_count * var.ebs_volume_count}"
volume_id = "${aws_ebs_volume.ebs_volume.*.id[count.index]}"
device_name = "${element(var.ec2_device_names, count.index)}"
instance_id = "${element(aws_instance.ec2_production.*.id, count.index)}"
}
我的变量.tf 文件
variable "ec2_device_names" {
default = [
"/dev/sdf",
"/dev/sdg",
"/dev/sdh",
"/dev/sdi",
"/dev/sdj"
]
}
variable "ec2_instance_count" {
default = 1
}
variable "ec2_instance_type" {
default = "t2.micro"
}
variable "ami" {
default = "ami-0d382e80be7ffdae5"
}
有什么方法可以将所有卷附加到我在上面创建的每个设备并附加到我的 EC2 实例?
【问题讨论】:
-
你目前的方法有什么问题?
-
@Marcin 抱歉评论格式不正确
-
您应该编辑您的问题以包含格式正确的错误,而不是将其留在 cmets 中。
-
请始终在问题本身中包含相关的错误消息。
标签: amazon-web-services amazon-ec2 terraform terraform-provider-aws amazon-ebs