본문 바로가기

오픈소스

Packer란? (1) 개념 소개, 설치 방법

반응형

Intro

모놀리틱 클라우드 인프라 환경에서 신규 배포가 진행될 때, 이미지를 사용해 유연한 클라우드 인프라를 구성할 수 있습니다. 신규 서비스가 준비된 VM 이미지를 만들고 해당 이미지를 사용해 동일한 VM를 여러 대 배포할 수 있죠.

(여기서 말하는 이미지는 VM의 특정 상태를 그대로 저장하고, 나중에 재사용 가능하도록 생성한 자원을 뜻합니다)


이미지는 만드는 과정은 작업자가 깡통 VM을 생성하고 SSH에 접속한 후, yum 등의 패키지 관리 도구를 통해 프로그램을 설치하며,, 빌드된 파일을 업로드,, 특정 변수를 설정하는 등,, 수많은 작업이 있습니다.

하지만 이 모든 과정이 사람의 수작업으로 이루어진다면?
Human error의 가능성이나 이력 관리, 생산성 등 여러 문제가 발생합니다.

이번 포스팅에서는 이미지 생성의 모든 과정을 자동화하는 강력한 범용 이미지 빌드 도구인 Packer에 대해 설명합니다.

Packer 란? (개념 및 구성 요소)

다해먹는 Hashicorp ..

Pakcer는 소스 기반으로 VM 이미지를 만드는 인프라 관리 도구입니다. 
 
 

1) 장점

멀티 플랫폼의 확장성과 다양한 Provisoner 지원
VMWare, AWS, GCP, Azure 등 다양한 플랫폼을 지원하고 쉘스크립트나 Ansible, Chef 등과 통합되기 때문에 강력한 성능을 가지고 있죠.
 
Gitops에 부합하는 소스 기반 서비스
소스 기반으로 빌드가 진행되기 때문에 1) 선언형 모델의 성질, 2) SSOT(단일 진실 공급원)의 성질을 가지고 있는데요. 이를 통해 빠르고 가시성 있으며, 재사용이 가능하고, 추적 가능한 이미지 빌드가 가능합니다.
 

2) 구성 요소

Packer는 Template(템플릿) 이라는 소스 코드를 담은 파일을 통해 동작하며, 템플릿은 Builder(빌더)Provisioner(프로비저너)로 구성됩니다. 템플릿, 빌더와 프로비저너에 대한 설명을 간단히 하자면 아래와 같습니다.

구성요소 설명
Template (템플릿) Builder와 Provisoner 소스코드를 담고 있는 파일. json / hcl2 형식을 가지고 있습니다.
Builder (빌더) 어떤 플랫폼에서 / 어떤 이미지를 기반으로 / 어떤 이미지를 생성할지를 정의합니다.
*HCL2 문법 상에서 source로 표현됨
Provisioner (프로비저너) Builder에서 정의한 플랫폼 내 이미지를 바탕으로, 어떤 작업을 수행시킬지 정의합니다.
*HCL2 문법 상에서 build로 표현됨

구성요소에 대해 간단히 설명을 드렸지만, 100% 이해가 어려울 수 있습니다. 아래의 동작 방식을 보신다면 조금 더 와닿으실 것 같네요.

동작 방식

설치 방법

윈도우와 리눅스 모두 제공하나, 해당 포스팅에서는 로컬용인 MacOS와 Packer 서버용 CentOS를 기준으로 가이드합니다.

1) MacOS

$ brew tap hashicorp/tap

 

$ brew install hashicorp/tap/packer


2) CentOS

$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
$ sudo yum -y install packer

 
3) Amzn Linux

$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
$ sudo yum -y install packer


해당 포스팅에서 Packer의 개념과 구성요소, 동작원리와 간단한 설치 방법에 대해 알아보았습니다.
다음에는 Ansible을 Provisoner로 설정하여 이미지를 생성하는 법에 대해 다룰 예정입니다.

다음 포스팅 👉Packer란? (2) Packer EC2 이미지(AMI) 생성 with Ansible

배워가며 작성하는 블로그입니다.
피드백 및 의견 환영입니다 🙂

반응형

'오픈소스' 카테고리의 다른 글

Packer란? (2) Packer EC2 이미지(AMI) 생성 with Ansible  (1) 2023.05.06