Search

Packer๋ž€?

Date
2025/11/08
Category
Devops
Tag
IaC
๋ชฉ์ฐจ

ย Overall

ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ, ์„œ๋ฒ„ ์ด๋ฏธ์ง€๋ฅผ ๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ ์„ธํŒ…ํ•˜๋Š” ๊ณผ์ •์€ ์‹œ๊ฐ„๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ํ™˜๊ฒฝ๋ณ„ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋„ ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด HashiCorp์—์„œ ๋งŒ๋“  ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ Packer๋‹ค.

ย Packer

Packer๋Š” HashiCorp์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ๋กœ, ๋‹จ์ผ ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์˜ ๋™์ผํ•œ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
Packer๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด
โ€ข
AWS, Azure, GCP, VMware, VirtualBox ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•œ ์„ค์ •์˜ ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๊ณ ,
โ€ข
๋นŒ๋“œ ๊ณผ์ •์—์„œ ์Šคํฌ๋ฆฝํŠธ๋‚˜ Ansible, Chef, Puppet ๋“ฑ์„ ์ด์šฉํ•ด ํ•„์š”ํ•œ ์„ค์ •์„ ๋ฏธ๋ฆฌ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, ํ•œ ๋ฒˆ์˜ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฐœ๋ฐœ, ์Šคํ…Œ์ด์ง•, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํ•ต์‹ฌ์ด๋‹ค.
ย ์ฐธ๊ณ 
๊ณผ๊ฑฐ์—๋Š” Packer ์„ค์ • ํŒŒ์ผ๋กœ JSON ํฌ๋งท์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ํ˜„์žฌ๋Š” HCL2(HashiCorp Configuration Language v2)๊ฐ€ ํ‘œ์ค€์ด๋ฉฐ JSON์€ Deprecated ์ƒํƒœ์ด๋‹ค.
JSON ํ…œํ”Œ๋ฆฟ์ด ์—ฌ์ „ํžˆ ์ง€์›๋˜๊ธด ํ•˜์ง€๋งŒ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์€ JSON์— ๋ฐ”๋กœ ์ ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” .pkr.hcl ํ˜•์‹์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
JSON โ†’ HCL2 ๋ณ€ํ™˜์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์ž:
ย JSON to HCL2 | HashiCorp Developer

ย Key features

์ž๋™ํ™” (Automation)

โ€ข
Packer๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๊ณผ์ •์„ ์™„์ „ํžˆ ์ž๋™ํ™”ํ•œ๋‹ค.
โ€ข
์ˆ˜๋™์œผ๋กœ AMI๋ฅผ ๊ตฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๊ณ , ํ™˜๊ฒฝ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณ‘๋ ฌ ๋นŒ๋“œ (Parallel Builds)

โ€ข
ํ•˜๋‚˜์˜ ์„ค์ • ํŒŒ์ผ๋กœ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋™์‹œ์— ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์ผํ•œ ๊ตฌ์„ฑ์„ AWS EC2์™€ GCP Compute Engine์— ๋ณ‘๋ ฌ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ (Infrastructure as Code)

โ€ข
Packer์˜ ์„ค์ • ํŒŒ์ผ์€ HCL2(HashiCorp Configuration Language) ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋œ๋‹ค.
โ€ข
๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, Git์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
โ€ข
Terraform ๋“ฑ ๋‹ค๋ฅธ HashiCorp ๋„๊ตฌ์™€์˜ ํ˜ธํ™˜์„ฑ๋„ ๋†’์•„ IaC ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค.

ํ™•์žฅ์„ฑ (Extensibility)

โ€ข
Packer๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ง„๋‹ค.
โ€ข
์ƒˆ๋กœ์šด ํ”Œ๋žซํผ, ๋นŒ๋”(Builder), ํ”„๋กœ๋น„์ €๋„ˆ(Provisioner), ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์„œ(Post-Processor)๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
๋˜ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋„ ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

๋‹ค๋ฅธ ๋„๊ตฌ์™€์˜ ํ†ตํ•ฉ (Integration)

โ€ข
Packer๋Š” HashiCorp ์ƒํƒœ๊ณ„์™€ ๊ฐ•๋ ฅํ•˜๊ฒŒ ํ†ตํ•ฉ๋œ๋‹ค.
โ—ฆ
Terraform๊ณผ ์—ฐ๋™ํ•ด, Packer๋กœ ์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ธํ”„๋ผ ์ฝ”๋“œ ๋‚ด์—์„œ ์ง์ ‘ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
โ—ฆ
Vault์™€ ํ†ตํ•ฉํ•ด, ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ ๋ฏผ๊ฐํ•œ ์ž๊ฒฉ ์ฆ๋ช… ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
์ด ๋•๋ถ„์— DevOps ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ CI/CD ์ž๋™ํ™”์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

์ปค์Šคํ„ฐ๋งˆ์ด์ง• (Customization)

โ€ข
์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ • ์ค‘ Shell Script, Ansible Playbook, Chef Recipe, Puppet Module ๋“ฑ์„ ์‹คํ–‰ํ•˜์—ฌ
โ€ข
์ด๋ฏธ์ง€ ๋‚ด๋ถ€ ํ™˜๊ฒฝ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด Jenkins, Docker, Nginx ๋“ฑ์„ ๋ฏธ๋ฆฌ ์„ค์น˜ํ•œ AMI๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

ย Installation

Packer๋Š” Homebrew๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
# 1. HashiCorp ์ €์žฅ์†Œ ๋“ฑ๋ก brew tap hashicorp/tap # 2. Packer ์„ค์น˜ brew install hashicorp/tap/packer # 3. Amazon ๊ด€๋ จ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ (AWS EC2 AMI ์ƒ์„ฑ์šฉ) # ์ฐธ๊ณ : plugin์€ packer ์ฝ”๋“œ ๋‚ด์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋ฐ˜๋“œ์‹œ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์‚ฌํ•ญ์€ ์•„๋‹ˆ๋‹ค packer plugins install github.com/hashicorp/amazon
Bash
๋ณต์‚ฌ
์ฐธ๊ณ  ๋ฌธ์„œ

ย ๋งˆ๋ฌด๋ฆฌ

Packer๋Š” ๋‹จ์ˆœํžˆ ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“œ๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹Œ ๋นŒ๋“œ ์ž๋™ํ™”, ํ™˜๊ฒฝ ์ผ๊ด€์„ฑ, ์ธํ”„๋ผ ์ฝ”๋“œํ™”๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ DevOps ๋„๊ตฌ๋‹ค. Terraform๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
Packer -> (AMI ์ƒ์„ฑ) -> Terraform -> (EC2 Instance ๋ฐฐํฌ)
Plain Text
๋ณต์‚ฌ
Dev๋ถ€ํ„ฐ Prod๊นŒ์ง€ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„  Packer๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.