Eu uso o Puppet para gerenciar servidores Linux e vários serviços. Funciona bem, exceto pelofantocheserviço em si.
Minha aula de fantoches é assim:
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"]
}
}
}
Quando uma alteração é aplicada em /etc/puppet/puppet.conf, o puppet percebe que precisa reiniciar o serviço do puppet e, portanto, travar:
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
Você sabe como eu poderia atualizar o puppet.conf corretamente com puppet ?
Responder1
O daemon puppet notará automaticamente alterações no arquivo puppet.conf sem precisar ser reiniciado. Basta remover subscribe => File["/etc/puppet/puppet.conf"]
de service { "puppet" ... }
e tudo ainda funcionará.
O fantoche também não pode ensure => running
por si só. Usando algo como oReinicialização mútuacom o puppet garantindo que o cron esteja em execução e um cronjob garantindo que o puppet esteja em execução funcionará, no entanto.
Responder2
Uma solução é não executar o puppet como um daemon, mas invocá-lo a partir do cron. Isso é algo que muitas pessoas preferem porque para elas o daemon consome muita memória.