模闆檔案是在puppet子產品下面templates目錄中以”.erb”結尾的檔案,puppet模闆主要用于檔案,例如各種服務的配置檔案,相同的服務,不同的配置就可以考慮使用模闆檔案,例如Nginx和Apache的虛拟主機配置就可以考慮采用ERB模闆。
/etc/puppet/modules/apache/manifests檔案内容如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<code>class apache{</code>
<code> </code><code>package{</code><code>"httpd"</code><code>:</code>
<code> </code><code>ensure =>present,</code>
<code>}</code>
<code> </code><code>service{</code><code>"httpd"</code><code>:</code>
<code> </code><code>ensure =>running,</code>
<code> </code><code>require =>Package[</code><code>"httpd"</code><code>],</code>
<code>define apache::vhost ( $sitedomain,$rootdir,$port ) {</code>
<code> </code><code>file</code> <code>{ </code><code>"/etc/httpd/conf.d/httpd_vhost_${sitedomain}.conf"</code><code>:</code>
<code> </code><code>#path => '/etc/httpd/conf/httpd_vhost.conf',</code>
<code> </code><code>content => template(</code><code>"apache/httpd.conf.erb"</code><code>),</code>
<code> </code><code>require => Package[</code><code>"httpd"</code><code>],</code>
<code> </code><code>}</code>
/etc/puppet/modules/apache/templates中的httpd.conf.erb模闆檔案内容如下所示:
<code><VirtualHost *:<%= port %>></code>
<code>ServerName <%= sitedomain %></code>
<code>DocumentRoot </code><code>/var/www/html/</code><code><%= rootdir %></code>
<code> </code><code><Directory <%= rootdir %>></code>
<code> </code><code>Options Indexes FollowSymLinks</code>
<code> </code><code>AllowOverride None</code>
<code> </code><code>Order allow,deny</code>
<code> </code><code>Allow from all</code>
<code> </code><code><</code><code>/Directory</code><code>></code>
<code>ErrorLog logs/<%= sitedomain %>_error.log</code>
<code>CustomLog logs/<%= sitedomain %>_access.log common</code>
<code><</code><code>/VirtualHost</code><code>></code>
注:很多資料和文檔都是複制/etc/httpd/conf/httpd.conf檔案來作為httpd.conf.erb模闆,我覺得這種做法還是欠缺考慮的,一般來說,每台Aapche主機上面至少有一個基于域名的虛拟主機,有的更多,十幾個也很常見,是以我們才需要用獨立的虛拟主機檔案來管理虛拟主機并自動的載入,這也是我們利用erb模闆檔案将虛拟主機的檔案定義路徑放在/etc/httpd/conf.d目錄下的原因。
本文轉自 撫琴煮酒 51CTO部落格,原文連結:http://blog.51cto.com/yuhongchun/1325296,如需轉載請自行聯系原作者