더북(TheBook)

패키지를 설치하고 설정 파일을 배포한 다음, 서비스를 시작하되 설정 파일에 변경이 있으면 서비스를 다시 시작하는 이 패턴은 전형적인 서버 서비스 자동화 패턴입니다.

class 서버_서비스 {
   package { 서버_서비스:
        ensure => 서버_패키지_버전,
   }
   service { 서버_서비스:
        ensure => running,
        subscribe => File['서버_설정_파일'],
        require => Package[서버_서비스],
   }
   file { 서버_설정_파일:
        source => 'puppet:///modules/서버_서비스/서버_설정_파일',
        notify => Service[서버_서비스],
   }
}

배포할 SSH 서버 설정 파일 ‘sshd_config’를 저장할 디렉터리를 만들고 복사합니다.

shinjaehun@losttemple:~$ sudo mkdir /etc/puppet/modules/sshd/files
shinjaehun@losttemple:~$ sudo cp sshd_config /etc/puppet/modules/sshd/files/
이렇게 하세요!

SSH 서버가 준비되어 있지 않다면 6장에서 사용했던 게스트 server01에서 SSH 서버의 설정 파일 sshd_config를 받아올 수 있습니다. server01을 시작합니다.

shinjaehun@losttemple:~$ virsh start server01

scp 명령으로 SSH 설정 파일을 현재 디렉터리로 복사합니다.

shinjaehun@losttemple:~$ scp administrator@192.168.122.201:/etc/ssh/sshd_config .

sshd_config에는 공개키 인증을 활성화시키고 패스워드 인증을 해제하는 내용이 포함되어 있어야 합니다.

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no

퍼펫을 적용할 노드를 선언하기 위해 매니페스트 파일 /etc/puppet/manifests/site.pp를 수정합니다. 노드 이름에 정규 표현식을 써서 여러 시스템을 대상으로 선언할 수 있습니다.

앞에서 선언한 노드 vm01.linuxmaster.com, vm02.linuxmaster.com을 삭제하고 정규표현식을 이용해서 다시 선언해봅시다. 다음 정규 표현식은 vm으로 시작( ^)해서 숫자( [0-9]+)를 붙이고 linuxmaster.com으로 끝나는( $) 호스트 이름을 의미합니다. vm01.linuxmaster.com이나 vm02.linuxmaster.com과 같은 비슷한 호스트 이름을 나열하는 것보다 훨씬 수월합니다.

node 'losttemple.linuxmaster.com' {
# include sys_info
}

node /^vm[0-9]+\.linuxmaster\.com$/ {
    include vim_upgrade
    include sshd
}

pp 스크립트를 실행해서 지금까지 설정한 내용을 puppet apply 명령으로 전체 시스템에 적용합니다.

shinjaehun@losttemple:~$ pp

ssh 가상 게스트에 접속을 시도해보고 접속 과정에서 패스워드 인증 대신 공개키 인증 기능이 활성화되는지 확인합니다.

shinjaehun@losttemple:~$ ssh administrator@vm01.linuxmaster.com
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-39-generic-pae i686)

 * Documentation: https://help.ubuntu.com/
Last login: Fri Jun 27 01:50:33 2014
shinjaehun@vm01:~$
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.