Hallo,
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 sollte den Fehler auslösen, dass das Definieren des Protokolls als -1 und das Festlegen von from_port und to_port nicht unterstützt wird ODER dass die Regel sowohl für tcp als auch für udp erstellt wird.
Wirft einen Fehler aus, dass die angeforderte Regel bereits hinzugefügt wurde, da eine Zulassungsregel für die angegebene CIDR hinzugefügt wird.
Es stellt sich heraus, dass dies das Standardverhalten der AWS-API ist. Wenn Sie protocol = -1 für eine aws_security_group_rule angeben, erhalten Sie eine ALL ALLOW-Regel. Dies sollte in Terraform-Dokumenten erwähnt werden.
Der richtige Weg, dies zu tun, besteht darin, zwei aws_security_group_rule sowohl für tcp als auch für udp fe zu erstellen
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}"
}
Markieren Sie dieses Problem aufgrund von Inaktivität als veraltet. Dies hilft unseren Betreuern, die aktiven Probleme zu finden und sich darauf zu konzentrieren. Wenn dieses Problem in den nächsten 30 Tagen keine Kommentare erhält, wird es automatisch geschlossen. Betreuer können auch das veraltete Etikett entfernen.
Wenn dieses Problem automatisch geschlossen wurde und Sie der Meinung sind, dass dieses Problem erneut geöffnet werden sollte, empfehlen wir, ein neues Problem zu erstellen, das für zusätzlichen Kontext mit diesem Problem verknüpft wird. Danke!
Ich werde dieses Problem sperren, da es seit 30 Tagen geschlossen ist. Dies hilft unseren Betreuern, die aktiven Probleme zu finden und sich darauf zu konzentrieren.
Wenn Sie der Meinung sind, dass dieses Problem erneut geöffnet werden sollte, empfehlen wir, ein neues Problem zu erstellen, das für zusätzlichen Kontext mit diesem Problem verknüpft wird. Vielen Dank!
Hilfreichster Kommentar
Es stellt sich heraus, dass dies das Standardverhalten der AWS-API ist. Wenn Sie protocol = -1 für eine aws_security_group_rule angeben, erhalten Sie eine ALL ALLOW-Regel. Dies sollte in Terraform-Dokumenten erwähnt werden.
Der richtige Weg, dies zu tun, besteht darin, zwei aws_security_group_rule sowohl für tcp als auch für udp fe zu erstellen