Packer 통합 프로그램

Packer 통합 프로그램 (Packer Integration Program)

HashiCorp Packer Integration Program은 벤더가 자신의 제품을 Packer와 함께 동작하도록 통합할 수 있게 해 주는 프로그램이에요. 이 프로그램을 통해 통합하면 고객에게 검증되고 매끄러운 사용자 경험을 제공할 수 있죠. 현재 이 프로그램은 Go 프로그래밍 언어로 코드를 작성하는 경우만 지원해요. 기본적으로는 정보 소스에 대한 링크와 안내, 명확히 정의된 단계와 체크포인트를 제공하는 셀프 서비스 방식의 절차라고 보면 돼요.

출처: Packer 공식 문서

본문

Packer 통합의 유형 (Types of Packer integrations)

Packer는 단일 소스 설정으로부터 여러 플랫폼을 위한 동일한 머신 이미지를 만드는 커뮤니티 도구예요. Packer는 가볍고 모든 주요 운영체제에서 실행되며, 여러 플랫폼용 머신 이미지를 병렬로 만들어 성능도 뛰어나요. Packer는 Chef나 Puppet 같은 설정 관리(configuration management) 도구를 대체하지 않아요. 오히려 이미지를 빌드할 때 Chef나 Puppet 같은 도구를 사용해 이미지에 소프트웨어를 설치할 수 있답니다.

머신 이미지(machine image)는 사전 구성된 운영체제와 설치된 소프트웨어를 담고 있는 단일 정적 단위로, 새 실행 머신을 빠르게 만드는 데 사용돼요. 머신 이미지 형식은 플랫폼마다 달라져요. 예를 들어 EC2용 AMI, VMware용 VMDK/VMX 파일, VirtualBox용 OVF export 등이 있죠. Packer의 사용 사례를 더 알고 싶다면 Use Cases - Introduction | Packer by HashiCorp를 확인하세요.

아래 다이어그램은 주요 Packer 통합 범주와 유형을 보여줘요.

Packer Ecosystem Integration Diagram

파트너가 통합할 수 있는 주요 Packer 범주는 다음과 같아요.

  • Data Sources — 사용자가 원격 API에서 값을 가져와 Packer 설정 템플릿의 변수로 저장할 수 있게 해 줘요. 예로는 AWS secrets manager 데이터 소스가 있어요.
  • Builders — VM 수명주기를 관리해요. VM/인스턴스 실행, 그 인스턴스에 프로비저너 실행, 인스턴스 종료, 그 인스턴스로부터 아티팩트 이미지 저장을 담당하죠. 빌더는 출력 이미지 아티팩트를 만드는 데 따르는 모든 설정·정리 비용을 처리해요.
  • Provisioners — 빌더가 실행한 인스턴스에 대해 실행돼요. 일반적으로 Ansible, Puppet, Chef 같은 특정 프로비저닝 도구와 상호작용하기 위한 인터페이스를 제공해요.
  • Post-Processors — 생성된 이미지 아티팩트를 관리해요. 아티팩트에 압축 도구를 실행하는 것 같은 일반적인 일이 될 수도 있고, 특정 클라우드 서비스에 업로드하는 것 같은 구체적인 일이 될 수도 있어요.

개발 프로세스 (Development process)

Packer 통합 개발 프로세스는 여섯 단계로 나뉘어요. 이 단계를 따르면 HashiCorp와 함께 통합을 개발해, 가능한 빨리 Packer에서 검증되고 지원될 수 있게 해요. 셀프 가이드 단계를 시각화한 그림이 아래에 있어요.

개별 Packer 통합 단계는 다음과 같아요.

  • Engage: 벤더와 HashiCorp 사이의 최초 접촉
  • Enable: 통합 개발을 돕기 위한 정보 및 문서
  • Dev/Test: 통합 개발 및 테스트 프로세스
  • Review: HashiCorp의 코드 리뷰 및 통합 검증 (반복적인 과정)
  • Release: HashiCorp 기술 파트너십 계약이 체결되면 검증된 통합이 제공되고 HashiCorp 웹사이트에 등재
  • Support: 벤더에 의한 프로바이더의 지속적인 유지보수 및 지원

Engage

간단한 웹폼을 통해 구축 중인 통합에 대한 기본 정보를 먼저 제공하는 것으로 시작해요. 이 정보는 기록되어 HashiCorp가 통합을 여러 단계를 거쳐 추적하는 데 사용돼요. 또한 커뮤니티에서 나올 수 있는 중복 작업을 통합 개발자에게 알리는 데도 쓰여, 자원을 더 잘 집중할 수 있게 해 줘요. Packer에는 활발한 커뮤니티와 파트너 생태계가 있어서 비슷한 통합을 이미 시작한 사람이 있을 수도 있어요. 중복 작업을 피하기 위해 비슷한 당사자들을 연결해 드리도록 노력할게요.

Enable

