Ответ 1
The PuppetLabs docs на Использование шаблонов Puppet содержит пример конфигурации Apache для сайта Trac. Этого должно быть достаточно, чтобы вы начали.
В запросе OP, вот простой пример. Я использую NTP, а не конфигурацию по умолчанию Apache, поскольку это довольно большой и сложный файл. NTP намного проще.
Каталог выглядит следующим образом:
/etc/puppet/modules/ntp/manifests
/templates
Частичное содержимое /etc/puppet/modules/ntp/manifests/init.pp
(только часть, определяющая шаблон):
$ntp_server_suffix = ".ubuntu.pool.ntp.org"
file { '/etc/ntp.conf':
content => template('ntp/ntp.conf.erb'),
owner => root,
group => root,
mode => 644,
}
Содержание /etc/puppet/modules/ntp/templates/ntp.conf.erb
:
driftfile /var/lib/ntp/drift
<% [1,2].each do |n| -%>
server <%=n-%><%[email protected]_server_suffix%>
<% end -%>
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
При запуске с марионеткой это приведет к /etc/ntp.conf
, который выглядит следующим образом:
driftfile /var/lib/ntp/drift
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
Это демонстрирует несколько разных концепций:
- Переменные, определенные в манифесте марионетки (например,
$ntp_server_suffix
, могут быть доступны как переменные экземпляра (@ntp_server_suffix
) в шаблоне - Петли и другой код ruby могут использоваться в шаблонах erb
- Код между
<%
и%>
выполняется ruby - Код между
<%=
и%>
выполняется и выводится ruby - Код между
<%=
и-%>
выполняется и выводится с помощью ruby, а символ завершающей новой строки подавляется.
Надеемся, что это поможет вам понять шаблоны.