Puppet(퍼펫)은 서버 및 애플리케이션을 자동화하고 관리하는 오픈소스 구성 관리 (Configuration Management) 도구입니다. 인프라의 설정을 코드로 정의하는 Infrastructure as Code(IaC) 개념을 기반으로 하며, 대규모 서버 환경에서 일관된 설정을 유지하고 효율적인 배포를 가능하게 합니다.
1. Puppet 개요
- 개발사: Puppet Labs
- 라이선스: 오픈소스(Community Edition) 및 상용(Enterprise Edition)
- 언어: Ruby 기반
- 지원 플랫폼: Linux(Ubuntu, CentOS 등), Windows 등 다양한 OS 지원
- 주요 기능:
- 서버 및 애플리케이션 자동화
- 시스템 구성 변경 관리 및 적용
- 대규모 인프라의 중앙 집중식 관리
2. Puppet의 주요 구성 요소
Puppet은 Master-Agent 모델과 Standalone 모델을 지원합니다.
🔹 Master-Agent 구조
- Puppet Master: 중앙에서 모든 노드(서버)의 설정을 관리.
- Puppet Agent: 각 노드에서 Puppet Master로부터 명령을 받아 실행.
- Manifests: 설정을 정의하는 코드 파일(.pp 확장자).
- Modules: 여러 개의 Manifests를 포함하는 구성 패키지.
- Hiera: 계층형 데이터 저장소를 활용한 설정값 관리.
- Facter: 시스템의 하드웨어 및 소프트웨어 정보를 수집하는 도구.
🔹 Standalone(Agentless) 구조
- Puppet Master 없이 개별 서버에서 Puppet 실행 가능.
puppet apply
명령어를 사용하여 설정 적용.
3. Ubuntu에서 Puppet 설치 및 설정
3.1 Puppet Server 설치 (Master)
3.2 Puppet Server 설정
- Puppet Server의 기본 메모리 설정 변경 (
/etc/default/puppetserver
): - Puppet Master 서비스 시작 및 활성화:
3.3 Puppet Agent 설치
puppet.conf
수정 (/etc/puppetlabs/puppet/puppet.conf
):- Agent 실행 및 Master와 통신 확인:
4. Puppet 코드 작성 예제
4.1 Manifests 예제 (site.pp
)
- Apache 설치 및 실행
- 기본 홈페이지(index.html) 생성 및 권한 설정
4.2 Puppet 적용
5. 추천 자료 (책 & 가이드)
📚 한글 자료
- “Puppet을 활용한 서버 자동화” (번역본 없음, 하지만 블로그 자료 활용 가능)
- Puppet 공식 문서 (한글 일부 지원)
📖 영문 자료
- 책:
- Puppet Best Practices (Chris Barbour, Jo Rhett)
- Puppet 5 Beginner’s Guide (John Arundel)
- 공식 가이드:
6. 마무리
Puppet은 대규모 서버 환경에서 자동화를 위한 강력한 도구입니다. Ubuntu에서 설정하는 방법을 익힌 후, Hiera, Facter, 모듈 작성 등을 추가 학습하면 더욱 효과적으로 사용할 수 있습니다. Django 기반 웹 서비스와 함께 자동화 환경을 구축할 수도 있습니다.