#terraform #hcl
#terraform #hcl
Вопрос:
У меня есть следующая terraform:
Идея в том, что я могу передавать тома и передавать двоичные данные или данные, и этот модуль будет обрабатывать соответствующим образом.
Однако ему не нравится вложенный цикл. У меня такое чувство, что ему не нравится итерация по объекту.
Когда я запускаю это, я получаю следующую ошибку
#variable.tf
variable "volumes" {
type = map(object({
data = map(string)
binary_data = map(string)
}))
description = "configmap backed volume"
}
#main.tf
resource "kubernetes_config_map" "volume" {
for_each = var.volumes
metadata {
name = each.key
namespace = var.namespace
}
dynamic "data" {
for_each = each.value["data"]
content {
each.key = each.value
}
}
dynamic "binary_data" {
for_each = each.value["binary_data"]
content {
each.key = each.value
}
}
}
Ошибка: требуется определение аргумента или блока
В ../../../terraform-modules/helm_install/main.tf строка 45: здесь требуется аргумент или определение блока. Чтобы задать аргумент, используйте знак равенства «=» для ввода значения аргумента.
Ответ №1:
data
и binary_data
являются аргументами, а не блоками. динамические блоки применяются только к блокам, а не к аргументам.
Это означает, что вы не можете создать несколько data
и binary_data
в одном kubernetes_config_map
. Вам нужно будет подать for_each
заявку на уровне ресурсов:
resource "kubernetes_config_map" "volume" {
for_each = var.volumes
metadata {
name = each.key
namespace = var.namespace
}
data = each.value["data"]
binary_data = each.value["binary_data"]
}
Я не проверял приведенный выше код, поэтому использую его только в качестве примера.