퍼펫 프로그램에 대하여

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 구조

  1. Puppet Master: 중앙에서 모든 노드(서버)의 설정을 관리.
  2. Puppet Agent: 각 노드에서 Puppet Master로부터 명령을 받아 실행.
  3. Manifests: 설정을 정의하는 코드 파일(.pp 확장자).
  4. Modules: 여러 개의 Manifests를 포함하는 구성 패키지.
  5. Hiera: 계층형 데이터 저장소를 활용한 설정값 관리.
  6. Facter: 시스템의 하드웨어 및 소프트웨어 정보를 수집하는 도구.

🔹 Standalone(Agentless) 구조

  • Puppet Master 없이 개별 서버에서 Puppet 실행 가능.
  • puppet apply 명령어를 사용하여 설정 적용.

3. Ubuntu에서 Puppet 설치 및 설정

3.1 Puppet Server 설치 (Master)

bash
# Puppet 저장소 추가
wget https://apt.puppet.com/puppet7-release-focal.deb
sudo dpkg -i puppet7-release-focal.deb
sudo apt update

# Puppet Server 설치
sudo apt install -y puppetserver

3.2 Puppet Server 설정

  • Puppet Server의 기본 메모리 설정 변경 (/etc/default/puppetserver):
    bash
    JAVA_ARGS="-Xms512m -Xmx512m"
  • Puppet Master 서비스 시작 및 활성화:
    bash
    sudo systemctl start puppetserver
    sudo systemctl enable puppetserver

3.3 Puppet Agent 설치

bash
sudo apt install -y puppet-agent
  • puppet.conf 수정 (/etc/puppetlabs/puppet/puppet.conf):
    ini
    [agent]
    server = puppet-master.example.com
  • Agent 실행 및 Master와 통신 확인:
    bash
    sudo systemctl start puppet
    sudo systemctl enable puppet
    puppet agent --test

4. Puppet 코드 작성 예제

4.1 Manifests 예제 (site.pp)

puppet
node 'client-node' {
package { 'apache2':
ensure => installed,
}

service { 'apache2':
ensure => running,
enable => true,
}

file { '/var/www/html/index.html':
content => "<h1>Welcome to Puppet Managed Server</h1>",
mode => '0644',
owner => 'www-data',
group => 'www-data',
}
}

  • Apache 설치 및 실행
  • 기본 홈페이지(index.html) 생성 및 권한 설정

4.2 Puppet 적용

bash
puppet apply /etc/puppetlabs/code/environments/production/manifests/site.pp

5. 추천 자료 (책 & 가이드)

📚 한글 자료

📖 영문 자료


6. 마무리

Puppet은 대규모 서버 환경에서 자동화를 위한 강력한 도구입니다. Ubuntu에서 설정하는 방법을 익힌 후, Hiera, Facter, 모듈 작성 등을 추가 학습하면 더욱 효과적으로 사용할 수 있습니다. Django 기반 웹 서비스와 함께 자동화 환경을 구축할 수도 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다