Я пытаюсь создать правило доступа группы безопасности из файла, содержащего список CIDR в следующем формате:
"127.0.0.1/32",
"127.0.0.1/32",
"127.0.0.1/32"
CIDR извлекаются из файла следующим образом:
cidrs = "${split(",", file("${path.module}/cidrs"))}"
и передается ресурсу aws_security_group
в виде (списка) переменной:
resource "aws_security_group" "test" {
...
ingress {
...
cidr_blocks = "${var.cidrs}"
}
}
выполняется terraform plan
приводит к следующей ошибке:
[ERROR] root.test: eval: *terraform.EvalValidateResource, err:
Warnings: []. Errors: [
"ingress.2.cidr_blocks.0" must contain a valid CIDR, got error parsing:
invalid CIDR address: "127.0.0.1/32"
"ingress.2.cidr_blocks.1" must contain a valid CIDR, got error parsing:
invalid CIDR address: "127.0.0.1/32"
"ingress.2.cidr_blocks.2" must contain a valid CIDR, got error parsing:
invalid CIDR address: "127.0.0.1/32"
]
ИтакПохоже, что содержимое или файл преобразуются в список или 3 блока cidr, которые выглядят правильно, но terraform не может выполнить синтаксический анализ любого из них.
Однако, если я назначу cidr_blocks = ["127.0.0.1/32", "127.0.0.1/32", "127.0.0.1/32"]
, все будет работать нормально.
Назначение списка переменной cidrs = ["127.0.0.1/32", "127.0.0.1/32", "127.0.0.1/32"]
также работает нормально.Кажется, проблема вызвана ${split(",", file())
[INFO] Terraform version: 0.11.0 ec9d4f1d0f90e8ec5148f94b6d634eb542a4f0ce+CHANGES