Назад | Перейти на главную страницу

Puppet - Есть ли способ скопировать предопределенные пользовательские файлы конфигурации для программного обеспечения на клиентах с мастера марионетки (хоста)?

Я получил много удовольствия от программирования с той марионеткой, с которой у меня был опыт до сих пор, и пока похоже, что она может делать большую часть того, что мне нужно.

Одна вещь, которую я не нашел в документации (с некоторым поиском), - это то, как (если это возможно) иметь предварительно созданные файлы конфигурации для использования на серверах. Например:

Я использую марионетку для установки httpd. Теперь у нас есть apache на клиенте. Что ж, теперь httpd.conf нуждается в некоторой настройке и определенных настройках. У меня есть httpd.conf, который мне нужно использовать на мастере марионеток. Как передать его от мастера марионеток клиенту?

Я пошел на канал IRC для марионетки и обнаружил, что это можно сделать с помощью атрибута source.

file { "/etc/firewall.sh":
    owner => root,
    group => root,
    mode => 550,
    source => "puppet:///files/iptables.sh"
}

расположение файлов задается в /etc/puppet/fileserver.conf - конфигурация там проста.

Тег содержимого вместо источника можно использовать для помещения буквальной строки в файл.

На вашем месте я бы использовал puppet:///modules/<module name>/iptables.sh формат. Таким образом, все ограничено модулем, и вам не понадобится fileserver.conf. В puppet:///modules/* это бесплатно.

Использование статических файлов - хорошее начало. Использование шаблонов еще лучше и более гибкое в долгосрочной перспективе.

http://docs.puppetlabs.com/guides/templating.html

$hostname = 'your.host.com'
$portnum  = 8080

file { '/etc/lighttpd/lighttpd.conf':
   ensure => present,
  content => template('lighttpd/lighttpd.conf.erb'),
    owner => 'root',
    group => 'root',
     mode => 0644,
}

Это в сочетании с шаблоном .erb создает желаемый файл конфигурации с использованием переменных $ hostname и $ portnum.

$HTTP["host"] =~ "^<%= hostname %>" {
    proxy.server = (
        "" => (
            (
                "host" => "127.0.0.1",
                "port" => <%= portnum %>
            )
    ...