问题描述
我正在尝试使用Terraform创建多个ECS实例。实际上,我希望每个ecs实例都具有多个数据磁盘。因此,一个磁盘用于OS,另外两个磁盘用于数据。
代码段应如下所示:
resource "alicloud_instance" "node" {
image_id = data.alicloud_images.nodes.id
instance_type = var.instance_type_controller
internet_max_bandwidth_out = 100
security_groups = alicloud_security_group.cluster.id
key_name = var.key_pair
count = 1
system_disk_size = 80
data_disks = [
{
name = "/dev/xvdb"
size = 200
delete_with_instance = true
},{
name = "/dev/xvdc"
size = 100
delete_with_instance = true
}
]
}
唯一的问题是我有一条消息错误告诉我
An argument named "data_disks" is not expected here. Did you mean to define a
block of type "data_disks"?
我经历了documentation,并且我很确定data_disks
的类型为list(map(string))
,所以我写的内容应该可以,但是只有将其设置为
data_disks {
name = "/dev/xvdb"
size = 200
delete_with_instance = true
}
但是我需要将多个数据磁盘连接到我的ECS实例...我丢失了什么吗?
我正在使用以下terraform / provider版本:
Terraform v0.13.0
+ provider registry.terraform.io/hashicorp/alicloud v1.94.0
+ provider registry.terraform.io/hashicorp/random v2.3.0
+ provider registry.terraform.io/hashicorp/template v2.1.2
解决方法
@ydaetskcoR评论。解决方案是具有多个data_disks
块。像这样:
resource "alicloud_instance" "node" {
image_id = data.alicloud_images.nodes.id
instance_type = var.instance_type_controller
internet_max_bandwidth_out = 100
security_groups = alicloud_security_group.cluster.id
key_name = var.key_pair
count = 1
system_disk_size = 80
data_disks {
name = "/dev/xvdb"
size = 200
delete_with_instance = true
}
data_disks {
name = "/dev/xvdc"
size = 100
delete_with_instance = true
}
}