Terraform ๋ชจ๋“ˆ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ AWS Landing Zone ์†Œ๊ฐœ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! XNUMX์›”, OTUS๋Š” ์ƒˆ๋กœ์šด ์ฝ”์Šค๋ฅผ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค - ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ์•„ํ‚คํ…์ฒ˜. ์ด ๊ฐ•์ขŒ์˜ ์‹œ์ž‘์„ ์˜ˆ์ƒํ•˜์—ฌ ํ•ด๋‹น ์ฃผ์ œ์— ๊ด€ํ•œ ํฅ๋ฏธ๋กœ์šด ์ž๋ฃŒ์˜ ๋ฒˆ์—ญ๋ณธ์„ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Terraform ๋ชจ๋“ˆ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ AWS Landing Zone ์†Œ๊ฐœ

AWS ๋žœ๋”ฉ ์กด ๊ณ ๊ฐ์ด ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ˆ์ „ํ•œ ๋‹ค์ค‘ ๊ณ„์ • AWS ํ™˜๊ฒฝ์„ ์‹ ์†ํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

XNUMX๋…„ ๋„˜๊ฒŒ Mitoc Group์˜ ์šฐ๋ฆฌ ํŒ€์€ ๋Œ€๊ทœ๋ชจ ์กฐ์ง์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋””์ง€ํ„ธ ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ๋””์ง€ํ„ธ ๊ณต๊ฐ„์„ AWS ํด๋ผ์šฐ๋“œ๋กœ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ์œ„ํ•ด ์‰ฌ์ง€ ์•Š๊ณ  ๋…ธ๋ ฅํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ฆ‰, AWS์— ์žˆ๋Š” ์šฐ๋ฆฌ ์นœ๊ตฌ๋“ค์˜ ๋ง์„ ์ธ์šฉํ•˜์ž๋ฉด, "์šฐ๋ฆฌ ๊ณ ๊ฐ์€ AWS๋ฅผ ํ†ตํ•ด ์Šค์Šค๋กœ๋ฅผ ์žฌ์ฐฝ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." ๊ณ ๊ฐ์„ ๋Œ€์‹ ํ•˜์—ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์žฌ์ฐฝ์กฐํ•˜๊ณ  ๋‹จ์ˆœํ™”ํ•˜๋ ค๋Š” ๋Š์ž„์—†๋Š” ๋…ธ๋ ฅ์ด๋ฉฐ, AWS๋Š” ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šด ์†”๋ฃจ์…˜์„ ํ†ตํ•ด ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํƒ์›”ํ•œ ๋Šฅ๋ ฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

Terraform ๋ชจ๋“ˆ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ AWS Landing Zone ์†Œ๊ฐœ
AWS ๋žœ๋”ฉ ์กด(์ถœ์ฒ˜)

AWS ๋žœ๋”ฉ ์กด์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ณต์‹ ์ถœ์ฒ˜์˜ ์ •๋ณด์— ๋”ฐ๋ฅด๋ฉด:

AWS Landing Zone์€ ๊ณ ๊ฐ์ด AWS ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ๊ณ„์ •์œผ๋กœ ์•ˆ์ „ํ•œ AWS ํ™˜๊ฒฝ์„ ์‹ ์†ํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์˜ต์…˜์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ๋‹ค์ค‘ ๊ณ„์ • ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๊ณ„์ •๊ณผ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, AWS ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AWS Landing Zone์€ ๋‹ค์–‘ํ•œ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณต๋˜๋Š” ์œ ์‚ฌํ•œ ์„ค๊ณ„ ํŒจํ„ด์˜ ๋ณต์žก์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ํฌ๊ฒŒ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์šฐ๋ฆฌ ํŒ€์€ ์ž๋™ํ™”์— ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ CloudFormation ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ Terraform ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” Terraform์—์„œ ์ „์ฒด AWS Landing Zone ์†”๋ฃจ์…˜์„ ๊ตฌ์ถ•ํ•ด ๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ์š”? ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ๊ฒƒ์ด ๊ณ ๊ฐ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์Šคํฌ์ผ๋Ÿฌ: ๊ทธ๋Ÿด ์˜ˆ์ •์ด๊ณ  ์ด๋ฏธ ๊ฒฐ์ • ์ค‘์ž…๋‹ˆ๋‹ค! ๐Ÿ™‚

์–ธ์ œ AWS Landing Zone์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๊นŒ?

ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ AWS ๊ณ„์ • ๋‚ด์—์„œ ์ผ๋ฐ˜ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์™€ ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์กฐ์น˜๋Š” ๊ณผ์ž‰์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ์— ๊ด€๋ จ๋˜์ง€ ์•Š์€ ์‚ฌ๋žŒ์€ ๊ณ„์† ์ฝ์œผ์‹ญ์‹œ์˜ค :)

์ผ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ฌด์—‡์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ฆฌ์™€ ํ˜‘๋ ฅํ•œ ๋Œ€๊ทœ๋ชจ ์กฐ์ง ์ค‘ ์ƒ๋‹น์ˆ˜๋Š” ์ด๋ฏธ ์ผ์ข…์˜ ํด๋ผ์šฐ๋“œ ์ „๋žต์„ ๋งˆ๋ จํ•ด ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—…์€ ๋ช…ํ™•ํ•œ ๋น„์ „๊ณผ ๊ธฐ๋Œ€ ์—†์ด ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ๋‚ด์–ด ์ „๋žต์„ ์ •์˜ํ•˜๊ณ  AWS๊ฐ€ ์ „๋žต์— ์–ด๋–ป๊ฒŒ ๋ถ€ํ•ฉํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์‹ญ์‹œ์˜ค.

