Plattformneutrale Möglichkeit zum Erstellen einer temporären Datei in Chefrezept

9

Ich habe ein Kochrezept, das eine Vorlage zum Generieren und XML-Dokument verwendet. Der Speicherort dieses Dokuments im Dateisystem ist nicht wichtig. Der Standort muss lediglich an ein Befehlszeilentool übergeben werden, das die Datei liest und zum Konfigurieren einer Anwendung verwendet. Die XML-Datei muss nicht über die Ausführung des Befehls hinaus bestehen bleiben. Daher scheint mir, dass die Datei in einem plattformneutralen temporären Dateiverzeichnis erstellt werden sollte. C: \ Temp auf Windows oder / TMP auf den meisten Nix-Maschinen. Bietet der Chef eine Möglichkeit, temporäre Dateien zu erstellen, den Speicherort der temporären Datei zu erkennen oder das Ziel anderweitig zu erreichen?

    
Kenneth Baltrinic 17.12.2014, 12:56
quelle

1 Antwort

12

Beste Wette: Verwenden Sie Chef::Config['file_cache_path'] , das vom Chef verwendet wird, um vorübergehende Daten zu speichern. I.e: template "#{Chef::Config['file_cache_path']}/myfile.xml" do

Links (umformuliert) nach dem Kommentar, da es sich immer noch lohnt, für allgemeine Zwecke da zu sein:

Laut Kommentar wird die Ausführungsressource trotzdem mit dieser Eingabe ausgeführt, um sicherzustellen, dass die App entsprechend konfiguriert ist. Die Datei muss nur vorhanden sein, wenn die Ausführungsressource ausgeführt wird. Für andere Fälle ist Folgendes zu beachten .

Eine der Schlüsselideen hinter Chefkoch ist Idempotenz, Koch darf 100 Mal laufen und Dinge nur tun, wenn sie getan werden müssen.

In diesem Fall würde die Vorlage einmal generiert werden und sich niemals ändern, außer es gibt eine Parameteränderung in den Attributen.

In solch einem Fall (die resultierende Datei sollte aktualisiert werden), wird der Küchenchef es bemerken, es ersetzen und entsprechend mit jeder darauf definierten Benachrichtigung handeln.

    
Tensibai 17.12.2014, 13:06
quelle

Tags und Links