로그인에 성공하면 퍼팻 에이전트를 실행합니다. 가상 게스트를 초기화하면서 puppet-agent 패키지를 재설정했기 때문에 새로운 호스트키로 퍼팻 서버에 인증을 시도할 것입니다.
administrator@vm03:~$ sudo /opt/puppetlabs/bin/puppet agent --test
퍼팻 서버에서 인증 요청을 허가합니다.
administrator@vmgate:~$ sudo /opt/puppetlabs/bin/puppetserver ca sign --certname vm03.linuxmastery.kr
가상 게스트 준비가 끝났습니다. 퍼팻 서버에서 SSH 공개키 인증 기능을 제공할 base::ssh 클래스를 작성하겠습니다.
administrator@vmgate:~$ cd code/environments/production administrator@vmgate:~/code/environments/production$ vi modules/base/manifests/ssh.pp
base::ssh 클래스에서 처리할 일은 SSH 서버 설치, SSH 서비스 실행, SSH 공개키 배포로 나누어집니다. ➊ package 리소스로 openssh-server 패키지를 설치하고 ➋ service 리소스로 ssh 서버를 실행합니다. administrator 사용자의 공개키를 각 노드에 배포하고자 file 리소스를 추가했습니다. ➌ 첫 번째 파일 리소스에는 ensure 속성을 ‘directory’로 지정해서 공개키를 저장할 .ssh 디렉터리를 생성합니다. ➍ 두 번째 파일 리소스에서는 공개키 파일 authorized_keys를 복사합니다. source 속성으로 원본 공개키의 경로를 지정합니다. .ssh 디렉터리와 공개키 파일의 소유자와 그룹, 접근 권한에 유의하지 않으면 접속이 제한될 수 있습니다. 디렉터리를 먼저 생성한 후 공개키를 저장해야 하므로 require 속성을 추가했습니다. ➎ 마지막으로 확인을 위해 notify 속성을 덧붙였습니다.