IaC ๋ฐฉ์์ผ๋ก EC2 ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ
- AWS AMI๋ฟ๋ง ์๋๋ผ Docker ์ด๋ฏธ์ง, VMware, VirtualBox, Google Cloud, Azure ๋ฑ ์ฌ๋ฌ ํ๋ซํผ์์ '์ด๋ฏธ์ง'๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ๋ค์ ๋น๋(pack)ํ ์ ์์
- ๋น์ฐํ ๊ทธ๋ฅ ๊ฐ ํ๋ซํผ ์์ฒด ๋น๋๋๊ตฌ๋ฅผ ์จ๋ ์๊ด์์
- ํนํ docker ์ด๋ฏธ์ง๋ ์์ฒด ๋น๋๋๊ตฌ๊ฐ ๊ฐ๋ ฅํ๊ณ ์๋ ๋๋ฆฌ ์ฐ์ด๊ธฐ ๋๋ฌธ์ packer ์์ฐ๋๊ฒ ๋ ์ข์๋ณด์ด๊ธฐ๋? ์ ์ด์ docker๋ DockerFile ํ ์คํธ๋ก ํํ์ด ๋๋๊น
- ์ด๋ฏธ์ง๋ฅผ ์ผ๊ด๋ IaC ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ&๊ณต์ ํ ๋ packer๊ฐ ์ ์ฉํ ๊ฒ
- ami๋ฅผ ํ ๊ณ์ , ํ ์ ์ ์๊ฒ ๊ณต์ ํ๊ธฐ ์ข์
- ํนํ, ์์ฆ์
IaC์ LLM์ด ์๋์ง๊ฐ ์ฐธ ์ข์ ๋ฏ. ์ธํ๋ผ ์ฃผ์ ๋ก ๋ํ์, ๊ท๊ฒฉํ๋ ์ฝ๋๋ก ์ฒ๋ฆฌํ๋ค๋ณด๋ ๊ฐ๊ฒฐํ๊ณ ์ค๋ฅ๋ ์ ๋ค.
- packer๋ ์ด๋ฏธ์ง ๋น๋๋ง ์ํํ๊ณ , ์ดํ ๊ด๋ฆฌ๋ ๊ด์ฌ์น ์๋๋ค. ๋น๋ ํ ์ด๋ฏธ์ง ํ์ธ, ์คํ, ์ญ์ ๋ฑ์ ๊ฐ ๊ฐ๋ณ ํ๋ซํผ์์ ์ํํด์ผ ํ๋ค.
- packer๋ก ์ด๋ฏธ์ง ๋น๋์, ํด๋น ํ๋ซํผ์ ์ฌ์ ์ค์น๊ฐ ์๊ตฌ๋ ์ ์์
- docker ์ด๋ฏธ์ง: docker ๋ฐํ์ ์ค์น ํ์
- AWS-ami: awscli ์์ผ๋ฉด ํธํ๋ฐ ์์ด๋๋๊ณ , credentials๋ ํ์
# Linux
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install packer- packer ํ ํ๋ฆฟ์ json ๋๋ HCL๋ก ๊ฐ๋ฅ
- ํฌ๋งท๋ง ๋ค๋ฅผ ๋ฟ ๊ฑฐ์ ๋์ผํ ๋ด์ฉ์ผ๋ก ์์ฑ๋จ
- ๋ ๋ค ๋ง์ด ์ฐ์ด์ง๋ง HCL์ด ๋ ์ต์ ์ฌ์์ด๊ณ ์ผ๋ถ ๋ถ๊ฐ๊ธฐ๋ฅ ๋ ์์
- HCL์ด ๋ human-level์ด๋ผ ์ฐ๊ณ ์ ์ง๋ณด์ํ๊ธฐ๋ ๋ซ๋ค.
.pkr.hcl์ HCL๋ก ์ฐ์ธ packer ํ ํ๋ฆฟ์ ์ ์ฉ ํ์ฅ์- json์ ๊ทธ๋ฅ
.json
- terraform์ด๋ ๋น์ท
- ์ธ์คํด์ค ๋์ฐ๊ณ , inline ์์คํฌ๋ฆฝํธ ์คํ๋๊ณ , ํ์ํ ์ฑ๋ค์ด ์ ์์ค์น๋๊ณ , ... ์ ์ฒด ์คํ ์ง์ผ๋ด์ผ ๋จ
packer validate {ํ ํ๋ฆฟ},packer inspect {ํ ํ๋ฆฟ}์ผ๋ก syntax,๋ฉํ๋ฐ์ดํฐ ๋ฑ์ ์ฌ์ ์ฒดํฌ ๊ฐ๋ฅ- ํ ํ๋ฆฟ์ ์ฌ๋ฌ ๊ฐ ์์ฑํด๋๊ณ , ๊ฐ ์ธ์คํด์ค๋ฅผ ๋์์ ๋ณ๋ ฌ๋ก ๋์์ ํ ์คํธํด๋ณด๋ ๊ฒ์ด ์๋ น์ด๋ผ๋ฉด ์๋ น
- github action, CI/CD ๋๊ตฌ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์์ง๋ง, ๊ฒฐ๊ตญ ์ต์ข ํ์ธ์ ์ํด์ ํ์ฐธ ๊ธฐ๋ค๋ ค์ผํ๋ ๊ฑด ๊ฐ์!
# ์ด๊ธฐํ. packer ๋ธ๋ก์ ์ง์ ๋ ํ๋ฌ๊ทธ์ธ ๋ค์ด๋ก๋
packer init template.pkr.hcl
# ํ
ํ๋ฆฟ indent ์
๋ฐ์ดํธ (๊ฐ๋
์ฑ, ์ผ๊ด์ฑ ๊ฐ์ )
packer fmt template.pkr.hcl
# syntax ๋ฐ ์ค์ ๊ฒ์ฆ
packer validate template.pkr.hcl
# variables ํ ๋น, ๋ฉํ๋ฐ์ดํฐ ๊ฒ์ฆ
packer inspect template.pkr.hcl# ๋น๋
packer build template.pkr.hcl