
Я пытаюсь заставить puppet создать файл конфигурации, который выглядит следующим образом:
[All]
Hosts=apt-dater@puppetmaster;apt-dater@blaster; (etc...)
По сути, этот файл нуждается в записи для каждого узла, включающего класс apt-dater. Я экспериментировал с экспортированными ресурсами, но не могу найти чистый способ собрать их вместе. Как мне создать этот файл?
решение1
Я предполагаю, что вы уже понимаете принципы экспорта и сбора отдельных типов ресурсов. Просто не знаете, как перевести эти отдельные ресурсы в один файл. У 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