首页 > 解决方案 > 如何在 Terraform 的同一资源块中创建多个不同大小的卷?

问题描述

我当前的 Terraform 配置为构建多个大小相同的 AWS 卷。我们的一些服务器现在需要更大的容量。是否可以在同一个资源块中创建多个不同大小的卷?

或者,我必须拆分这个块(每个卷大小 1 个块),这将需要我重建很多 Terraform 配置,即在卷附件部分等。如果可能的话,我宁愿避免这种情况。

我需要计数中的第三卷和第四卷更大。最初我想使用一些条件逻辑,例如 If/Else 但是我不确定如何在 terraform 中实现它。我正在使用 terraform 0.12.18。

伪代码:

resource "aws_ebs_volume" "myvolume" {
  provider          = aws.client
  count             = 5
  availability_zone = var.availability_zone
  encrypted         = "true"
  size              = if index aws_ebs_volume.myvolume = 2 or 3 then 300GB else 100GB
  type              = "gp2"
}

标签: terraformterraform-provider-aws

解决方案


你可以像下面那样做。

resource "aws_ebs_volume" "count" {
  count             = 5
  availability_zone = var.availability_zone
  size              = contains([2, 3], count.index) ? 300 : 100
  type              = "gp2"
}

你也可以使用for_each.

resource "aws_ebs_volume" "for_each" {
  for_each = {
    0 = 100
    1 = 100
    2 = 300
    3 = 300
    4 = 100
  }
  availability_zone = var.availability_zone
  size              = each.value
  type              = "gp2"
}

推荐阅读