Utilizo Puppet para administrar servidores Linux y varios servicios. Funciona bien, excepto por elmarionetaservicio en sí.
Mi clase de títeres es así:
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"]
}
}
}
Cuando se aplica un cambio en /etc/puppet/puppet.conf, Puppet se da cuenta de que necesita reiniciar el servicio de Puppet y, por lo tanto, se bloquea:
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
¿Sabes cómo puedo actualizar el archivo Puppet.conf correctamente con Puppet?
Respuesta1
El demonio de Puppet notará automáticamente los cambios en el archivo Puppet.conf sin necesidad de reiniciarlo. Simplemente retire el subscribe => File["/etc/puppet/puppet.conf"]
de service { "puppet" ... }
y todo seguirá funcionando.
Puppet tampoco puede hacerlo ensure => running
por sí solo. Usando algo como elReinicio mutuoSin embargo, funcionará con Puppet que asegure que cron se esté ejecutando y un cronjob que garantice que Puppet se esté ejecutando.
Respuesta2
Una solución es no ejecutar Puppet como demonio, sino invocarlo desde cron. Esto es algo que mucha gente prefiere porque, para ellos, el demonio consume mucha memoria.