마지막으로 고민할 문제는 워드프레스를 처리할 매니페스트 wp.pp에서 배포할 워드프레스 설정 파일 wp-config.php도 노드에 따라 내용이 달라져야 한다는 점입니다.
administrator@vmgate:~/code/environments/production$ vi modules/webapp/manifests/wp.pp
환경에 따라 배포할 파일 일부가 달라져야 한다면 정적 파일을 쓸 수 없습니다. 그 대신 템플릿을 활용합니다. 템플릿은 입력된 값을 바탕으로 다양한 문서를 생성하는 틀입니다. wp-config.php를 배포할 file 리소스는 더 이상 source로 정적 파일 경로를 지정하지 않습니다. 그 대신 content 속성에서 지정한 템플릿 파일 wp-config.php.erb를 기초로 노드마다 wp-config.php 파일을 생성하게 됩니다.
# /home/administrator/code/environments/production/modules/webapp/manifests/wp.pp # 워드프레스 설치 class webapp::wp { ... file { "/var/www/${servername}/${dbname}/wp-config.php": ensure => present, require => Exec['copy'], # source => 'puppet:///modules/webapp/wp-config.php', content => template('webapp/wp-config.php.erb'), } }