Hola,
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 debería arrojar un error de que definir el protocolo como -1 y establecer from_port y to_port no es compatible O crear la regla para tcp y udp.
Lanza un error de que la regla solicitada ya está agregada, porque está agregando una regla de permitir todo para el CIDR especificado.
Resulta que es el comportamiento predeterminado de la API de AWS, si proporciona el protocolo = -1 para una regla aws_security_group_rule, obtendrá una regla ALL ALLOW. Esto debería mencionarse en los documentos de terraform.
la forma correcta de hacerlo es crear dos aws_security_group_rule tanto para tcp como para 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}"
}
Marcar este problema como obsoleto debido a la inactividad. Esto ayuda a nuestros mantenedores a encontrar y concentrarse en los problemas activos. Si este problema no recibe comentarios en los próximos 30 días, se cerrará automáticamente. Los encargados del mantenimiento también pueden quitar la etiqueta obsoleta.
Si este problema se cerró automáticamente y cree que debe reabrirse, le recomendamos que cree un nuevo problema que se vincule a este para agregar contexto. ¡Gracias!
Voy a bloquear este problema porque ha estado cerrado durante _30 días_ ⏳. Esto ayuda a nuestros mantenedores a encontrar y concentrarse en los problemas activos.
Si cree que este problema debería reabrirse, le recomendamos que cree un nuevo problema que se vincule a este para agregar contexto. ¡Gracias!
Comentario más útil
Resulta que es el comportamiento predeterminado de la API de AWS, si proporciona el protocolo = -1 para una regla aws_security_group_rule, obtendrá una regla ALL ALLOW. Esto debería mencionarse en los documentos de terraform.
la forma correcta de hacerlo es crear dos aws_security_group_rule tanto para tcp como para udp fe