недопустимый адрес CIDR в ресурсе terraform aws_security_group с cidr_blocks из файла

Я пытаюсь создать правило входа группы безопасности из файла, содержащего список 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

person pldimitrov    schedule 03.06.2019    source источник


Ответы (2)


Я пытался разрешить трафик из ALB, где мне нужно передать другую группу безопасности, добавленную в Разрешить трафик из ALB. Итак, моя ошибка была больше всего похожа на ваш вопрос, поэтому добавление в качестве ответа может помочь кому-то другому, поскольку я не нашел хорошего ответа.

Если вы хотите добавить еще одну группу безопасности в раздел белого списка, это может помочь.

    ingress {
    from_port   = 0
    to_port     = 65535
    protocol    = "tcp"
    security_groups = ["${aws_security_group.alb_secuirty_group.id}"]
    description = "HTTP"
  }
person Adiii    schedule 04.04.2020

Я отредактировал свой последний ответ:

Если он вам нужен из файла, разделенного запятыми, разделять значения не нужно, просто сделайте его списком с []

cidr_blocks = ["${var.cidrs}"]

или проще

cidr_blocks = ["${file("cidrs.scv")"}]
person Alan Reynoso    schedule 13.06.2019