【发布时间】:2021-05-05 01:05:21
【问题描述】:
Ooookay... 这把我逼疯了。我已经使用 AWS CloudFormation 有一段时间了,最近我的任务是将我创建的东西“转换”(或调整)为 Terraform 变体,最终做同样的事情(原因)。
在大多数情况下,我相处得很好。但是......我已经来到了我的 AWS_Instance 部分,由于我对 Terraform 的了解,我提前害怕了,我完全被卡住了。我觉得我很接近,但我无法让它完全工作,所以关于以下内容;提前感谢您的任何帮助和建议!
问题:我有一个 AWS 实例要创建 - 根据用户的请求,它将附加 X 个 EBS 存储设备。 2、4 或无(假设)。在 AWS CF 中,我只是通过 IF 语句做一个条件; IF 2 然后创建 A 和 B; ELIF 4 然后创建 A、B、C 和 D,ELSE 什么也不做。简单的。在 Terraform 中,我发现很难做到同样的简单性。到目前为止,我有以下内容:
variable "test_list" {
type = list
default = [ "b", "c" ]
}
resource "aws_instance" "tf_instance" {
#...#
dynamic "ebs_block_device" {
for_each = var.test_list
content {
device_name = "/dev/sd${ebs_block_device.value}"
delete_on_termination = "true"
volume_size = "2000"
volume_type = "st1"
encrypted = "${local.Instance_Encryption}"
}
}
}
这确实创建了一个带有 2 个附加磁盘(b 和 c)的实例,这是朝着正确方向迈出的一步,但问题是我找不到将条件添加到该 FOR_EACH 步骤的方法。我希望能够让它创建那些 2 或什么都不做。我尝试了以下方法,但它出错了:
for_each = local.Single-Node ? [ var.test_list_2 ] : [ null ]
可能我只是使用不正确(仅使用 Terraform 几天,所以我的某些理解肯定是错误的)。对此的任何帮助都非常感谢,因为我觉得我正在尝试做的是一件非常基本的事情[如果这什么都不做],但我已经在互联网上搜索无济于事!
【问题讨论】:
-
你没有显示你的错误信息,但如果我不得不猜测出了什么问题,那可能是因为你输入了
list(null)类型。您可能实际上想要一个空列表,即[]。如果没有,请分享您的错误信息和其他相关信息。
标签: conditional-statements terraform