더북(TheBook)

수정 절차 따라하기

깃으로 파일 버전을 관리할 디렉터리는 퍼펫 매니페스트, 모듈, 배포할 파일을 저장하는 /etc/puppet입니다. /etc/puppet으로 이동해서 저장소로 만드는 명령 git init를 실행합니다. /etc 디렉터리의 소유자는 root이므로 git init 명령을 실행할 때 sudo가 필요합니다.

git init 명령에 의해 .git 디렉터리가 생성됩니다. /etc/puppet에서 git 명령으로 처리하는 모든 정보는 .git에 자동으로 저장될 것입니다.

shinjaehun@losttemple:~$ cd /etc/puppet
shinjaehun@losttemple:/etc/puppet$ sudo git init
Initialized empty Git repository in /etc/puppet/.git/

/etc/puppet 디렉터리의 모든 파일을 준비 영역에 추가( git add .)해서 커밋( git commit)합니다. /etc/puppet 디렉터리에 쓰기 권한이 필요하기 때문에 추가와 커밋 모두 sudo를 필요로 합니다.

shinjaehun@losttemple:/etc/puppet$ sudo git add .
shinjaehun@losttemple:/etc/puppet$ sudo git commit -m 'First commit'
[master (root-commit) b3963a8] First commit
 11 files changed, 349 insertions(+)
 create mode 100644 auth.conf
 create mode 100644 environments/example_env/README.environment
 create mode 100644 fileserver.conf
 create mode 100644 manifests/site.pp
 create mode 100644 modules/let_it_go/manifests/init.pp
 create mode 100755 modules/localmail/files/report
 create mode 100644 modules/localmail/manifests/init.pp
 create mode 100644 modules/sshd/files/sshd_config
 create mode 100644 modules/sshd/manifests/init.pp
 create mode 100644 modules/sshd/manifests/node.pp
 create mode 100644 puppet.conf

매니페스트를 변경해보겠습니다. 테스트 서버에 간단한 텍스트 파일을 생성해서 제대로 동작하는지 확인해보겠습니다. /etc/puppet/manifests/site.pp 파일을 vi로 다음과 같이 수정합니다. vm01.linuxmaster.com 노드에 file 리소스를 하나 선언했고 전체 시스템의 sshd와 vim_upgrade 모듈을 주석 처리했습니다.

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

node 'vm01.linuxmaster.com' {
   file {'/tmp/testserver':
        content => "This is a test server.\n",
   }
}

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

puppet apply 명령으로 매니페스트를 반영하고 테스트 서버에 파일이 생성되는지 확인합니다. 이상이 없으면 커밋해서 git으로 작업 기록을 남기도록 합니다.

shinjaehun@losttemple:/etc/puppet$ sudo git add manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ sudo git commit -m 'Added file resource to testserver.'
[master c6670e5] Added file resource to testserver.
1 file changed, 8 insertions(+), 2 deletions(-)
Tip

가능하면 퍼펫으로 제어하는 대상 시스템을 변경할 때마다 커밋을 자주하는 편이 좋습니다. 깃으로 관리하는 파일은 언제든 이전 상태로 복원 가능한데, 커밋을 하면 복원에 필요한 변경 시점을 남기게 됩니다. 커밋을 자주해도 깃 성능에는 영향을 미치지 않습니다.

테스트 서버와 퍼펫 마스터 사이의 통신이 잘 이루어지고 있음을 확인했으니 이번에는 테스트 서버에 sshd 모듈을 추가해보겠습니다. 매니페스트 파일 /etc/puppet/manifests/site.pp을 vi로 열어서 테스트 서버인 vm01.linuxmaster.com 노드에 sshd 모듈을 포함시킵니다.

node 'vm01.linuxmaster.com' {
   file {'/tmp/testserver':
         content => "This is a test server.\n",
   }
   include sshd
}
Tip

sshd 모듈은 SSH 서버의 공개키 인증 방식 접속을 허용하기 위해 추가한 모듈입니다. 10장의 ‘SSH 공개키 인증 시스템 사용하기’에서 /etc/puppet/modules/sshd에 매니페스트와 배포할 파일(sshd 설정 파일)을 작성했습니다.

puppet apply 명령을 실행해서 sshd 모듈을 테스트합니다. 테스트에 성공했으면 지금까지 작업한 내용을 커밋해서 저장소로 보냅니다.

shinjaehun@losttemple:/etc/puppet$ sudo git add manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ sudo git commit -m 'Added sshd module to testserver.'

sshd 모듈이 테스트 서버에서 잘 동작했으니 전체 시스템에 적용해볼 차례입니다. 매니페스트 파일을 vi로 열어서 퍼펫으로 관리하는 모든 시스템 (호스트 이름이 vm으로 시작하고 linuxmaster.com으로 끝나는 모든 시스템) 노드에 sshd 모듈을 포함시킵니다.

node 'vm01.linuxmaster.com' {
   file {'/tmp/testserver':
         content => "This is a test server.\n",
   }
   include sshd
}

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

puppet apply 결과 이번에도 다행히 모든 시스템에서 sshd 모듈이 잘 작동했습니다. 작업한 내용을 커밋합니다.

shinjaehun@losttemple:/etc/puppet$ sudo git add manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ sudo git commit -m 'Added sshd module to every systems.'

git log로 지금까지 작업한 내용을 확인할 수 있습니다. 커밋한 순서에 따라 작업한 내용이 차례로 쌓이게 됩니다.

shinjaehun@losttemple:/etc/puppet$ git log
commit 788d8dcfb9eec1fbca6a82dde19d186f73eb55ef
Author: Shin Jaehun 
Date: Sat Jul 5 17:42:43 2014 +0900

    Added sshd module to every systems.

commit b40a9f7c14c9acf29722f4ab024335540579d7d8
Author: Shin Jaehun 
Date: Sat Jul 5 17:40:58 2014 +0900

    Added sshd module to testserver.

commit c6670e59a10c26c1cd60886828ebed78777ffd0a
Author: Shin Jaehun 
Date: Sat Jul 5 17:38:42 2014 +0900

    Added file resource to testserver.

commit b3963a8811193e092a414b44fa9055a58087e6a4
Author: Shin Jaehun 
Date: Sat Jul 5 17:33:16 2014 +0900

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