0

我正在尝试使用 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"?

我浏览了文档,我很确定这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
4

1 回答 1

1

正如@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
  }
 
}
于 2020-08-26T17:17:55.343 回答