Terraform/阿里云:创建多数据盘ECS实例

Terraform / alicloud : create an ECS instance with multiple data disks

我正在尝试使用 terraform 创建多个 ecs 实例。实际上我希望每个ecs实例都有多个数据盘。所以一个磁盘用于 OS 和 2 个其他数据磁盘。

代码片段应如下所示:

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_diskslist(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
  }
 
}