Puppet이란 무엇인가?
Puppet은 구성 관리(configuration management)를 중앙 집중화하고 자동화하는 오픈소스 시스템 관리 도구입니다. 여기서 구성 관리란 기업의 하드웨어와 소프트웨어에 관한 정보를 상세하게 기록하고 지속적으로 최신 상태로 유지하는 작업을 의미합니다.
Puppet의 아키텍처와 작동 방식
Puppet은 두 개의 계층으로 구성됩니다. 첫 번째는 호스트와 서비스가 어떤 상태여야 하는지를 기술하는 구성 언어이며, 두 번째는 관리자가 Unix, Linux, Windows, OS X 등 다양한 플랫폼 위에서 동일한 구성을 적용할 수 있게 해주는 추상화 계층입니다.
관리자는 서비스의 구성을 정책(policy) 형태로 코드화할 수 있으며, Puppet은 해당 정책을 지속적으로 모니터링하고 시스템에 강제로 적용하여 설정의 일관성을 유지합니다.
개발 언어와 에디션 비교
Puppet은 Ruby로 작성되었으며, 모듈을 생성하고 관리하기 위해 자체적인 도메인 특화 언어(DSL)를 사용합니다.
Puppet 구성 관리의 기본 버전인 Open Source Puppet은 Puppet 공식 웹사이트에서 바로 내려받을 수 있으며 Apache 2.0 라이선스로 배포됩니다. 반면 상용 버전인 Puppet Enterprise는 오케스트레이션, 역할 기반 접근 제어(RBAC), 컴플라이언스 보고 등의 추가 기능을 제공합니다.
Puppet 생태계(Ecosystem)
Puppet Labs 웹사이트는 인프라를 코드(infrastructure as code)로 기술하고 관리할 수 있도록 다양한 커뮤니티 모듈을 제공합니다. Puppet Labs는 Open Source Puppet과 이러한 커뮤니티 모듈 간의 시너지를 Puppet 생태계라고 부릅니다.
주요 Puppet 생태계 모듈
- Puppet Forge — 사용자가 직접 제작해 공유한 4,000개 이상의 사전 빌드 모듈에 접근할 수 있는 저장소입니다.
- Beaker — 여러 가상 머신(VM) 간 상호작용에 대한 인수 테스트(acceptance testing)에 특화된 테스트 하네스입니다.
- Facter — 노드의 하드웨어 세부 정보, 네트워크 설정, 운영체제(OS) 유형 및 버전 등 기본 정보를 수집하는 도구입니다.
- Hiera — 구성 데이터를 위한 키/값(key/value) 조회 도구입니다.
- MCollective — 서버 오케스트레이션 또는 병렬 작업 실행 시스템을 구축하기 위한 프레임워크입니다.
- PuppetDB — 모든 노드에 대한 정보를 저장하는 검색 가능한 데이터베이스입니다.
- Razor — 베어메탈 VM과 가상 시스템을 자동으로 발견하고 배포하는 고급 프로비저닝 애플리케이션입니다.
- Trapperkeeper — 장기 실행(long-running) 애플리케이션 호스팅을 위한 Clojure 프레임워크입니다.
Puppet Labs는 Puppet을 활용해 인프라 관리를 자동화하는 과정을 소개하는 개요 영상도 함께 제공하고 있습니다.
함께 보기: 정책 기반 관리(policy-based management)