필수는 아니지만, HashiCorp는 벤더가 통합 과정에서 공개적인 대화와 아이디어 공유를 위해 MNDA(Mutual Non-Disclosure Agreement, 상호 비밀유지계약)에 서명하도록 권장해요. 셀프 서비스 모델을 지원하기 위해 Packer 통합 개발·테스트 과정을 안내할 리소스, 문서, 예시, 모범 사례에 대한 링크를 넣어뒀어요.

  • 벤더 확장 가이드 작성하기
  • 파트너가 구현한 샘플 개발
  • 새 기여를 부트스트랩하는 데 도움이 되는 스캐폴딩 플러그인 저장소
  • Packer 기여 가이드라인
  • Packer 개발자 커뮤니티 포럼
  • Packer의 소스 코드

벤더분들은 위 안내를 잘 따라주시길 권장해요. 같은 구조와 코딩 패턴을 채택하면 리뷰와 릴리스 주기를 앞당기는 데 도움이 돼요.

Develop and test (개발 및 테스트)

Packer는 모든 코드 수준 통합이 Go 프로그래밍 언어로 작성되고 MPL-2.0 오픈소스 라이선스를 포함하도록 요구해요. 플러그인을 작성하는 데 필요한 지식은 기본적인 커맨드라인 스킬과 Go 언어에 대한 지식뿐이에요. HashiCorp가 보기에 Go로 작성할 때, 벤더가 리소스를 주의 깊게 따르고 같은 구조와 코딩 패턴을 채택하면 통합 개발 프로세스는 간단하고 명확해져요. 모든 통합의 주요 단계에는 인수 테스트(acceptance testing)와 적절한 문서가 포함돼야 한다는 점을 꼭 기억하세요.

Data Sources

  • 커스텀 데이터 소스 문서
  • 예시 데이터 소스

Builders

  • 커스텀 빌더 문서
  • 예시 빌더

Provisioners

  • 커스텀 프로비저너 문서
  • 예시 프로비저너

Post-Processors

  • 커스텀 포스트-프로세서 문서
  • 예시 포스트-프로세서

Packer-Plugin-SDK

  • Packer-plugin SDK에는 SSH 연결 처리나 기본 플러그인 아키텍처 같은 공통적인 요구사항을 돕는 도구가 들어 있어요.

Review

리뷰 과정에서 HashiCorp는 새로 개발된 통합에 대한 피드백을 제공해요. 이 단계는 HashiCorp가 통합을 리뷰하고 검증할 수 있게 하는 중요한 단계예요. 검증을 위해 통합 코드와 관련 로그를 [email protected]으로 보내주세요.

Packer에 플러그인을 문서화하려면 Packer 프로젝트에 GitHub 풀 리퀘스트(PR)를 제출하세요. 원격 플러그인 문서를 Packer에 등록하는 방법은 Registering Plugin Documentation을 참고하세요.

리뷰 프로세스는 완료까지 시간이 걸릴 수 있고, HashiCorp 팀이 식별한 문제를 해결하기 위해 코드를 몇 차례 반복해야 할 수도 있어요.

Release

이 단계에서는 통합이 완전히 완성되고, 필요한 문서가 작성되고, 인수 테스트가 모두 통과하고, HashiCorp가 통합을 리뷰했다고 기대해요. 플러그인이 HashiCorp에 의해 검증되고 승인되면, GitHub에 호스팅되어 Packer 안에서 쉽게 다운로드하고 설치할 수 있게 돼요.

통합이 릴리스되면 벤더는 HashiCorp Technology Partner Agreement에 서명해 달라는 요청을 받아요. 그래야 통합이 HashiCorp 웹사이트에 등재될 수 있어요.

Support

많은 벤더는 릴리스 단계를 여정의 끝으로 보지만, HashiCorp는 그것을 여정의 시작으로 봐요. 통합을 구축하는 것은 사용자가 인프라에서 활용할 수 있게 하는 첫 단계에 불과해요. 개발이 완료되면 통합을 지원하고 플러그인을 유지보수하며 문제를 시의적절하게 해결하기 위한 지속적인 노력이 필요해요.

벤더/파트너에게 기대하는 것은 지속적으로 모든 이슈를 추적하고 해결할 메커니즘을 만드는 것이에요. 통합을 지원하지 않기로 선택한 벤더는 검증된 통합으로 간주되지 않고 웹사이트에 등재될 수 없어요.

체크리스트 (Checklist)

아래는 통합 과정에서 따라야 할 순서가 매겨진 체크리스트예요. 위 섹션들에서 이미 문서화한 단계를 다시 한 번 정리한 것뿐이에요.

  • Packer 통합 웹폼 작성
  • 필요하면 HashiCorp MNDA(Mutual Non-Disclosure Agreement) 체결
  • 인수 테스트와 문서와 함께 Packer 통합 개발 및 테스트
  • 초기 리뷰를 예약하기 위해 [email protected]으로 이메일 보내기
  • 리뷰 피드백 처리 및 개발 프로세스 완료
  • 테스트 목적으로 기반 인프라에 대한 자격증명을 HashiCorp에 제공
  • 통합을 데모하거나 테스트 로그를 [email protected]으로 보내기
  • HashiCorp Partner Agreement 문서 체결, 로고 가이드라인·파트너 등재 등 검토
  • 추가 기능으로 통합을 계속 지원하고 고객 이슈에 대응할 계획 세우기

연락처 (Contact Us)

질문이나 피드백이 있다면 [email protected]으로 연락해 주세요.