๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Terraform ๊ฐœ๋…

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2025. 5. 31.

 

1. Terraform์ธ ๋ญ”๊ฐ€

 Terraform์€ HashiCorp์—์„œ ๋งŒ๋“  Infrastructure as Code(IaC) ๋„๊ตฌ๋กœ, ํด๋ผ์šฐ๋“œ๋‚˜ ์˜จํ”„๋ ˆ๋ฏธ์Šค ์ธํ”„๋ผ๋ฅผ ์ฝ”๋“œ๋กœ ์„ ์–ธํ•˜์—ฌ ์ž๋™์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹•๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 

  • ์„ ์–ธ์ (Declarative) ๊ตฌ์„ฑ
    • ์‚ฌ์šฉ์ž๋Š” "์–ด๋–ค(What)" ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค์ง€ HCL(HashiCorp Configuration Language) ๋˜๋Š” JSON์œผ๋กœ ์ •์˜๋งŒ ํ•˜๋ฉด, Terraform์ด "์–ด๋–ป๊ฒŒ(How)" ๋งŒ๋“œ๋Š”์ง€๋Š” ๋‚ด๋ถ€ ๋กœ์ง(plan/apply)์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ•๋ฉ€ํ‹ฐ ์„œ๋น„์Šค ์ง€์›
    • AWS•GCP•Azure ๊ฐ™์€ ์ฃผ์š” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋Š” ๋ฌผ๋ก , Kubernetes, Datadog, Cloudflare, SaaS ์„œ๋น„์Šค์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์ˆ˜๋ฐฑ์—ฌ ๊ฐœ ํ”„๋กœ๋ฐ”์ด๋”(provider)๋ฅผ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐฉ์‹์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ๊ณ„ํš(Plan)•์‹คํ–‰(Apply)
    1. terraform init
      • ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ Terraform ์ž‘์—… ๊ณต๊ฐ„์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ํ•„์š”ํ•œ ํ”„๋กœ๋ฐ”์ด๋” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค.
    2. terraform plan
      • ์„ ์–ธ๋œ ๊ตฌ์„ฑ๊ณผ ์‹ค์ œ ์ƒํƒœ(State)๋ฅผ ๋น„๊ตํ•ด ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€•์ˆ˜์ ••์‚ญ์ œํ• ์ง€ ์˜ˆ์ธก(plan)์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    3. terraform apply
      • ์œ„์—์„œ ์ƒ์„ฑ๋œ ๊ณ„ํš(plan)์„ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•ด ์ธํ”„๋ผ๋ฅผ ํ”„๋กœ๋น„์ €๋‹•์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒํƒœ ๊ด€๋ฆฌ(State)
    • terraform.tfstate ํŒŒ์ผ์— ํ˜„์žฌ ์ธํ”„๋ผ ์ƒํƒœ๋ฅผ ๊ธฐ๋กํ•˜์—ฌ, ์ดํ›„ ๋ณ€๊ฒฝ ์‹œ ์–ด๋–ค ๋ถ€๋ถ„์ด ๋ฐ”๋€Œ์–ด์•ผ ํ•˜๋Š”์ง€ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ๋ฒก์—”๋“œ(S3, Terraform Cloud ๋“ฑ)์— ์ €์žฅํ•˜๋ฉด ํŒ€ ๋‹จ์œ„ ํ˜‘์—…๊ณผ ์ž ๊ธˆ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ(Module)
    • ์ž์ฃผ ์“ฐ๋Š” ๋ฆฌ์†Œ์Šค ๋ฌถ์Œ์„ ๋ชจ๋“ˆ๋กœ ์ •์˜ํ•ด ์žฌ์ƒ์šฉ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ VPC ๊ตฌ์„ฑ๋ถ€ํ„ฐ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํƒ๊นŒ์ง€, ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

2. ์›Œํฌํ”Œ๋กœ์šฐ ์˜ˆ์‹œ

 

1. ๊ธฐ๋ณธ

