Ich habe ein kleines Problem mit einem Chefrezept. Ich bin neu bei Chef, also bitte ertragen Sie mit mir.
Schritt 1: Mein Kochrezept installiert Ruby Passenger und kompiliert das Passenger-nginx-Modul zusammen mit Nginx.
%Vor%Schritt 2: Danach erstelle ich die Nginx-Konfigurationsdatei mit einer Vorlage. Diese Konfiguration erfordert den Standort von Passenger, der von Schritt 1 abhängig ist.
%Vor%Problem: Chef scheint Vorlagen zu Beginn des Laufs zu kompilieren. Was letztendlich passiert, ist, dass Schritt 2 tatsächlich kompiliert wird, bevor Schritt 1 ausgeführt wird. Dies bedeutet, dass die Variable Passagier_Root leer ist. Es muss Schritt 1 abgeschlossen sein, bevor das Fluggaststammverzeichnis abgerufen werden kann. Führen Sie dann die Vorlage aus.
Ich habe versucht, den Step-2-Code in ruby_block
einzufügen, aber das funktioniert nicht: undefined method
template 'für Chef :: Resource :: RubyBlock'.
Sie wissen nicht, was Sie hier tun sollen oder was ist die beste Vorgehensweise für Chefkoch für so etwas?
Vielen Dank im Voraus,
Leonard
Eine sauberere und empfohlene Methode ist Lazy Attribute Evaluation .
%Vor% Außerdem würde ich vorschlagen, strip
anstelle von chomp
[danke, Draco] zu benutzen.
Sobald Sie Ihren Code in ruby_block
einfügen, können Sie die Deklaration der normalen Rezepturressource nicht mehr verwenden. Sie müssen reinen Ruby-Code schreiben:
PS. Und ich denke, dass Sie strip
anstelle von chomp
verwenden möchten, um Leerzeichen zu entfernen.
Ja, Chef ist ein Biest. Ich denke, ein Teil des Problems besteht darin, dass es eine Million Möglichkeiten gibt, die gleichen Dinge zu tun, aber es gibt wirklich keine Dokumentation, die den besten Weg beschreibt. Wahrscheinlich möchten Sie Benachrichtigungen verwenden, damit Block 1 zuerst ausgeführt wird, bevor Block 2 benachrichtigt wird. Dies bedeutet, dass Block 2 action :none
benötigt, damit er erst ausgelöst wird, wenn er benachrichtigt wird.
Ich habe die Benachrichtigung zu Ihrem Beispiel in Block 1 hinzugefügt und die Aktion: none to block 2 hinzugefügt.
%Vor%