puppet 설치 및 설정

Puuppet 는 오픈 소스 의 차세 대 집중 화 설정 관리 도구 로 자신 이 설명 한 언어 표현 시스템 으로 설정 되 어 있 으 며 클 라 이언 트 와 서버 의 직접적인 연결 을 통 해 관계 라 이브 러 리 를 유지 하고 있 습 니 다.
  Puppet 은 크로스 플랫폼 의 집중 화 설정 관리 시스템 으로 자 유 롭 게 설명 하 는 언어 를 사용 하여 설정 파일,사용자,Cron,소프트웨어 패키지,시스템 서비스 등 을 관리 할 수 있 습 니 다.Puppet 은 이 를'자원'이 라 고 통칭 합 니 다.
  Puppet 은 Ruby 언어 를 기반 으로 Apache 프로 토 콜 에서 권한 을 수 여 받 은 오픈 소스 소프트웨어 로 클 라 이언 트-서버(C/S)방식 으로 실행 할 수도 있 고 독립 적 으로 실행 할 수도 있 습 니 다.클 라 이언 트 는 기본적으로 30 분 마다 서버 와 업 데 이 트 를 확인 하여 설정 의 일치 성 을 확보 합 니 다.
 Puppet 설치 절차
1)루비,루비-libs,루비-shadow 를 설치 하여 사용자 와 그룹 관 리 를 한다.
2)Facter,Puppet,Puppet-server 를 설치 합 니 다.
3)호스트 이름,도 메 인 이름 분석 또는 hosts 를 지정 합 니 다.
4)명령/etc/init.d/uppetmaster start 를 통 해 서버 를 시작 하거나 프로 세 스 가 아 닌 방식 으로 서버 를 시작 합 니 다.puppet master--no-daemonize--verbose 명령 을 통 해 관련 로그 와 출력 을 볼 수 있 습 니 다.
5)클 라 이언 트 설정 파일 Puppet.conf 에 Server 단 을 지정 하고 터미널 에서 Puppet agent-test 명령 을 실행 하거나 puppet agent--test--server server.domain.com 을 직접 실행 하여 Master 와 상호작용 하여 서명 인증 을 완료 합 니 다.
6)서버 에 노드 정 보 를 설정 하여 클 라 이언 트 에 게 무엇 을 해 야 하 는 지 알려 줍 니 다.
7)문법 이 정확 한 지 확인 합 니 다(전체 길 이 는 puppet parser vaidate test.pp 명령 으로 문법 검 사 를 합 니 다).
8)클 라 이언 트 가 설정 을 다시 실행 합 니 다(puppet agent--test)
 1.본 고 는 Centos 6.4 운영 체제 에서 Puppet 을 설치 하고 설정 합 니 다.
(1)운영 체제 버 전에 따라 Yum 원본 설정
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm 3

 (2)서버 쪽 에 Puppet 을 설치 합 니 다.다음 코드 를 실행 하면 Facter 설치 등 의존 패키지 와 자동 으로 일치 합 니 다.
yum -y install puppet-server

다음 명령 을 실행 하여 Puppet 의 설 치 를 검사 합 니 다.
[root@node1 ~]# puppet -V
3.7.3
[root@node1 ~]# facter -v
2.3.0

(3)클 라 이언 트 에 Puppet 을 설치 합 니 다.
yum -y install puppet

2.Puppet 설정
1)서비스의 사용 방법 은 다음 과 같다.
 :[root@node1 ~]# /etc/init.d/puppetmaster 
Usage: /etc/init.d/puppetmaster {start|stop|status|restart|reload|force-reload|condrestart|genconfig}
 :[root@node2 ~]# /etc/rc.d/init.d/puppet 
Usage: /etc/rc.d/init.d/puppet {start|stop|status|restart|reload|force-reload|condrestart|once|genconfig}

2)호스트 이름 지정 호스트 설정
[root@node1 ~]# cat /etc/hosts
192.168.254.2             node1.jiabin.com
192.168.254.5             node2.jiabin.com

