๐ Terraform Day 20: ๋ง์ถค Terraform ๋ชจ๋์ ์ฌ์ฉํ ํ๋ก๋์ ์ธํ๋ผ ๊ตฌ์ถ
Source: Dev.to
๐ง Terraform ๋ชจ๋์ด๋?
Terraform ๋ชจ๋์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ, ์์ฒด ํฌํจ๋ Terraform ์ฝ๋ ํจํค์ง์ ๋๋ค.
๋ชจ๋์ ์ผ๋ฐ์ ์ผ๋ก ํฌํจ๋๋ ํ์ผ:
main.tfโ ๋ฆฌ์์คvariables.tfโ ์ ๋ ฅ๊ฐoutputs.tfโ ๋ ธ์ถ๋๋ ๊ฐ
Terraform์ ๋ชจ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ชจ๋๋ก ์ทจ๊ธํฉ๋๋ค.
๋ชจ๋์ ์ฌ์ฉํ๋ฉด:
- ๋ณต์ก์ฑ ์บก์ํ
- ํ์ค ๊ฐ์ ์ ์ฉ
- ์ธํ๋ผ ํจํด ์ฌ์ฌ์ฉ
- ํ ๋ฐ ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์น ๊น๋ํ ํ์ฅ
๐งฉ Terraform ๋ชจ๋ ์ข ๋ฅ
1๏ธโฃ ํผ๋ธ๋ฆญ ๋ชจ๋
- Terraform Registry์์ ์ ๊ณต
- ๊ณต๊ธ์ ๋๋ ์ปค๋ฎค๋ํฐ๊ฐ ์ ์ง ๊ด๋ฆฌ
- ๋ด๋ถ์์ ์์ ํ ์ ์์
2๏ธโฃ ํํธ๋ ๋ชจ๋
- HashiCorp์ ํํธ๋๊ฐ ๊ณต๋ ๊ด๋ฆฌ
- ๊ฒ์ฆ๋ ํ๋ก๋์ ์ค๋น ์ํ
- ์ฌ์ ํ ์ธ๋ถ์์ ์ ์ด
3๏ธโฃ ์ปค์คํ ๋ชจ๋ (Dayโฏ20์ ์ด์ )
- ์ฌ๋ฌ๋ถ์ด๋ ์กฐ์ง์ด ์ง์ ์์ฑยท์ ์ง ๊ด๋ฆฌ
- ์ฝ๋, ๋ฒ์ ๊ด๋ฆฌ, ๋ณด์, ์ ๋ฐ์ดํธ์ ๋ํ ์์ ํ ์ ์ด
ํ๋ก๋์ ์์คํ ์ ์ปค์คํ ๋ชจ๋์ ํฌ๊ฒ ์์กดํฉ๋๋ค.
๐ ๋ฃจํธ ๋ชจ๋ vs ์ปค์คํ ๋ชจ๋
๐น ๋ฃจํธ ๋ชจ๋
- Terraform ํ๋ก์ ํธ์ ์ง์ ์
terraform init์terraform apply๊ฐ ์คํ๋๋ ์์น- ์ ์ฒด ์ธํ๋ผ๋ฅผ ์ค์ผ์คํธ๋ ์ด์
- ์ปค์คํ ๋ชจ๋์ ์์คํ๊ณ ์ฐ๊ฒฐ
๐น ์ปค์คํ ๋ชจ๋
- ๋ฃจํธ ๋ชจ๋ ๋ด๋ถ์ ์๋ธ๋๋ ํฐ๋ฆฌ๋ก ์ ์ฅ
- ๊ฐ ๋ชจ๋์ ๋จ์ผ ์ฑ ์์ ๊ฐ์ง
- ์๋ก ์ง์ ํต์ ํ์ง ์์
- ๋ฃจํธ ๋ชจ๋์ด ์ค์ ์ฝ๋๋ค์ดํฐ ์ญํ ์ํ
๐ ์ ํ์ ์ธ ํ๋ก์ ํธ ๊ตฌ์กฐ (Dayโฏ20 ์คํ์ผ)
terraform-project/
โโโ main.tf # Root module
โโโ variables.tf
โโโ outputs.tf
โโโ modules/
โ โโโ vpc/
โ โ โโโ main.tf
โ โ โโโ variables.tf
โ โ โโโ outputs.tf
โ โโโ eks/
โ โ โโโ main.tf
โ โ โโโ variables.tf
โ โ โโโ outputs.tf
โ โโโ iam/
โ โโโ secrets/
๊ฐ ๋ชจ๋์ ํ๋์ ์ธํ๋ผ ๋๋ฉ์ธ์ ์บก์ํํฉ๋๋ค.
๐ ๋ชจ๋ ๊ฐ ์ํธ์์ฉ (๋งค์ฐ ์ค์)
์ปค์คํ ๋ชจ๋์ ์๋ก ์ง์ ํต์ ํ์ง ์์ต๋๋ค. ๋ชจ๋ ํต์ ์ ๋ฃจํธ ๋ชจ๋์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค:
- ๋ฃจํธ ๋ชจ๋์ด ์ปค์คํ ๋ชจ๋์ ํธ์ถํฉ๋๋ค.
- ์ ๋ ฅ ๋ณ์๋ค์ ์ ๋ฌํฉ๋๋ค.
- ์ปค์คํ ๋ชจ๋์ด ๋ฆฌ์์ค๋ฅผ ์์ฑํฉ๋๋ค.
- ์ปค์คํ ๋ชจ๋์ด ์ถ๋ ฅ๊ฐ์ ๋ ธ์ถํฉ๋๋ค.
- ๋ฃจํธ ๋ชจ๋์ด ์ถ๋ ฅ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
- ์ถ๋ ฅ๊ฐ์ด ๋ค๋ฅธ ๋ชจ๋์ ์ ๋ ฅ๊ฐ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด:
- ๋์จํ ๊ฒฐํฉ
- ๋ช ํํ ์์กด ํ๋ฆ
- ์ ์ง ๋ณด์ ๊ฐ๋ฅํ ์ํคํ ์ฒ
๐ ์์: VPC โ EKS ์์กด ํ๋ฆ
- VPC ๋ชจ๋์ด
vpc_id๋ฅผ ์ถ๋ ฅํฉ๋๋ค. - ๋ฃจํธ ๋ชจ๋์ด
vpc_id๋ฅผ ๋ฐ์ ์ ์ฅํฉ๋๋ค. - ๋ฃจํธ ๋ชจ๋์ด
vpc_id๋ฅผ EKS ๋ชจ๋์ ์ ๋ฌํฉ๋๋ค. - EKS ๋ฆฌ์์ค๊ฐ ์ฌ๋ฐ๋ฅธ VPC ์์์ ์์ฑ๋ฉ๋๋ค.
์ธํ๋ผ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ์ด ํจํด์ ๊น๋ํ๊ฒ ํ์ฅ๋ฉ๋๋ค.
๐ฅ ๋ชจ๋ํ ์ค๊ณ์์ ๋ณ์์ ์ถ๋ ฅ
๋ณ์
- ๋ชจ๋์ด ๊ธฐ๋ํ๋ ๊ฐ์ ์ ์ํฉ๋๋ค.
- ๋ฃจํธ ๋ชจ๋์์ ์ ๋ฌ๋ฉ๋๋ค.
- ๋ชจ๋์ ์ ์ฐํ๊ฒ ์ ์งํฉ๋๋ค.
์ถ๋ ฅ
- ๋ชจ๋์ด ์ธ๋ถ์ ๋ ธ์ถํ๋ ๊ฐ์ ์ ์ํฉ๋๋ค.
- ๋ฃจํธ ๋ชจ๋์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ชจ๋ ๊ฐ ์กฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ชจ๋์ ํจ์์ ๊ฐ์ด ๋์ํฉ๋๋ค: ์ ๋ ฅ โ ์ฒ๋ฆฌ โ ์ถ๋ ฅ.
๐ ๊ฒฐ๋ก
Dayโฏ20์ Terraform์ ํ์ต ๋จ๊ณ์์ ์ํคํ ์ฒ ๋จ๊ณ๋ก ์ ํํฉ๋๋ค. ์ด๋ฒ ์ธ์ ์ ํตํด ๊ฐ์กฐ๋๋ ์ ์:
- Terraform์ ๋จ์ํ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ.
- Terraform์ ์์คํ ์ ์ค๊ณํ๋ ๋๊ตฌ์ด๋ค.
- ์ปค์คํ ๋ชจ๋์ด ํ๋ก๋์ IaC์ ํต์ฌ์ด๋ค.
๋ชจ๋ํ Terraform ์ํคํ ์ฒ๋ฅผ ๋ง์คํฐํ๋ฉด ๋๊ท๋ชจ, ์ ์ง ๋ณด์ ๊ฐ๋ฅํ ์ํฐํ๋ผ์ด์ฆ ๊ธ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ๊ตฌ์ถํ ์ ์๋ ๋ฅ๋ ฅ์ ์ป๊ฒ ๋ฉ๋๋คโ์ค์ ํ์ฅ์์ Terraform์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.