Я использую puppet для управления серверами linux и различными службами. Он работает хорошо, за исключениемкукольныйсама услуга.
Мой кукольный класс выглядит так:
class puppet {
file { "/etc/puppet/puppet.conf":
owner => 0, group => 0, mode => 0644,
content => template("${module_name}/puppet.conf.erb"),
}
service { "puppet":
name => "puppet",
ensure => running,
enable => true, hasstatus => true, hasrestart => true,
require => File["/etc/puppet/puppet/conf"]
subscribe => File["/etc/puppet/puppet/conf"]
}
}
}
При внесении изменений в /etc/puppet/puppet.conf puppet замечает, что ему необходимо перезапустить службу puppet, и, таким образом, аварийно завершает работу:
Mar 30 17:08:23 XXXX puppet-agent[20172]: (/Stage[main]/Puppet/File[/etc/puppet/puppet.conf]/content) content changed '{md5}eeaf5dfc7d88c8d9c85e6a8cc714d702' to '{md5}ef6ff0e423f4125e24b689980df9f71d'
Mar 30 17:08:23 XXXX puppet-agent[20172]: Caught TERM; calling stop
Знаете ли вы, как мне правильно обновить puppet.conf с помощью puppet?
решение1
Демон puppet автоматически заметит изменения в файле puppet.conf без необходимости перезапуска. Просто удалите subscribe => File["/etc/puppet/puppet.conf"]
из service { "puppet" ... }
и все будет работать.
Марионетка тоже не может ensure => running
сама по себе. Используя что-то вродеВзаимный перезапускОднако puppet, обеспечивающий запуск cron, и cronjob, обеспечивающий запуск puppet, будут работать.
решение2
Одно из решений — не запускать puppet как демон, а вызывать его из cron. Это то, что предпочитают многие люди, потому что для них демон потребляет много памяти.