[root@node2 ~]# cat /etc/hosts
192.168.254.2             node1.jiabin.com
192.168.254.5             node2.jiabin.com

3)방화벽 을 설치한다.
Puppet 은 8140 포트 를 감청 하기 때문에 8140 포트 를 개방 해 야 합 니 다.
 iptables -A INPUT -p tcp --dport 8140 -j ACCEPT

4)테스트 할 파일 을 설정 합 니 다.
[root@node1 ~]# cat /etc/puppet/manifests/site.pp 

node default {
        file {
                "/tmp/helloworld.txt": content => "hello, world";
        }
}

5)클 라 이언 트 가 인증 을 시작 합 니 다.명령 은 다음 과 같 습 니 다.
root@node2 ~]# puppet agent --server node1.jiabin.com --test
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for node2.jiabin.com
Info: Certificate Request fingerprint (SHA256): 9D:26:8A:44:54:D4:B0:2A:73:0B:B6:BE:72:C3:E4:19:3C:13:CA:3F:C7:B8:03:99:69:70:06:9A:C1:DF:AD:69
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled

Agent 에서 인증서 인증 요청 을 하고 비밀 키 를 사용 하여 연결 을 암호 화 합 니 다.Puppet 은 SSL 인증 서 를 사용 하여 Master 와 Agent 간 의 연결 을 검증 합 니 다.에이전트 는 2 분 마다 서 명 된 인증서 가 있 는 지 확인 합 니 다.
6)서버 검증 완료.
[root@node1 ~]# puppet cert --list
  "node2.jiabin.com" (SHA256) 9D:26:8A:44:54:D4:B0:2A:73:0B:B6:BE:72:C3:E4:19:3C:13:CA:3F:C7:B8:03:99:69:70:06:9A:C1:DF:AD:69
[root@node1 ~]# puppet cert sign node2.jiabin.com
Notice: Signed certificate request for node2.jiabin.com
Notice: Removing file Puppet::SSL::CertificateRequest node2.jiabin.com at '/var/lib/puppet/ssl/ca/requests/node2.jiabin.com.pem'

7)클 라 이언 트 가 설정 을 다시 실행 합 니 다.
[root@node2 ~]# puppet agent --server node1.jiabin.com --test
Info: Caching certificate for node2.jiabin.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for node2.jiabin.com
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node2.jiabin.com
Info: Applying configuration version '1419922755'
Notice: Finished catalog run in 0.31 seconds

8)설정 검증
[root@node2 ~]# more /tmp/node2.txt 
Hello World!

서명 고장 이 나 면 가장 직접적인 방법 이다.홈 ssl 전체 디 렉 터 리 삭제
rm -rf /var/lib/puppet/ssl

3.테스트 노드 설정
1)test 모듈 을 만 듭 니 다.모듈 디 렉 터 리 는 test 이 고 class 클래스 이름 도 test 여야 합 니 다.test 클래스 에 File 자원 이 있 습 니 다.File 자원 의 목적 은/tmp 디 렉 터 리 에 Node 2 호스트 이름 의 txt 파일 을 만 드 는 것 입 니 다.그 내용 은"Hello World!"입 니 다.
주 노드:
[root@node1 ~]# mkdir -p /etc/puppet/modules/test/{manifests,templates,files}
[root@node1 ~]# vim /etc/puppet/modules/test/manifests/init.pp 

class test {
    file { "/tmp/$hostname.txt": content => "Hello World!";}
}

2)모듈 설정 파일 에서 변 수 를"$hostname"로 정의 합 니 다.변 수 를 ERB 모듈 파일 에 전달 해 야 합 니 다.
[root@node1 ~]# vim /etc/puppet/modules/test/templates/test.erb 

hostname 

3)테스트 노드 생 성
[root@node1 ~]# vim /etc/puppet/manifests/nodes/node2.jiabin.com.pp 

node 'node2.jiabin.com' {
include test
include httpd
}

