2016-09-29 6 views
1

Ich habe ein Kochbuch (CB1) mit einem Rezept (install_app), die Anwendungen installieren wird. install_app führt tatsächlich eine Reihe anderer Rezepte in CB1 aus und verwendet Attribute, um zu ändern, welche Anwendung Ihre Installation und die Einstellungen der Anwendung verwenden.Force Chef zum Ausführen von Rezepten mehrmals mit verschiedenen Attributen

Ich habe Rezepte für jede Anwendung, die CB1 Attribute setzt und dann rufen sie jeweils include_recipe CB1::install_app.

Aber es scheint, dass dies nicht funktioniert. Der Chef kompiliert zuerst alle Rezepte in der Ausführungsliste und führt sie dann aus, so dass nur der erste Aufruf an include_recipe CB1::install_app ausgeführt wird.

Wie zwinge ich den Chef, die Rezepte mehrmals zu verwenden?

Antwort

4

Dies ist nicht möglich, Rezepte gelten als Singletons. Sie möchten stattdessen eine benutzerdefinierte Ressource erstellen. Dann können Sie diese Ressource mehrmals mit verschiedenen Eingaben (Eigenschaften) aufrufen.

+0

Arg ist die einzige Möglichkeit, dies zu einem LWRP zu machen? Gibt es eine Möglichkeit, den Koch dazu zu zwingen? Ich habe etwas namens include_recipe_now gesehen, das aussieht, als könnte es tun, was ich will. – red888

+1

Nein, das "jetzt" Kochbuch ist für das Mischen mit Kompilieren vs. Konvergenz-Zeug, sehr viel nicht, was Sie wollen. Technisch ist das möglich, aber es bricht alle möglichen Dinge in einem Ausmaß, dass ich dir nicht sagen werde wie: P Nimm deinen vorhandenen Rezeptcode und füge ihn in den Aktionsblock einer benutzerdefinierten Ressource ein, sollte nicht so schwierig sein . Dann ersetzen Sie alles, was mit Eigenschaften variieren muss (z. B. 'node ['foo']' -> 'new_resource.foo' und fügen Sie' property: foo' am Anfang der Datei hinzu). Erstellen Sie dann eine neue Rezeptdatei, um Ihre benutzerdefinierte Ressource mehrmals mit Knotenattributen als Eingaben aufzurufen. – coderanger

+0

Kann ich Definitionen dafür verwenden? Von was ich lese "Eine Definition wird einen Wrapper erstellen, der eine oder mehrere andere Ressourcen zusammen gruppiert". Scheint, als ob sie auch diesem Zweck dienen? Vorteile von einem über den anderen? Definitionen sehen so aus, als wären sie einfacher. – red888

Verwandte Themen