Здравствуй,
Terraform v0.9.11
variable "ports_logstash" {
description = "Ports used by logstash and graphite"
default = ["40000", "40001", "40002", "40003", "40004", "40005", "40006", "40007", "40008", "40009", "40010", "2003", "2005", "8125", "80", "443"]
}
resource "aws_security_group_rule" "Logstash" {
count = "${length(var.ports_logstash)}"
depends_on = ["aws_security_group.SG-Logstash"]
type = "ingress"
from_port = "${var.ports_logstash[count.index]}"
to_port = "${var.ports_logstash[count.index]}"
protocol = -1
cidr_blocks = ["10.0.1.0/8"]
security_group_id = "${aws_security_group.SG-Logstash.id}"
}
resource "aws_security_group" "SG-Logstash" {
name = "SG-Logstash"
description = "Access to all ports required for Logstash communication"
vpc_id = "${aws_vpc.default.id}"
tags {
Name = "SG-Logstash"
}
}
Terraform должен выдать ошибку, что определение протокола как -1 и установка from_port и to_port не поддерживаются ИЛИ создать правило для tcp и udp.
Выдает ошибку о том, что запрошенное правило уже добавлено, поскольку оно добавляет правило разрешить все для указанного CIDR.
Оказывается, это поведение AWS API по умолчанию, если вы укажете протокол = -1 для aws_security_group_rule, вы получите правило ALL ALLOW. Об этом следует упомянуть в документации по терраформу.
правильный способ сделать это - создать два aws_security_group_rule для tcp и udp fe
resource "aws_security_group_rule" "tcpLogstash" {
count = "${length(var.ports_logstash)}"
depends_on = ["aws_security_group.SG-Logstash"]
type = "ingress"
from_port = "${var.ports_logstash[count.index]}"
to_port = "${var.ports_logstash[count.index]}"
protocol = "tcp"
cidr_blocks = ["10.0.1.0/8"]
security_group_id = "${aws_security_group.SG-Logstash.id}"
}
resource "aws_security_group_rule" "udpLogstash" {
count = "${length(var.ports_logstash)}"
depends_on = ["aws_security_group.SG-Logstash"]
type = "ingress"
from_port = "${var.ports_logstash[count.index]}"
to_port = "${var.ports_logstash[count.index]}"
protocol = "udp"
cidr_blocks = ["10.0.1.0/8"]
security_group_id = "${aws_security_group.SG-Logstash.id}"
}
Пометка проблемы как устаревшей из-за бездействия. Это помогает нашим специалистам по сопровождению находить активные проблемы и сосредоточиться на них. Если в течение следующих 30 дней этот вопрос не получит комментариев, он будет автоматически закрыт. Сопровождающие также могут удалить устаревшую этикетку.
Если эта проблема была автоматически закрыта, и вы считаете, что эту проблему следует открыть повторно, мы рекомендуем создать новую проблему, связав ее с этой проблемой для добавления контекста. Спасибо!
Я собираюсь заблокировать этот выпуск, потому что он был закрыт _30 дней_ ⏳. Это помогает нашим специалистам по сопровождению находить активные проблемы и сосредоточиться на них.
Если вы считаете, что эту проблему следует открыть повторно, мы рекомендуем создать новую проблему, связав ее с этой проблемой для добавления контекста. Спасибо!
Самый полезный комментарий
Оказывается, это поведение AWS API по умолчанию, если вы укажете протокол = -1 для aws_security_group_rule, вы получите правило ALL ALLOW. Об этом следует упомянуть в документации по терраформу.
правильный способ сделать это - создать два aws_security_group_rule для tcp и udp fe