Terraform-provider-aws: AWS ๋ณด์•ˆ ๊ทธ๋ฃน ๊ทœ์น™ ํ”„๋กœํ† ์ฝœ / ํฌํŠธ ์˜ค๋ฅ˜.

์— ๋งŒ๋“  2017๋…„ 07์›” 10์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: hashicorp/terraform-provider-aws

์•ˆ๋…•ํ•˜์„ธ์š”,

Terraform ๋ฒ„์ „

Terraform v0.9.11

์˜ํ–ฅ์„๋ฐ›๋Š” ๋ฆฌ์†Œ์Šค

  • aws_security_group_rule

Terraform ๊ตฌ์„ฑ ํŒŒ์ผ

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์— ๋Œ€ํ•ด ๋ชจ๋“  ํ—ˆ์šฉ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์š”์ฒญ ๋œ ๊ทœ์น™์ด ์ด๋ฏธ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„

  1. CIDR์ด ๊ฐ™๊ณ  ํฌํŠธ๊ฐ€ ๋‹ค๋ฅธ ํŠน์ • ํฌํŠธ์— ๋Œ€ํ•ด ์ƒˆ SG ๊ทœ์น™ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  2. terraform apply๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ์•„๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
    ```* aws_security_group_rule.Logstash [3] : 1 ๊ฐœ์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • aws_security_group_rule.Logstash.3 : [๊ฒฝ๊ณ ] (sg-xxxxxxxx)์—์„œ ์ค‘๋ณต ๋œ ๋ณด์•ˆ ๊ทธ๋ฃน ๊ทœ์น™์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€
    ํ˜„์žฌ ์ˆ˜์ • ๋œ Terraform ๋ฌธ์ œ์˜ ๋ถ€์ž‘์šฉ์œผ๋กœ ์ธํ•ด ๋‘ ๊ฐœ์˜ ๋ณด์•ˆ ๊ทธ๋ฃน์ด
    ๋™์ผํ•œ ์†์„ฑ์ด์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ source_security_group_ids๋ฅผ ๋ฎ์–ด ์”๋‹ˆ๋‹ค.
    ์ฃผ์—์„œ ๋‹ค๋ฅธ. ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/hashicorp/terraform/pull/2376 ์„ ์ฐธ์กฐ
    ๋ณต๊ตฌ ์ •๋ณด ๋ฐ ์ง€์นจ. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ : ์ง€์ •๋œ ๊ทœ์น™ "peer : 10.0.1.0/8, ALL, ALLOW"๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค .```
bug servicec2 stale

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

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}"
}

๋ชจ๋“  3 ๋Œ“๊ธ€

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 ์ผ _ โณ ๋™์•ˆ ์ข…๋ฃŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž ๊ธ€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ๊ด€๋ฆฌ์ž๊ฐ€ ํ™œ์„ฑ ๋ฌธ์ œ๋ฅผ ์ฐพ๊ณ  ์ง‘์ค‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ๋ฅผ ์œ„ํ•ด์ด ๋ฌธ์ œ์™€ ๋‹ค์‹œ ์—ฐ๊ฒฐ๋˜๋Š” ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