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
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.
- 1. Vagrant Chef Rezept Checksum Berechnungen
- 2. Chef-Kunde hält Neuinstallation Rezept
- 3. Erstellen einer temporären Datei in lua
- 4. Wie kann ich Bash-Skript-Datei von Chef-Rezept
- 5. Chef-Rezept So überprüfen Sie, ob die Datei existiert
- 6. Speichern einer temporären Datei
- 7. Chef tut nicht sequenzielles Rezept Ausführung
- 8. Speicherort zum Speichern einer temporären Datei in Windows korrigieren?
- 9. Das Apt-Rezept wird nicht in meinem Rezept installiert
- 10. Erstellen eines temporären decltype
- 11. Rezept zum Erstellen von Windows ICO-Dateien mit ImageMagick?
- 12. Generieren Sie eine Datei aus einer Zeichenfolge, ohne eine Vorlagendatei in Chef erstellen zu müssen?
- 13. Erstellen eines temporären Verzeichnisses in Windows?
- 14. Common Lisp-Funktion oder Idiom zum Erstellen eines temporären Dateinamens?
- 15. Wie man Chef-Rezept vom Laufen stoppt, wenn bereits abgeschlossen
- 16. Erstellen von temporären Dateien in Android
- 17. Was geschieht, wenn Sie einer Variablen in einem Chef-Rezept eine Ressource zuweisen?
- 18. zum Erstellen einer Bat-Datei zum Ausführen einer Abfrage
- 19. Java Erstellen einer temporären Datei, Löschen einer bestimmten Zeichenfolge und Umbenennen in Original
- 20. Erstellen eines threadsicheren temporären Dateinamens
- 21. Weg zum Erstellen asynchronen Wrapper
- 22. Pfad der temporären Datei
- 23. Der beste Weg zum Herunterladen einer Datei in PHP
- 24. Der schnellste Weg zum Lesen einer Datei in Remote-Maschine
- 25. Löschen einer temporären Datei nach dem Laden in JVM
- 26. Fragen zum Erstellen einer XML-Datei
- 27. Standarddatenbank neutral XSD zum Beschreiben eines relationalen Datenbankschemas
- 28. Verwenden einer temporären Tabelle in einer Ansicht
- 29. Anfügen an Chef-Array-Attribut
- 30. Verwenden einer temporären Tabelle zum Abfragen und Aktualisieren vorhandener Tabelle
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. –
Ok, bearbeitet die Antwort, ließ einen Teil, da ich sie relevant für generische Antwort finde. – Tensibai