terraform
1. Terraform ์ด๋?
์ฌ๋ฌ ํด๋ผ์ฐ๋์ ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ ์ ์๋๋ก API๋ฅผ ํธํํด ๋์ ์คํ ์์ค tool
์๋น์ค ์คํ์ ํ์ํ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋๊ตฌ๋ผ๋ ์ธก๋ฉด์ ์์ด์ Chef, Ansible๊ณผ ๊ฐ์ ํ๋ก๋น์ ๋ ๋๊ตฌ๋ก์จ ๋ถ๋ฅ๋จ
์ ์ธํ ์ธ์ด HCL (Hashicorp Configuration Language)๋ก ์ธํ๋ผ ๊ตฌ์ฑ์ ์์ฑ
ํ ๋ผํผ์ด ์ ์ธํ ์ธ์ด๋ฅผ ๋ถ์ ๋ฐ ํด๋ผ์ฐ๋ ํ๋ก๋ฐ์ด๋์ API๋ฅผ ํธ์ถ
2. Terraform ํน์ฑ
(1) Infrastructure as Code
์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ์ ์ํ์ฌ ์์ฐ์ฑ๊ณผ ํฌ๋ช ์ฑ์ ๋์ผ ์ ์์
์ ์ํ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์์ด ํจ์จ์ ์ผ๋ก ํ์ ๊ฐ๋ฅ
(2) Execution Plan
๋ณ๊ฒฝ ๊ณํ๊ณผ ๋ณ๊ฒฝ ์ ์ฉ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ์ค์๋ฅผ ์ค์ผ ์ ์์
(3) Resource Graph
์ฌ์ํ ๋ณ๊ฒฝ์ด ์ธํ๋ผ ์ ์ฒด์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ๋ฏธ๋ฆฌ ํ์ธ ๊ฐ๋ฅ
์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ์์ฑํ์ฌ ์ด ๊ทธ๋ํ๋ฅผ ๋ฐํ์ผ๋ก ๊ณํ์ ์ธ์ฐ๊ณ , ์ด ๊ณํ์ ์ ์ฉํ์ ๋ ๋ณ๊ฒฝ๋๋ ์ธํ๋ผ ์ํ๋ฅผ ํ์ธํ ์ ์์
(4) Change Automation
์ฌ๋ฌ ์ฅ์์ ๊ฐ์ ๊ตฌ์ฑ์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ณ ๋ณ๊ฒฝํ ์ ์๋๋ก ์๋ํํ ์ ์์
์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋๋ ์๊ฐ์ ์ ์ฝ ๊ฐ๋ฅ
3. Terraform Registry
ํด๋ผ์ฐ๋ ํ๋ซํผ ์ ์ด๋ฅผ ์ํด ํ์ํ ํ๋ฌ๊ทธ์ธ์ ๋ค์ด๋ฐ๊ธฐ ์ํ ์ ์ฅ์
500 ๊ฐ ์ด์์ ์๋น์ค ํ๋ก๋ฐ์ด๋ ์ง์
์๋น์ค ํ๋ก๋ฐ์ด๋์ ์ ๋ขฐ์ฑ์ ๋ฐ๋ผ 3๊ฐ์ Tier๋ก ๊ตฌ๋ถ (Official, Verified, Community)
4. HCL (Hashicorp Configuration Language)
Hashicorp ์ฌ์์ ๊ฐ๋ฐํ ์ ์ธํ ์ธ์ด (Json-Format)
Terraform์์ ๋ฆฌ์์ค๋ฅผ ์ ์ธํ๋ ์ฉ๋๋ก ์ฌ์ฉ
5. Terraform ๊ตฌ์กฐ
(1) ๊ตฌ์ฑ ๋ชจ๋
(a) Terraform CLI
ํ ๋ผํผ ๋ช ๋ น์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ณธ ๋ช ๋ น์ค ๋๊ตฌ
Terraform Core ๊ธฐ๋ฅ ํฌํจ: HCL ๋ถ์, ๊ทธ๋ํ ์์ฑ
(b) HCL (Hashicorp Configuration Language)
.tf ํ์ฅ์๋ฅผ ๊ฐ์ง ์ ์ธํ ์ธ์ด ํ์ผ
ํ๋ก๋น์ ๋ํ ๋ฆฌ์์ค๋ฅผ ์ ์ธ
(c) Terraform State File
.tfstate ํ์ฅ์๋ฅผ ๊ฐ์ง ์ํ ํ์ผ
terraform ๋์์ด ์ํ๋์์ ๋ ์๋์ผ๋ก ์์ฑ๋๋ฉฐ ํ ๋ผํผ ๋ช ๋ น์ ์คํ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅธ ์ํ์ ๋ณด ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋จ
(d) Terraform Plugin (Provider)
์ฌ์ฉํ๋ Cloud Platform (e.g. AWS, Azure)์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์ค์น
"terraform init" ๋ช ๋ น ์คํ ์์ ๋์์ผ๋ก ๋ค์ด๋ก๋๋จ
(2) Core vs. Plugins
Terraform ํน์ฑ ์, ๋ชจ๋ ํ๋ก๋ฐ์ด๋๋ฅผ ์ค์น ์์ ๋ถํฐ ์ง์ํ๊ธฐ์๋ ๋นํจ์จ์ ์
(3) Terraform ๋์ ํ๋ฆ
ํ ๋ผํผ์ ํฌ๊ฒ 4๋จ๊ณ์ ๋์ํ๋ฆ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์
(a) terraform init
Working Directory์ ํ์ํ Terraform ํ๊ฒฝ ๊ตฌ์ฑ
HCL ํ์ผ ๋ด ๋ฆฌ์์ค ๋ด์ฉ์ ๊ธฐ์ค์ผ๋ก ํ์ํ Terraform Plugin ๋ชจ๋ ์ค์น
(b) terraform plan
์ค์ ํ๋ก๋น์ ๋ ์์ ์ด์ ์ ํ๋ ์์ฑ
HCL ์ฝ๋๊ฐ ์ด๋ค ์ธํ๋ผ๋ฅผ ๋ง๋ค๊ฒ ๋ ์ง ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ฃผ๋ ๋จ๊ณ
(c) terraform apply
HCL ํ์ผ ๋ด์ฉ์ ์ค์ ์ธํ๋ผ ํ๊ฒฝ์ ์ ์ฉ (Infrastructure as a Code)
(d) terraform destroy
Terraform Apply ์ดํ์ ๋ฐฐํฌํ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ
Last updated