์๋ ํ์ธ์,
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์ ๊ธฐ๋ณธ ๋์์ผ๋ก ๋ฐํ์ก์ต๋๋ค. aws_security_group_rule์ protocol = -1์ ์ ๊ณตํ๋ฉด ALL ALLOW ๊ท์น์ ๋ฐ๊ฒ๋ฉ๋๋ค. ์ด๊ฒ์ terraform ๋ฌธ์์์ ์ธ๊ธ๋์ด์ผํฉ๋๋ค.
์ ์ ํ ๋ฐฉ๋ฒ์ tcp ๋ฐ udp fe์ ๋ํด ๋ ๊ฐ์ 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 ์ผ _ โณ ๋์ ์ข ๋ฃ ๋์๊ธฐ ๋๋ฌธ์ ์ ๊ธ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ์ ๊ด๋ฆฌ์๊ฐ ํ์ฑ ๋ฌธ์ ๋ฅผ ์ฐพ๊ณ ์ง์คํ๋ ๋ฐ ๋์์ด๋ฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด์ด์ผํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์ปจํ ์คํธ๋ฅผ ์ํด์ด ๋ฌธ์ ์ ๋ค์ ์ฐ๊ฒฐ๋๋ ์ ๋ฌธ์ ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฐ์ฌ!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
AWS API์ ๊ธฐ๋ณธ ๋์์ผ๋ก ๋ฐํ์ก์ต๋๋ค. aws_security_group_rule์ protocol = -1์ ์ ๊ณตํ๋ฉด ALL ALLOW ๊ท์น์ ๋ฐ๊ฒ๋ฉ๋๋ค. ์ด๊ฒ์ terraform ๋ฌธ์์์ ์ธ๊ธ๋์ด์ผํฉ๋๋ค.
์ ์ ํ ๋ฐฉ๋ฒ์ tcp ๋ฐ udp fe์ ๋ํด ๋ ๊ฐ์ aws_security_group_rule์ ์์ฑํ๋ ๊ฒ์ ๋๋ค.