こんにちは、
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のすべて許可ルールが追加されているため、要求されたルールが既に追加されているというエラーがスローされます。
これがAWSAPIのデフォルトの動作であることが判明しました。aws_security_group_ruleにprotocol = -1を指定すると、ALLALLOWルールが取得されます。 これは、terraformドキュメントで言及する必要があります。
それを実行する適切な方法は、tcpとudpfeの両方に対して2つのaws_security_group_ruleを作成することです。
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日間_⏳クローズされたため、この問題をロックします。 これは、メンテナがアクティブな問題を見つけて集中するのに役立ちます。
この問題を再開する必要があると思われる場合は、コンテキストを追加するために、この問題にリンクする新しい問題を作成することをお勧めします。 ありがとう!
最も参考になるコメント
これがAWSAPIのデフォルトの動作であることが判明しました。aws_security_group_ruleにprotocol = -1を指定すると、ALLALLOWルールが取得されます。 これは、terraformドキュメントで言及する必要があります。
それを実行する適切な方法は、tcpとudpfeの両方に対して2つのaws_security_group_ruleを作成することです。