Puppet/ko

Puppet은 루비en 로 작성한 설정 관리 시스템입니다. 머신 배포 자동화 용도로 활용할 수 있습니다

설치
Puppet은 젠투 꾸러미로 제공합니다. 현재는 서버와 클라이언트간 제한이 없어 기본 설치 과정은 동일합니다.

우선 로 Puppet을 설치하십시오:

설정 및 설치
Puppet 은 주로 INI 방식의 형식을 지닌 파일로 설정합니다. 주석은 해시 기호 (#)로 표시합니다. 설정 파일은 몇가지 섹션 또는 블록으로 구분합니다:


 * [main] 에는 다음 섹션에서 설정을 바꾸기 전까지는 Puppet이 기본적으로 동작하도록 하는 모든 부분에 대한 설정이 들어있습니다:
 * [master] 는 Puppetmaster(puppet master), 또는 CA 도구 (puppet cert)에 적용하는 설정이 들어있습니다
 * [agent] 는 Puppet agent (puppet agent)에 적용하는 설정이 들어있습니다

그 밖의 블록과 마찬가지로 더 많은 설명을 찾으신다면 공식 Puppet 문서를 확인하십시오. 또한 모든 설정 목록 을 통해 서버 또는 클라이언트에 적용할 설정 방식을 알아볼 수 있습니다.

서버(Puppetmaster) 설정
이빌드가 에 넣은 기본 설정은 그대로 활용할 수 있습니다. Puppet 2.7.3에서는 다음과 같이 서버 관련 부분이 들어있습니다:

파일 서버 설정
파일을 클라이언트에 보내려면, 파일 서버를 설정해야합니다. 를 설정하시면 됩니다. 기본적으로 전달하는 파일은 없습니다.

The snippet above sets up a share called files</tt> (remember this identifier, as it will need to be referenced later), looking for files in and only available for hosts with an IP from the 192.168.0.0/24 network. You can use IP addresses, CIDR notation, and host names (including wildcards like *.domain.invalid</tt>) here. The deny</tt> command can be used to explicitly deny access to certain hosts or IP ranges.

Puppetmaster 데몬 시작
초기 파일 서버 설정과 기본 설정이 끝나면 Puppetmaster 데몬을 초기화 스크립트로 시작할 수 있습니다.

처음 시작하는 동안 Puppet에서 Puppetmaster 호스트용으로 SSL 인증서를 생성하며 위에서 설정한대로 ssldir</tt>에 복사합니다.

8140/TCP 포트에서 대기하므로, 클라이언트의 접근을 방해하는 방화벽 규칙이 있는지 확인하십시오.

간단한 매니페스트
Puppet의 용어로 매니페스트가 있는데, 클라이언트 설정을 지정한 파일을 의미합니다. 문서를 찾아보시면 활용 안내서<sup style="color:#ff0077>en 가 있는데 여기에 매니페스트 마크업 언어에 대한 설명이 있습니다.

간단한 예제로 오늘의 메시지(MOTD)를 만들어보겠습니다. Puppetmaster에서 앞서 만든 files</tt> 공유 경로에 파일을 만드십시오:

그 다음 manifests</tt> 디렉터리에 주 manifest 파일을 만들겠습니다. 이 파일은 site.pp</tt> 입니다:

The default</tt> node (the name for a client) definition is used in case there is no specific node</tt> statement for the host. We use a file</tt> resource and want the file on our clients to contain the same thing as the motd</tt> file in the files</tt> share on the host puppet</tt>. If your puppetmaster is reachable only using another host name, you have to adapt the source</tt> URI accordingly.

Client Configuration
During the first execution of the Puppet agent, you have to wait for your certificate to be signed by the puppetmaster. To request a certificate, and run your first configuration run, execute:

Before the client can connect, you have to authorize the certificate request on the server. Our client should appear in the list of nodes requesting a certificate:

Now, we grant the request:

The client will check every 60 seconds whether its certificate has already been issued. After that, it continues with the first configuration run:

When you're seeing this message, all went well. You can now check the contents of your file on the client:

You can now start the puppet agent as a deamon and have it launch on boot:

인증서 직접 발급
인증서를 직접 생성한다면 유틸리티를 활용할 수 있습니다. 이 유틸리티는 생성한 인증서를 puppet 설정 디렉터리인 ssldir</tt>에 넣고 로컬 Puppet 인증서(CA)의 키에 서명합니다.

only one Common Name 인증서 생성의 쉬운 예를 들겠습니다.

인증서상 유효한 다중 호스트 이름이 필요하다면, --certdnsnames</tt> 매개 변수를 활용하고 추가 호스트 이름을 콜론으로 구분하십시오:

이 예제에서는 3가지 호스트 이름을 유효하다고 판단하는 인증서를 만듭니다.

Puppet에서 슬롯 관리하기
Puppet의 기본 포티지 제공자에서 슬롯을 지원하지 않기 때문에 찾으려는 기능을 추가하는 모듈은 따로 존재합니다.
 * puppet-portage
 * PortageGT

외부 자료

 * 업스트림 웹사이트
 * Puppet 위키