4)테스트 노드 를 Puppet 에 불 러 옵 니 다.
[root@node1 ~]# vim /etc/puppet/manifests/site.pp 

import "nodes/node2.jiabin.com.pp"

node default {
        file {
                "/tmp/helloworld.txt": content => "hello, world";
        }
}
~

import 명령 은 Puppet 에 nodes 디 렉 터 리 에.pp 로 끝 나 는 모든 파일 을 불 러 오 라 고 알려 줍 니 다.
4.설정 파일 검사
검 측 문법 은 두 부분 으로 나 뉘 는데 첫 번 째 단 계 는 Puppet Master 서버 에서 puppet parser vaidate 명령 을 사용 하 는 것 입 니 다.
두 번 째 단 계 는 Puppet Agent 클 라 이언 트 에서-noop 매개 변 수 를 사용 하여 문법 과 코드 를 검사 하 는 것 입 니 다.
[root@node1 ~]# puppet parser validate /etc/puppet/modules/test/manifests/init.pp

Liux 에 표시 되 지 않 은 것 이 가장 좋 은 결과 입 니 다.
클 라 이언 트 검색
[root@node2 ~]# puppet agent --test --server node1.jiabin.com --noop
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node2.jiabin.com
Info: Applying configuration version '1419922755'
Notice: Finished catalog run in 0.33 seconds

httpd 모듈 추가
1)httpd 모듈 에 해당 하 는 디 렉 터 리 만 들 기
[root@node1 ~]# mkdir -p /etc/puppet/modules/httpd/{manifests,templates,files}

2)httpd 모듈 파일 편집,자원 설정 지정
[root@node1 ~]# vim /etc/puppet/modules/httpd/manifests/init.pp 

class httpd {
yumrepo  { "repo163":
 descr   => "163 repo",
 baseurl => "http://mirrors.163.com/centos/6/os/x86_64/",
 gpgcheck => "0",
 enabled => "1";
 }

package {
        "httpd":
        ensure => installed,
        require => Yumrepo["repo163"];
        }
}

3)node2.jiabin.com.pp 수정,httpd 모듈 추가
[root@node1 ~]# vim /etc/puppet/manifests/nodes/node2.jiabin.com.pp 
node 'node2.jiabin.com' {
include test
include httpd
}

4)설정 파일 문법의 정확성 검사
[root@node1 ~]# puppet parser validate /etc/puppet/modules/test/manifests/init.pp

Liux 에 표시 되 지 않 은 것 이 가장 좋 은 결과 입 니 다.
5)클 라 이언 트 에서 설정 을 실행 합 니 다.명령 은 다음 과 같 습 니 다.
[root@node2 ~]# puppet agent --server node1.jiabin.com --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node2.jiabin.com
Warning: The package type's allow_virtual parameter will be changing its default value from false to true in a future release. If you do not want to allow virtual packages, please exp
   (at /usr/lib/ruby/site_ruby/1.8/puppet/type/package.rb:430:in `default')
Info: Applying configuration version '1419926864'
Notice: Finished catalog run in 0.85 seconds

프로그램 실행 에 영향 을 주지 않 는 경고 가 나 왔 습 니 다.서버 쪽 pp 파일 에 package 를 추가 할 수 있 습 니 다:allowvirtual => false,  나타 난 경 고 를 해결 하 겠 습 니 다.
[root@node1 ~]# vim /etc/puppet/modules/httpd/manifests/init.pp 

class httpd {
yumrepo  { "repo163":
 descr   => "163 repo",
 baseurl => "http://mirrors.163.com/centos/6/os/x86_64/",
 gpgcheck => "0",
 enabled => "1";
 }

package {
        "httpd":
        ensure => installed,
        require => Yumrepo["repo163"],
        allow_virtual => false;
        }
}

6)httpd 가 성공 적 으로 설치 되 었 는 지 확인
[root@node2 ~]# rpm -q httpd
httpd-2.2.15-26.el6.centos.x86_64

좋은 웹페이지 즐겨찾기