2015-04-15 9 views
7

Nel mio Vagrantfile, ho un provisioner in questo modo:In Vagrant, posso impostare un provisioner affinché venga eseguito solo manualmente?

config.vm.provision "reset", type: "shell", run: "always" do |s| 
    s.privileged = false 
    s.inline = "bash /path/to/my/reset/script.sh" 
end 

E quando normalmente provisioning vagabondo, funziona benissimo. Ma quello che vorrei fare è impostare un provisioner che funzioni solo quando lo chiamo manualmente. Quindi, se dovessi avere il seguente provisioner:

config.vm.provision "otherScript", type: "shell", run: "manual" do |s| 
    s.privileged = false 
    s.inline = "bash /path/to/my/other/script.sh" 
end 

Vorrei correre con vagrant provision --provision-with otherScript. Posso già farlo con altri fornitori. Ma non riesco a trovare un modo per farlo in modo che quando faccio cose come vagrant provision salta qualsiasi con un'impostazione di esecuzione di manual. Non riesco a trovare nulla nei documenti ad esso correlati tranne che posso usare "sempre".

Ho preso in considerazione l'utilizzo di qualcosa come fabric o invoke (python 3), ma poi avrei dovuto configurarlo su tutti i computer del mio team. Che posso impostare con uno script, ma ho pensato che potrebbe essere più semplice se possibile.

C'è un modo per realizzare questo? Per configurare un provisioner che viene eseguito sempre solo quando viene chiamato manualmente?

+2

Il gestore di shell sembra supportare solo due modalità di esecuzione: una volta (impostazione predefinita) o sempre, quindi penso che la risposta alla domanda inviata sia "no, non possibile". Che cosa stai cercando di ottenere con questo? Potrebbero esserci alcune soluzioni alternative per ottenere lo stesso risultato. – BrianC

+0

Sono d'accordo con @BrianC, se ne hai assolutamente bisogno, esegui solo manualmente cosa c'è di sbagliato con un SSH nella scatola e poi esegui lo script? – ydaetskcoR

+0

Sì, questo è quello che stavo pensando era il caso. Non sono riuscito a trovare altra documentazione su di esso. Sto già scrivendo uno script ssh per eseguire i miei script. Grazie. – skift

risposta

5

Esiste la necessità legittima di provisioners manuali/su richiesta/espliciti quando è necessario disporre di un'attività complessa, ripetibile e riproducibile all'interno del team, ad es. reimpostare un database su una lavagna pulita quando necessario.

Sfortunatamente, questa opzione è ancora mancante in Vagrant direttamente. Vedi GitHub per la richiesta di funzionalità: https://github.com/mitchellh/vagrant/issues/5355.

Fortunatamente, è facile aggirare questa limitazione tramite Vagrantfile. Dopotutto è solo Ruby.

+0

Ooh, mi piace davvero questo percorso. Almeno, finché qualcosa non viene ufficializzato o viene implementata quella richiesta di funzionalità. Anche se ultimamente non uso più vagabondo, lo uso al lavoro, quindi sarebbe utile. – skift

Problemi correlati