Ich verwende Debian Squeeze mit PostgreSQL 9.1 aus Backports. Puppet hat Version 2.7.14. Leider gibt das Init-Skript den falschen Exit-Code für den Status zurück. Daher habe ich einen benutzerdefinierten status
Befehl geschrieben, um festzustellen, ob postgresql ausgeführt wird oder nicht.
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,
}
Mein Befehl funktioniert wie ein Charme, aber die Puppe scheint ein Problem zu haben. Ich bekomme immer, notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
obwohl es schon läuft.
Also versuchte folgendes:
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
Wie ich diesen benutzerdefinierten status
Befehl verstanden habe , sollte Puppet immer denken, dass postgresql ausgeführt wird. Trotzdem versucht Puppe jedes Mal postgresql zu starten.
Was ist meine Schuld? Oder ist es ein Fehler in der Marionette?
status
funktioniert der Befehl der Puppe wie erwartet!
provider => init
(und entfernen Sie denenable
Parameter).