더북(TheBook)

퍼펫 마스터 모드로 실행하기

퍼펫으로 다른 시스템을 제어하기 위해 서버 역할을 담당하는 퍼펫 마스터와 클라이언트인 퍼펫 에이전트가 등장합니다. 일반적으로 호스트에서 게스트 쪽으로 서비스를 제공하던 방식과 달리 가상 게스트의 퍼펫 에이전트가 퍼펫 마스터 서버에 준비된 설정 파일을 받아와서 적용하는 끌어오기 방식 pulling으로 시스템 자동 설정이 진행됩니다.

그림 10-5 퍼펫 에이전트가 퍼펫 마스터에서 설정 파일을 받아와서 적용하기

퍼펫으로 다른 시스템을 제어하려면 퍼펫 마스터와 퍼펫 에이전트 사이에 인증이 필요합니다. 호스트에서 가상 시스템을 제어하려면 서버 역할을 담당하는 호스트를 퍼펫 마스터 모드로 실행해야 합니다.

호스트에서 실행되는 퍼펫을 종료합니다.

administrator@losttemple:~$ sudo service puppet stop
Tip

퍼펫3 패키지 설치 과정에서 퍼펫이 자동으로 실행되기 때문에 이를 중지시키고 퍼펫을 다시 실행시켜야 합니다.

테스트로 사용할 매니페스트 파일을 만들어둡니다. 매니페스트 파일의 경로는 /etc/puppet/manifests입니다.

shinjaehun@losttemple:~$ sudo vi /etc/puppet/manifests/site.pp
Tip

앞에서는 사용자 홈 디렉터리에 매니페스트 파일 ‘site.pp’를 생성해서 사용했지만 매니페스트를 모듈화해서 관리하려면 /etc/puppet 디렉터리 아래에 매니페스트 파일을 저장하는 편이 좋습니다.

간단히 다음과 같이 파일을 생성하는 file 리소스면 충분합니다.

file {'/tmp/HelloPuppetMaster':
     content => "Hello, puppet master!\n",
}

퍼펫을 마스터 모드로 실행합니다. 이때 인증 과정을 눈으로 확인하기 위해서 데몬으로 시작하지 않고( –no-daemonize) 상태를 터미널에 직접 출력하도록( –verbose) 옵션을 입력합니다. 처음으로 명령을 실행하면 다음과 같이 퍼펫을 실행하는 시스템에 대한 인증서를 생성하고 퍼펫 마스터를 시작한다는 메시지가 보입니다. 대기 상태에서 퍼펫 마스터 상태에 변동이 있을 경우 터미널에 메시지를 출력할 것입니다.

shinjaehun@losttemple:~$ sudo puppet master --no-daemonize --verbose
Warning: Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations
    (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1134:in `issue_deprecation_warning')
Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): 54:A8:D8:9C:5E:E5:2A:6A:88:30:B9:F6:A9:51:19:3D:D2:2A:7E:41:E9:B6:57:0C:53:B0:88:E2:C3:67:0F:9D
Notice: Signed certificate request for ca
Info: Creating a new certificate revocation list
Info: Creating a new SSL key for losttemple
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for losttemple
Info: Certificate Request fingerprint (SHA256): 12:A9:11:37:DE:F6:AA:D6:6B:12:75:34:75:82:CA:CC:84:D2:6D:D2:AC:01:62:9B:58:AA:1E:02:F6:17:F2:C2
Notice: losttemple has a waiting certificate request
Notice: Signed certificate request for losttemple
Notice: Removing file Puppet::SSL::CertificateRequest losttemple at '/var/lib/puppet/ssl/ca/requests/losttemple.pem'
Notice: Removing file Puppet::SSL::CertificateRequest losttemple at '/var/lib/puppet/ssl/certificate_requests/losttemple.pem'
Notice: Starting Puppet master version 3.7.2

퍼펫 마스터가 실행 중인 터미널은 그대로 두고 다른 터미널을 열어서 퍼펫이 실행 중인 상태를 확인합니다. ps 명령으로 확인해보면 퍼펫이 마스터 상태로 동작 중인 사실을 확인할 수 있습니다.

shinjaehun@losttemple:~$ ps -ef | grep puppet
root      3645  3366  0 22:55 pts/0    00:00:00 sudo puppet master --no-daemonize --verbose
Tip

퍼펫 마스터 실행 명령을 내린 터미널은 대기 상태로 강제로 종료하기 전까지 명령 프롬프트가 나오지 않습니다. 그래서 다른 터미널을 실행해서 다른 명령을 실행해야 합니다.

netstat 명령으로 확인하면 시스템이 8140포트에 대한 접근에 귀 기울이고 있는 상태입니다.

shinjaehun@losttemple:~$ netstat -ln | 8140
tcp        0      0 0.0.0.0:8140            0.0.0.0:*             LISTEN

퍼펫 마스터는 에이전트와 8140포트를 통해 통신합니다. ufw로 8140포트를 개방합니다.

shinjaehun@losttemple:~$ sudo ufw allow 8140
shinjaehun@losttemple:~$ sudo ufw status
상태: 활성

To                          Action     From
--                          ------     ----
8140                        ALLOW      Anywhere
8140                        ALLOW      Anywhere (v6)
Tip

방화벽 상태를 꼭 점검하기 바랍니다. 퍼펫 마스터와 에이전트는 정상적으로 동작하는데 통신이 이루어지지 않는다면 방화벽에 의해 차단되고 있을 가능성이 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.