Es gibt mehrere Möglichkeiten, das Vorhandensein eines verschachtelten Attributs in chef zu überprüfen, und ich bin mir nicht sicher, welches korrekt / am besten ist, und wenn irgendeines dazu führt, dass leere Attribute auf dem Knoten gespeichert werden:
%Vor%Es wäre sehr wünschenswert, gleichzeitig nach Eltern und Kind zu suchen, aber ich weiß nicht, ob das möglich ist. Ich benutze Chef 10, nicht Chef 11, obwohl Antworten erklären entweder willkommen sind.
Knotenattributobjekt ist HashMap. Sie können die native API von Ruby verwenden, um nach verschachtelten Attributen zu suchen.
Chef Node-Objekt bietet eine Reihe von Hilfsmethoden wie:
%Vor% Es gibt auch eine neue Methode node.debug_value()
in Chef 11, die Ihnen hilft, Knotenattribute zu debuggen, was ebenfalls hilfreich ist:
Details finden Sie in dem Artikel Chef 11 In -Depth: Attributänderungen
Wie ich dies in letzter Zeit gelöst habe, war es immer so, wenn möglich, Standardwerte für die in einem Kochbuch verwendeten Attribute zu setzen.
Zum Beispiel würde cookbook/attributes/default.rb
enthalten:
Und im Rezept kann jede Überprüfung auf den Attributwert reduziert werden auf:
%Vor%Natürlich ist es normalerweise viel nützlicher, einen brauchbaren Standardwert zu haben und überhaupt nicht zu überprüfen.
Schauen Sie sich das Koch-Zucker-Kochbuch deep_fetch
an, das sichere Verweise auf tiefe Attribute ermöglicht / p>
Tags und Links ruby chef chef-recipe