2017-10-30 3 views
1

Ich habe einen Fall, in dem ich versuche, eine Systemd_Unit in Chef zu erstellen, um einen Dienst zu erstellen. Sobald der Dienst erstellt wurde (vorausgesetzt, es ist nicht aktuell), möchte ich es starten, und dann nur, wenn der Dienst gerade erstellt wurde Ich möchte ein Bash-Skript aufrufen, um einige Initialisierung darauf durchzuführen.Chef: bedingt eine Ressource benachrichtigen

begann ich mit diesem aus:

systemd_unit 'mysvc.service' do 
    content({ 
    . 
    . 
    . 
    }) 
    action [ :create ] 
    notifies :run, 'bash[mysvc.init]', :delayed 
end 

bash 'mysvc.init' do 
    code <<-CODE 
    . 
    . 
    . 
    CODE 
    action :nothing 
end 

systemd_unit 'mysvc.service' do 
    action [ :enable, :start ] 
end 

hier Meine Erwartung ist, dass, wenn das: RAN auf der systemd_unit erstellen, die mein Bash-Skript ausführen würde. Da das Bash-Skript wie folgt markiert ist: nichts, würde es kein anderes Mal laufen.

Leider ist das nicht das Verhalten, das ich bekomme. Was tatsächlich passiert ist, wenn entweder die: create oder die [: enable,: start] Blöcke der systemd_unit ausgeführt werden, dann läuft mein bash Skript. Dies wird nicht funktionieren, da ich die Daten in meinem Dienst bereits initialisiert habe und der Versuch der Neuinitialisierung fehlschlägt.

Wie kann ich mein Bash-Skript nur ausführen, wenn der Dienst neu erstellt wird?

Antwort

0

Dies ist nicht wirklich eine Sache, die wir unterstützen. Das Flag updated? (das Benachrichtigungen intern versorgt) ist absichtlich vage und bedeutet für jede Ressource etwas anderes, aber normalerweise jedes Mal, wenn die Ressource eine Aktion ausführt, wird sie als aktualisiert gezählt. Das verbündet sich mit der Tatsache, dass es aussieht, als ob wir auf die Implementierung von systemd_unit abgefuckt und den Ressourcennamen direkt anstelle einer Namenseigenschaft verwendet haben :(Ich werde mindestens ein Ticket bekommen, um dies für die Zukunft zu beheben.

+0

https : //github.com/chef/chef/issues/6542 eingereicht, wenn Sie es sehen wollen – coderanger

+0

Ok, vielen Dank für die Eingabe des Tickets, ich werde es im Auge behalten. – Steve

Verwandte Themen