Я получил много удовольствия от программирования с той марионеткой, с которой у меня был опыт до сих пор, и пока похоже, что она может делать большую часть того, что мне нужно.
Одна вещь, которую я не нашел в документации (с некоторым поиском), - это то, как (если это возможно) иметь предварительно созданные файлы конфигурации для использования на серверах. Например:
Я использую марионетку для установки 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 %>
)
...