Ho una risorsa in una ricetta da chef che mi piacerebbe essere facoltativa. Cioè, quando la ricetta viene eseguita, se la risorsa fallisce, voglio che tutto il resto continui. Mi piacerebbe comunque sapere che c'è stato un fallimento con quella risorsa, ovviamente, è solo che non è una risorsa critica e nulla dipende da esso, quindi preferirei continuare il resto della corsa.Come si rende facoltativa una risorsa chef?
Sono abituato a lavorare con Puppet dove devi dichiarare esplicitamente le tue dipendenze, e le risorse vengono ignorate solo quando si verificano delle dipendenze, invece di un errore che causa il mancato funzionamento dell'intero resto del file.
Non so perché questo è stato chiuso come non una vera domanda (anche dopo aver letto le FAQ), ma aggiungerò del codice di esempio per illustrare quello che sto chiedendo, speriamo che qualcun altro possa votare per riaprire o rispondere.
Sto usando lo chef per impostare un ambiente di sviluppo, e parte di questo è solo la clonazione di alcuni repository di Git per essere installato. Niente dipende da loro, e occasionalmente c'è un repository privato a cui alcuni sviluppatori non hanno accesso. Se non riesce a clonare, mi piacerebbe che le altre risorse continuassero a essere eseguite.
Così, per le seguenti risorse:
["foo", "bar", "baz"].each do |repo|
git repo do
repository "[email protected]/example/#{repo}"
reference "master"
action :sync
depth 1
user 'dev'
group 'dev'
destination "#{node[:src_dir]}/#{repo}"
end
end
Se l'utente che esegue questo non ha il permesso di clonare foo, vorrei foo a fallire, ma bar e baz per clonare ancora. Come è possibile?
opzioni veloce e sporco: ignore_failure vero, only_if "http://github.com/repo ricciolo" – agross
ignore_failure è quello che stavo cercando. arricciare non funzionerebbe davvero dal momento che si tratta di un repository privato che sto cercando di ottenere, quindi mi affido alle chiavi ssh per renderlo accessibile. Inoltre, only_if semplicemente ignorerà la risorsa senza farmi sapere che qualcosa non va, mentre ignore_failure mi dà un buon messaggio nel registro: 'STDERR: ERRORE: Repository non trovato. ignore_failure è impostato, continua' – mmrobins