Как использовать шаблон для файла конфигурации в Puppet

Я новичок в Puppet, и я пишу модуль для настройки файлов конфигурации. Проблема в том, что, когда несколько клиентов будут использовать мой модуль, им придется редактировать его в соответствии с их системой. Я слышал, что шаблоны - это способ решить эту проблему. Но я не могу понять, как использовать шаблон для настройки файла конфигурации.

Если кто-то из вас может дать мне простой пример, используя шаблоны для настройки файлов, это будет очень полезно. Например, как я могу настроить доступный по умолчанию файл конфигурации Apache с помощью шаблона или дать любой другой пример, который, по вашему мнению, поможет новому марионетке. BTW Я на машине Ubuntu.

Ответы

Ответ 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, а символ завершающей новой строки подавляется.

Надеемся, что это поможет вам понять шаблоны.