puppet apply 명령을 실행하면 로컬 시스템에 컴파일된 퍼팻 코드인 카탈로그를 요청합니다. 새로운 카탈로그와 예전 카탈로그를 비교하여 차이가 없다면 시스템은 어떤 변경도 시행하지 않습니다. 변경이 없으므로 카탈로그를 컴파일하는 시간과 적용하는 시간도 짧아집니다.
administrator@vmgate:~$ sudo /opt/puppetlabs/bin/puppet apply example.pp
Notice: Compiled catalog for vmgate.linuxmastery.kr in environment production in 0.01 seconds
Notice: Applied catalog in 0.31 seconds
hello 파일이 삭제되었거나 파일 내용이 달라져 있다면 매니페스트에 정의한 대로 다시 변경될 것입니다. 매니페스트로 생성한 hello 파일의 내용을 편집기로 직접 수정해 보겠습니다.
administrator@vmgate:~$ sudo vi /tmp/hello
문자열 ‘I love puppet!’을 덧붙였습니다.
Hello, puppet! I love puppet!
다시 puppet apply 명령을 실행하면 파일의 content 항목이 바뀌었다는 로그가 보일 것입니다.
administrator@vmgate:~$ sudo /opt/puppetlabs/bin/puppet apply example.pp
Notice: Compiled catalog for vmgate.linuxmastery.kr in environment production in 0.01 seconds
Notice: /Stage[main]/Main/File[/tmp/hello]/content: content changed '{md5}908ef5e4c51f9280044998a8e74321de' to '{md5}09a756d5c9b117bd03970e49e90b7671'
Notice: Applied catalog in 0.18 seconds
example.pp에 입력한 대로 문자열이 ‘Hello, puppet!’으로 돌아온 상태입니다. 아예 파일을 삭제하더라도 puppet apply를 실행하면 원래대로 돌아옵니다. /tmp/hello 파일에 ‘Hello, puppet!’이라는 문자열을 남기는 것이 시스템 관리자가 원하는 상태이기 때문입니다.
administrator@vmgate:~$ cat /tmp/hello
Hello, puppet!