Я пытаюсь заставить puppet создать файл конфигурации, который выглядит следующим образом:
[All]
Hosts=apt-dater@puppetmaster;apt-dater@blaster; (etc...)
По сути, этому файлу нужна запись для каждого узла, который включает класс apt-dater. Я экспериментировал с экспортированными ресурсами, но не могу найти чистый способ их собрать. Как мне приступить к созданию этого файла?
Я предполагаю, что вы уже понимаете принципы экспорта и сбора ресурсов индивидуального типа. Просто не о том, как перевести эти отдельные ресурсы в один файл. У Puppet есть два метода для этого:
Augeas - очень умный инструмент, но он может оказаться сложным, если вам придется начать писать и распространять свои собственные линзы. тем не мение puppet-concat
понять очень просто. Я не проверял синтаксис следующего, но он должен указать вам правильный путь:
# apt-dater/manifests/server.pp
class apt-dater::server {
file { "/somepath/apt-dater/hosts.conf": }
concat::fragment{ "apt-dater_hosts_header":
content => "[All]\nHosts=",
order => 1,
}
Apt-dater::Client <<| |>>
}
# apt-dater/manifests/defines/register.pp
define apt-dater::register($order=10) {
concat::fragment{ "apt-dater_hosts_$name":
target => "/somepath/apt-dater/hosts.conf",
content => "apt-dater@${name};",
}
}
# apt-dater/manifests/client.pp
class apt-dater::client {
@apt-dater::register{ "$hostname": }
}
Затем настройте узлы:
# On the central server.
include apt-dater::server
# On each of the client nodes.
include apt-dater::client