J'utilise debian squeeze avec PostgreSQL 9.1 depuis les backports. Puppet a la version 2.7.14. Malheureusement, le script init renvoie le mauvais code de sortie pour le statut. J'ai donc écrit une status
commande personnalisée pour détecter si postgresql est en cours d'exécution ou non.
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,
}
Ma commande fonctionne comme un charme, mais la marionnette semble avoir un problème. Je reçois toujours notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
bien qu'il fonctionne déjà.
J'ai donc essayé ce qui suit:
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
Si j'ai bien compris cette status
commande personnalisée , la marionnette doit toujours penser que postgresql est en cours d'exécution. Néanmoins, la marionnette essaie de démarrer postgresql - à chaque fois.
Quelle est ma faute? Ou est-ce un bug dans la marionnette?
status
commande de marionnette fonctionne comme prévu!
provider => init
(et supprimez leenable
paramètre).