์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ! XNUMX์, OTUS๋ ์๋ก์ด ์ฝ์ค๋ฅผ ์ถ์ํฉ๋๋ค -
XNUMX๋
๋๊ฒ Mitoc Group์ ์ฐ๋ฆฌ ํ์ ๋๊ท๋ชจ ์กฐ์ง์ด ์ฑ๊ณต์ ์ผ๋ก ๋์งํธ ๋ฐฉ์์ผ๋ก ์ ํํ๊ณ ๋์งํธ ๊ณต๊ฐ์ AWS ํด๋ผ์ฐ๋๋ก ๊ตฌ์ถํ๊ฑฐ๋ ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์๋๋ก ๋๊ธฐ ์ํด ์ฌ์ง ์๊ณ ๋
ธ๋ ฅํด ์์ต๋๋ค. ์ฆ, AWS์ ์๋ ์ฐ๋ฆฌ ์น๊ตฌ๋ค์ ๋ง์ ์ธ์ฉํ์๋ฉด, "์ฐ๋ฆฌ ๊ณ ๊ฐ์ AWS๋ฅผ ํตํด ์ค์ค๋ก๋ฅผ ์ฌ์ฐฝ์กฐํ๊ณ ์์ต๋๋ค." ๊ณ ๊ฐ์ ๋์ ํ์ฌ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฐฝ์กฐํ๊ณ ๋จ์ํํ๋ ค๋ ๋์์๋ ๋
ธ๋ ฅ์ด๋ฉฐ, AWS๋ ๋ฐฐ์ฐ๊ธฐ ์ฌ์ด ์๋ฃจ์
์ ํตํด ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ๋ฅ๋ ฅ์ ๋ฐํํฉ๋๋ค.
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 ๋ชจ๋ ์๊ฐ
๋ช ๋ฌ๊ฐ์ ๋
ธ๋ ฅ ๋์ ์ฌ๋ฌ๋ถ๊ป ์ ๋ณด์ด๊ฒ ๋์ด ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
์์ํ๋ ค๋ฉด ๊ฐ๋จํ ์ผ์ญ์์ค. 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
๋๋ ํ์๋ก ํ ๊ฒ์ด๋ค :
- ๊ฐ ๋ณ๊ฒฝ
account_id
ะธregion
AWS ์กฐ์ง์ ๋ฐ์ดํฐ์ ํด๋นํ๋ ๊ทํ์ ๋ฐ์ดํฐ - ๊ฐ ๋ณ๊ฒฝ
landing_zone_components
AWS Landing Zone ์ฌ์ฉ ์ฌ๋ก์ ์ผ์นํ๋ ๊ฒ - ์์
s3://terraform-aws-landing-zone/mycompany
๋น์ ์ ๋ธ๋ก์ S3 ๋ฐ ํค ์ ๋์ฌ S3ํ์ผ์ ์ ์ฅํ ์์น.tfvars
(๋๋ ํ์ผ์ ์ ๋ ๊ฒฝ๋ก.tfvars
๋ก์ปฌ ์ ์ฅ์์ ์์).
์ด ๋ชจ๋์๋ ์์ญ, ์๋ฐฑ ๋๋ ์์ฒ ๊ฐ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๊ฐ ์์ ์ ์์ง๋ง ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ๋ฐฐํฌ๋์ด์ผ ํ๊ฑฐ๋ ๋ฐฐํฌ๋์ง๋ ์์ต๋๋ค. ๋ฐํ์ ์ ๋ณ์ ๋งต์ ์ผ๋ถ๊ฐ ์๋ ๊ตฌ์ฑ์์ landing_zone_components
๋ฌด์๋ฉ๋๋ค.
๊ฒฐ๋ก
๊ณ ๊ฐ์ด ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์๋ํ๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ๋๊ธฐ ์ํ ๋ ธ๋ ฅ์ ๊ฒฐ์ค์ ๊ณต์ ํ๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์๊ณ ์๋์ค๋ฝ์ต๋๋ค. AWS Landing Zone์ฉ Terraform ๋ชจ๋์ ์กฐ์ง์ด AWS ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ๊ณ์ ์ผ๋ก ์์ ํ AWS ํ๊ฒฝ์ ์ ์ํ๊ฒ ์ค์ ํ๋ ๋ฐ ๋์์ด ๋๋ ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ AWS๊ฐ ์์ฒญ๋๊ฒ ๋น ๋ฅธ ์๋๋ก ์ฑ์ฅํ๊ณ ์๋ค๋ ๊ฒ์ ์ ์๊ณ ์์ผ๋ฉฐ, ๋ชจ๋ ๊ธฐ๋ฐ์ ํฌ๊ดํ๊ณ ๋ค๋ฅธ AWS ํ๋ก๋์ ์๋ฃจ์ ๊ณผ๋ ํตํฉ๋๋ Terraform ์๋ฃจ์ ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ต์ ์ ๋คํ๊ณ ์์ต๋๋ค.
๊ทธ๊ฒ ๋ค์ผ. ์ฐ๋ฆฌ๋ ๊ทํ์ ์๊ฒฌ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์ถ์ฒ : habr.com