Estoy usando Debian Squeeze con PostgreSQL 9.1 desde backports. Puppet tiene la versión 2.7.14. Desafortunadamente, el script de inicio devuelve el código de salida incorrecto para el estado. Por lo tanto, escribí un status
comando personalizado para detectar si postgresql se está ejecutando o no.
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "pg_lsclusters -h | awk 'BEGIN {rc=0} {if ($4 != \"online\") rc=3} END { exit rc }'",
provider => debian,
}
Mi comando funciona como un encanto, pero la marioneta parece tener un problema. Siempre me sale notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
aunque ya se está ejecutando.
Entonces intenté lo siguiente:
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
Como entendí este status
comando personalizado , Puppet siempre debería pensar que postgresql se está ejecutando. Sin embargo, Puppet intenta iniciar postgresql, siempre.
¿Qué es mi culpa? ¿O es un error en la marioneta?
status
comando de puppet funciona como se esperaba.
provider => init
(y elimine elenable
parámetro).