Ich bin ziemlich neu bei Puppet, aber es gefällt mir bisher sehr gut. Im Moment richte ich es ein, um eine kleine Architektur zu automatisieren.
Ich habe jedoch ein Problem: Ich möchte ein Paket entfernen und sicherstellen, dass es gestoppt wird. Um dies zu erreichen, habe ich den folgenden Eintrag in meinem Manifest:
package { 'supervisor':
ensure => absent,
}
service { 'supervisor':
ensure => stopped,
enable => false,
hasstatus => true,
}
Das Problem dabei ist, dass ich nach dem einmaligen Anwenden des Manifests auf den Knoten beim nächsten Durchlauf den folgenden Fehler erhalte:
debug: Service[supervisor](provider=debian): Could not find supervisor in /etc/init.d
debug: Service[supervisor](provider=debian): Could not find supervisor.sh in /etc/init.d
err: /Stage[main]/Screenly_core/Service[supervisor]: Could not evaluate: Could not find init script for 'supervisor'
Gibt es eine Möglichkeit, eine bedingte Anweisung auszuführen, sodass die Stop-Prozedur nur ausgeführt wird, wenn das Paket tatsächlich vorhanden war (und dann vor dem Entfernen des Pakets ausgeführt wird)?
Antworten:
Auf Debian-basierten Systemen (und ich nehme auch auf RPM-Systemen an) stoppt das Entfernen eines Pakets seine Dienste, bevor Dateien gelöscht werden (Vorphase in Deb-Paketen).
Was Sie jedoch fragen, können Sie erreichen, indem Sie eine Abhängigkeit mit 'require' einfügen.
quelle