더북(TheBook)

vim 편집기로 업그레이드하기

퍼펫 마스터 서버를 이용해서 가상 게스트에 vim 편집기를 설치해봅시다. vim 편집기 업그레이드에 필요한 기능을 모듈로 만듭니다. modules/vim_upgrade 디렉터리에 필요한 리소스를 저장합니다. 매니페스트 파일 modules/vim_upgrade/manifests/init.pp에 클래스를 선언하고 ‘ex 모드에서 사용할 수 있는 ex 명령’에서 만들어 사용해온 vim 환경 설정 파일 ‘.vimrc’를 modules/vim_upgrade/files 디렉터리에 저장해서 배포합니다(그림 10-6).

그림 10-6 vim_upgrade 모듈의 매니페스트 디렉터리 구조

apt-cache policy 명령으로 설치할 vim 패키지 버전 정보를 확인합니다.

shinjaehun@losttemple:~$ apt-cache policy vim
vim:
  설치: 2:7.4.052-1ubuntu3
  후보: 2:7.4.052-1ubuntu3
  버전 테이블:
 *** 2:7.4.052-1ubuntu3 0
         500 http://ftp.daum.net/ubuntu/ trusty/main i386 Packages
         100 /var/lib/dpkg/status

퍼펫 마스터 서버에서 매니페스트를 작성합니다. vim 업그레이드를 처리할 모듈 디렉터리를 만들고 클래스를 저장할 매니페스트 파일을 vi로 생성합니다.

shinjaehun@losttemple:~$ sudo mkdir -p /etc/puppet/modules/vim_upgrade/manifests
shinjaehun@losttemple:~$ sudo vi /etc/puppet/modules/vim_upgrade/manifests/init.pp
Tip

하위 디렉터리까지 함께 생성하기 위해 mkdir 명령에 -p 옵션을 추가했습니다.

vim_upgrade 클래스는 vim 패키지를 설치하고 vim 환경 설정 파일 /home/administrator/.vimrc를 생성할 것입니다. file 리소스의 새로운 속성 ownergroup은 생성할 파일의 소유자와 소유 그룹을, mode는 접근 권한을 결정합니다. source는 원본 파일의 경로를 의미합니다. 퍼펫 에이전트가 실행되는 시스템마다 파일을 배포하려고 할 때
source 속성을 사용합니다. require 속성에 의해 순서대로 vim 패키지를 설치하고 vimrc 파일을 생성할 것입니다.

class vim_upgrade {
       package { 'vim' :
            ensure => '2:7.4.052-1ubuntu3’,
       }

       file { 'vimrc' :
            name => '/home/administrator/.vimrc',
            owner => administrator,
            group => administrator,
            mode => 666,
            source => 'puppet:///modules/vim_upgrade/.vimrc',
            require => Package['vim'],
       }
}
Tip

name에 입력하는 파일 경로는 절대 경로로 입력해야 합니다.

퍼펫을 적용할 노드를 선언하기 위해 매니페스트 파일 /etc/puppet/manifests/site.pp를 수정합니다. losttemple.linuxmaster.com 노드의 sys_info 모듈을 주석처리하고 인증 과정을 테스트하는데 사용했던 file 리소스는 삭제합니다. 호스트 vm01.linuxmaster.com와 vm02.linuxmaster.com의 노드에 vim_upgrade 모듈을 포함시킵니다.

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

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

node 'vm01.linuxmaster.com', 'vm02.linuxmaster.com' {
    include vim_upgrade
}
Tip

sys_info 모듈을 include하는 행 앞에 ‘#’ 기호를 붙여서 주석 처리합니다. 퍼펫은 주석 처리된 행의 내용은 적용하지 않습니다.

vim_upgrade 모듈 디렉터리에 files라는 디렉터리를 만들고 3장의 ‘ex 모드에서 사용할 수 있는 ex 명령’에서 만들어둔 vim 환경 설정 파일 ‘.vimrc’를 복사합니다.

shinjaehun@losttemple:~$ sudo mkdir -p /etc/puppet/modules/vim_upgrade/files/
shinjaehun@losttemple:~$ sudo cp .vimrc /etc/puppet/modules/vim_upgrade/files

배포할 파일도 준비가 됐습니다. pp 스크립트로 puppet apply 명령을 실행합니다. 퍼펫 에이전트가 실행 중인 가상 게스트에 접속해서 vim이 설치되었는지, 환경 설정 파일 ‘.vimrc’는 제대로 전송되었는지 확인합니다. 퍼펫 에이전트는 1분마다 퍼펫 마스터로부터 갱신 여부를 확인하고 바뀐 내용이 있으면 이를 적용할 것입니다.

shinjaehun@losttemple:~$ pp
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')
Notice: Compiled catalog for losttemple.linuxmaster.com in environment production in 0.03 seconds
Notice: Finished catalog run in 0.07 seconds
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.