2014-12-17 9 views
8

Ho una ricetta da chef che utilizza un modello per generare e un documento xml. La posizione di quel documento sul file system non è importante; la posizione deve semplicemente essere passata a uno strumento da riga di comando che leggerà il file e lo userà per configurare un'applicazione. Il file xml non deve persistere oltre l'esecuzione del comando. Pertanto mi sembra che il file debba essere creato in una directory di file temporanei neutrale della piattaforma. C: \ Temp su Windows o/TMP sulla maggior parte delle macchine Nix. Lo chef fornisce un mezzo per creare file temporanei, rilevare la posizione del file temporaneo o comunque raggiungere l'obiettivo?Piattaforma in modo neutro per creare un file temporaneo in Chef Ricetta

risposta

11

Scommessa migliore: utilizzare Chef::Config['file_cache_path'] che viene utilizzato dallo chef per memorizzare i dati transitori. Vale a dire: template "#{Chef::Config['file_cache_path']}/myfile.xml" do

Sinistra (riformulato) dopo il commento in quanto ancora la pena di essere lì per uso generale:

Come da commento, la risorsa eseguire verrà eseguito in ogni caso, con questo ingresso al fine di garantire l'applicazione è configurato di conseguenza, il file deve essere presente solo quando viene eseguita la risorsa execute, per altri casi ciò che è sotto è da tenere presente.

Una delle idee chiave dietro lo chef è idempotenza, lo chef può correre 100 volte e fare le cose solo quando è necessario.

In questo caso, il modello verrà generato una volta e non cambierà mai a meno che non ci sia un cambio di parametro negli attributi.

In tal caso (il file risultante deve essere aggiornato), lo chef lo noterà, lo sostituirà e agirà di conseguenza con qualsiasi notifica definita su di esso.

+0

Sì, funziona. Riguardo all'idempotenza, punto inteso ma non pertinente all'attuale considerazione. Il comando in esecuzione è idempotente ed è importante che venga eseguito indipendentemente dal fatto che l'output del modello sia stato modificato o meno. Vogliamo assicurarci che l'app sia configurata secondo la ricetta e sovrascrivere qualsiasi modifica alla configurazione manuale che potrebbe essersi verificata. Tali modifiche manuali non innescherebbero una modifica di alcun file. –

+0

Ok, ho modificato la risposta, lasciato alcune parti perché le trovo rilevanti per la risposta generica. – Tensibai

Problemi correlati