2014-12-17 6 views
8

Ich habe ein Kochrezept, das eine Vorlage zu 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?Platform neutral Weg zum Erstellen einer temporären Datei in Chef Rezept

Antwort

11

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

Left (umformuliert) nach Kommentar als es lohnt sich immer noch da für allgemeine Zwecke sein:

Wie pro Kommentar, die Ressource ausführen wird ohnehin mit diesem Eingang laufen die App, um sicherzustellen, entsprechend konfiguriert ist, um die Datei muss nur vorhanden sein, wenn die Ausführungsressource ausgeführt wird, für andere Fälle ist das Folgende zu beachten.

Einer der Schlüsselideen hinter Chefkoch ist Idempotenz, Chef kann 100 Mal laufen und Dinge nur tun, wenn sie getan werden müssen.

In diesem Fall würde die Vorlage einmal generiert und niemals geändert, es sei denn, es gibt eine Parameteränderung in Attributen.

In einem solchen Fall (die resultierende Datei sollte aktualisiert werden), Koch wird es bemerken, ersetzen Sie es und handeln Sie entsprechend mit jeder Benachrichtigung darauf definiert.

+0

Ja, das funktioniert. In Bezug auf Idempotenz, Punkt verstanden, aber nicht relevant für die aktuelle Betrachtung. Der auszuführende Befehl ist idempotent und es ist wichtig, dass er ausgeführt wird, unabhängig davon, ob sich die Vorlagenausgabe geändert hat oder nicht. Wir möchten sicherstellen, dass die App gemäß dem Rezept konfiguriert ist, und etwaige manuelle Konfigurationsänderungen überschreiben. Solche manuellen Änderungen würden keine Änderung von Dateien auslösen. –

+0

Ok, bearbeitet die Antwort, ließ einen Teil, da ich sie relevant für generische Antwort finde. – Tensibai

Verwandte Themen