Sto usando la compressione debian con PostgreSQL 9.1 dai backport. Puppet ha la versione 2.7.14. Sfortunatamente lo script init restituisce il codice di uscita errato per lo stato. Pertanto ho scritto un status
comando personalizzato per rilevare se postgresql è in esecuzione o meno.
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,
}
Il mio comando funziona come un incantesimo, ma il burattino sembra avere un problema. Ricevo sempre notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
anche se è già in esecuzione.
Quindi ho provato quanto segue:
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
Come ho capito questo status
comando personalizzato , Puppet dovrebbe sempre pensare che Postgresql sia in esecuzione. Tuttavia il burattino cerca di avviare postgresql - ogni volta.
Qual è la mia colpa? O è un bug nel burattino?
status
comando di puppet funziona come previsto!
provider => init
(e rimuovi ilenable
parametro).