# 1. ์ดˆ๊ธฐํ™”
terraform init

# 2. ๋ณ€๊ฒฝ ๋‚ด์—ญ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
terraform plan -out=tplan

# 3. ์ ์šฉ
terraform apply tfplan

# 4. ์ •๋ฆฌ (๋ฆฌ์†Œ์Šค ์‚ญ์ œ)
terraform destroy

 

2. ์‘์šฉ

# ์ตœ์ดˆ Init (ํ”„๋กœํŒŒ์ด๋”•๋ชจ๋“ˆ ์„ค์น˜)
terraform init 

# ๋‚˜์ค‘์— ํ”„๋กœ๋ฐ”์ด๋”๋‚˜ ๋ชจ๋“ˆ์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ์„ ๋•Œ
terraform init -upgrade

# ์ €์žฅํ•ด ๋‘” ๊ณ„ํš์— ๋”ฐ๋ผ ์ธํ”„๋ผ๋ฅผ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ(ํ”„๋กœ๋น„์ €๋‹/์—…๋ฐ์ดํŠธ)ํ•ฉ๋‹ˆ๋‹ค.
terraform apply -auto-approve -var-file=terraform.tfvars

# ํ•ด๋‹น ๊ณผ์ •์€ ์•”๋ฌต์ ์œผ๋กœ Plan -> Apply ํ๋ฆ„์„ ๊ฐ€์ง„๋‹ค.
# ์•”๋ฌต์  Plan ์‹คํ–‰
# apply ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ -out ํ”Œ๋ž˜๊ทธ ์—†์ด Plan ๋‹จ๊ณ„๋ฅผ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. -> ๋”ฐ๋กœ tfplan ํŒŒ์ผ์— ์ €์žฅํ•ด ๋‘์ง€ ์•Š์Œ
# ์ด๋•Œ ์ƒ์„ฑ๋œ "๊ณ„ํš(plan)"์€ ๋””์Šคํฌ์— ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—๋งŒ ๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค.
# ์ž๋™ ์Šน์ธ & ์ ์šฉ
# ๊ณง๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ Plan์„ -auto-approve ์˜ต์…˜์œผ๋กœ ์Šน์ธํ•ด ์‹ค์ œ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
# terraform apply -auto-approve ๋Š” ์•”๋ฌต์  plan ํ›„ ๊ณง๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋ฉฐ, ์ค‘๊ฐ„์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.




# tfplan์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด

# 1. plan & ์ €์žฅ
terraform plan -out=tfplan -var-file="terraform.tfvars"

# 2. Apply & ์ž๋™ ์Šน์ธ
terraform apply -auto-approve tfplan

# tflan ํŒŒ์ผ์„ ์“ฐ๋Š” ์ด์œ ๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 
# ์•ˆ์ „์„ฑ ํ™•๋ณด : -out=tfplan ์œผ๋กœ ๊ณ„ํš์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด ๋‘๋ฉด, ์—”์ œ๋“  terraform show tfplan ์œผ๋กœ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋‹ค์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
# ํ”„๋กœ์„ธ์Šค ๋ถ„๋ฆฌ : ํŒ€ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค, CI ๋‹จ๊ณ„ ๋ถ„๋ฆฌ(Plan ๋‹จ๊ณ„ -> ์‚ฌ๋žŒ ์Šน์ธ -> Apply ๋‹จ๊ณ„) ๋“ฑ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

3. ์ฃผ์š” ์žฅ์ 

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

 

 

'DevSecOps > ํด๋ผ์šฐ๋“œ(Cloud)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Terraform ๊ตฌ์„ฑ ์š”์†Œ  (0) 2025.05.31
Zero Trust ๋ž€?  (1) 2025.05.29
Okta ๋ž€?  (3) 2025.05.29
Cloudflare ์ด๋ž€?  (1) 2025.05.29
CNAPP ๋ž€?  (0) 2025.05.29

๋Œ“๊ธ€