์„ฑ๊ณต์ ์ธ AWS Landing Zone ๊ณ ๊ฐ์€ ์ „๋žต์„ ์„ค์ •ํ•  ๋•Œ ๋‹ค์Œ ์‚ฌํ•ญ์— ์ ๊ทน์ ์œผ๋กœ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž๋™ํ™”๋Š” ๋‹จ์ˆœํžˆ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ž๋™ํ™”๊ฐ€ ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค.
  • ํŒ€์€ ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ธฐ ์œ„ํ•ด ๋™์ผํ•œ ๋„๊ตฌ ์„ธํŠธ์™€ ๋™์ผํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์†์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Terraform์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€์žฅ ์ƒ์‚ฐ์ ์ธ ํด๋ผ์šฐ๋“œ ์‚ฌ์šฉ์ž๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋Œ€์‹  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค.

AWS Landing Zone์šฉ Terraform ๋ชจ๋“ˆ ์†Œ๊ฐœ

๋ช‡ ๋‹ฌ๊ฐ„์˜ ๋…ธ๋ ฅ ๋์— ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ์„ ๋ณด์ด๊ฒŒ ๋˜์–ด ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. AWS Landing Zone์šฉ Terraform ๋ชจ๋“ˆ. ์†Œ์Šค ์ฝ”๋“œ GitHub์— ์ €์žฅ๋˜๋ฉฐ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „ Terraform ๋ชจ๋“ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋ ค๋ฉด ๊ฐ„๋‹จํžˆ ์ผœ์‹ญ์‹œ์˜ค. main.tf ๊ท€ํ•˜์˜ ์ฝ”๋“œ์—:

module "landing_zone" {
  source     = "TerraHubCorp/landing-zone/aws"
  version    = "0.0.6"
  root_path  = "${path.module}"
  account_id = "${var.account_id}"
  region     = "${var.region}"
  landing_zone_components = "${var.landing_zone_components}"
}

์ฐธ๊ณ : ๋ฐ˜๋“œ์‹œ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”. variables.tf ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์—๊ฒŒ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ outputs.tf.

์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ๊ธฐ๋ณธ๊ฐ’์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. terraform.tfvars:

account_id = "123456789012"
region = "us-east-1"
landing_zone_components = {
  landing_zone_pipeline_s3_bucket = "s3://terraform-aws-landing-zone/mycompany/landing_zone_pipeline_s3_bucket/default.tfvars"
  [...]
}

์ฆ‰, ์ด ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ๋•Œ terraform ๋„ˆ๋Š” ํ•„์š”๋กœ ํ•  ๊ฒƒ์ด๋‹ค :

  1. ๊ฐ’ ๋ณ€๊ฒฝ account_id ะธ region AWS ์กฐ์ง์˜ ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ท€ํ•˜์˜ ๋ฐ์ดํ„ฐ
  2. ๊ฐ’ ๋ณ€๊ฒฝ landing_zone_components AWS Landing Zone ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ
  3. ์ˆ˜์ • s3://terraform-aws-landing-zone/mycompany ๋‹น์‹ ์˜ ๋ธ”๋ก์— S3 ๋ฐ ํ‚ค ์ ‘๋‘์‚ฌ S3ํŒŒ์ผ์„ ์ €์žฅํ•  ์œ„์น˜ .tfvars (๋˜๋Š” ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ .tfvars ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์žˆ์Œ).

์ด ๋ชจ๋“ˆ์—๋Š” ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ ๋˜๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ฐฐํฌ๋˜์–ด์•ผ ํ•˜๊ฑฐ๋‚˜ ๋ฐฐํฌ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ์‹œ ๋ณ€์ˆ˜ ๋งต์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๊ตฌ์„ฑ์š”์†Œ landing_zone_components ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๊ณ ๊ฐ์ด ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์˜ ๊ฒฐ์‹ค์„ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์˜๊ณ  ์ž๋ž‘์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. AWS Landing Zone์šฉ Terraform ๋ชจ๋“ˆ์€ ์กฐ์ง์ด AWS ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ๊ณ„์ •์œผ๋กœ ์•ˆ์ „ํ•œ AWS ํ™˜๊ฒฝ์„ ์‹ ์†ํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” AWS๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ ์†๋„๋กœ ์„ฑ์žฅํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๊ธฐ๋ฐ˜์„ ํฌ๊ด„ํ•˜๊ณ  ๋‹ค๋ฅธ AWS ํ”„๋กœ๋•์…˜ ์†”๋ฃจ์…˜๊ณผ๋„ ํ†ตํ•ฉ๋˜๋Š” Terraform ์†”๋ฃจ์…˜์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋‹ค์•ผ. ์šฐ๋ฆฌ๋Š” ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ ์›น ์„ธ๋ฏธ๋‚˜ ๊ทธ ์•ˆ์—์„œ ์šฐ๋ฆฌ๋Š” Cloud Landing Zone ๋„๋ฉ”์ธ ์•„ํ‚คํ…์ฒ˜์˜ ์„ค๊ณ„๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ  ์ฃผ์š” ๋„๋ฉ”์ธ์˜ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค..

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€