Fornitori sono strumenti che consentono di automatizzare il flusso di lavoro durante l'avvio di una macchina virtuale. Vagabondo supportare i provisioner come file, shell, ansible, puppet e salt stack. Puoi utilizzare uno qualsiasi di questi strumenti e automatizzare il flusso di lavoro di distribuzione della macchina virtuale.
[ Potrebbe piacerti anche:Guida introduttiva a Vagrant e VirtualBox ]
In questo articolo verranno visualizzati due file e shell del provider che potresti utilizzare regolarmente durante la distribuzione di nuove macchine virtuali.
Come utilizzare uno Shell Provisioner in Vagrant
Conchiglia i provisioner ti consentono di eseguire shell comandi nella tua macchina vagabonda. Per utilizzare shell provisioner devi passare shell come argomento a vm.provision metodo.
config.vm.provision "shell"
Esistono due modi per eseguire shell comandi in vagabondo.
- Script in linea
- Script esterni
Come lavorare con lo script in linea in Vagrant
In in linea script, passerai la shell comandi all'interno del Vgrantfile . Esistono molti modi per utilizzare uno script inline. L'esempio seguente mostra come utilizzare uno script inline. Dopo aver definito il provisioner della shell, devi passare inline e command come coppia chiave-valore. Vai avanti e modifica il Vagrantfile e aggiungi la riga sopra.
config.vm.provision "shell", inline: "echo Welcome to linuxshelltips"
Prima di eseguire qualsiasi provisioner c'è un punto importante da notare. Provisioner normalmente viene eseguito solo quando esegui "vagabondo ” per la prima volta.
Dai un'occhiata all'immagine qui sotto, ho aggiunto il provisioner della shell a Vagrantfile e ho avviato la mia macchina virtuale e mi dice di usare il --provision
flag poiché non è la prima volta che avvio questa VM.
$ vagrant up --provision # Starting the VM $ vagrant reload --provision # Restarting the VM
Puoi anche utilizzare blocco sintassi che offre maggiore leggibilità. Questa è la stessa della precedente definizione di una riga.
config.vm.provision "shell" do |cmd| cmd.inline = "echo Welcome to Linuxshelltips" end
Se hai lavorato con bash potresti aver usato heredoc . Simile a quel Rubino supporta anche Heredoc che puoi usare nei file vagabondi e reindirizzare ad esso una serie di comandi bash. Qui sto cercando di installare epel-repository e installa il wget comando.
$COMMANDS = <<-'BLOCK' yum install epel-release -y yum install wget -y BLOCK config.vm.provision "shell", inline: $COMMANDS
Lascia che ti spieghi cosa fa il codice sopra. Sto creando una variabile chiamata $COMMANDS
e archiviare heredoc nella variabile. Sto passando il $COMMANDS
variabile come valore da inline che eseguirà la serie di yum comandi che abbiamo passato all'interno del blocco di codice.
Dallo screenshot qui sopra puoi vedere sia epel-repo e wget sono installati correttamente. Puoi anche chiamare gli script che sono già disponibili nella macchina vagabonda. Ho uno script di prova chiamato welcome.sh in vagrant host e per eseguirlo aggiungi la seguente sintassi al file di configurazione.
config.vm.provision "shell", inline: "/usr/bin/bash /home/vagrant/welcome.sh"
Se desideri che il provisioner venga eseguito ogni volta che avvii/riavvii la tua macchina virtuale, puoi utilizzare la definizione dello stile di blocco e passare "sempre " a "correre ”. Esegui accetta due valori "sempre " e "mai ”. Quando è impostato su "mai ” il provisioner non verrà eseguito.
Vagrant.configure("2") do |config| config.vm.provision "shell", inline: "/usr/bin/bash ~/welcome.sh", run: "always" end
Puoi anche passare --no-provision
contrassegnare con il comando di avvio/riavvio per sopprimere il comportamento del parametro di esecuzione.
$ vagrant up --no-provision $ vagrant reload --no-provision
Come lavorare con lo script esterno in Vagrant
Un'opzione alternativa allo script inline è lo script esterno. Questo è piuttosto semplice, crea uno script di shell esternamente e fornisci il percorso dello script nel provisioner della shell come di seguito.
config.vm.provision "shell", path: "/home/karthick/welcome.sh"
Il vagabondo copierà lo script su /tmp/ posizione nella macchina virtuale e attiverà lo script.
Come utilizzare File Provisioner in Vagrant
File Provisioner ti consente di caricare i file sono directory sulla macchina vagabondo dalla tua macchina host. File Provisioner accetta due percorsi di origine e percorsi di destinazione dei parametri.
Per copiare un file aggiungi la seguente proprietà nel tuo Vagrantfile con il percorso di origine e destinazione. Sostituisci il percorso di origine e di destinazione in base alla tua posizione.
config.vm.provision "file", source: "/home/karthick/vagrant/centos7/script.sh" , destination: "~/script.sh"
Se avvii/riavvii la macchina virtuale vedrai nel log file che il provisioner viene chiamato e il file viene copiato nella macchina virtuale.
Per copiare una directory devi passare il percorso della directory in origine e destinazione. Se vuoi lo stesso nome per la tua directory come nel sorgente devi fornire lo stesso nome di destinazione.
config.vm.provision "file", source: "/home/karthick/vagrant/centos7" , destination: "~/centos7"
Nel prossimo articolo, daremo un'occhiata a come rendere disponibile il provisioner per automatizzare il nostro flusso di lavoro utilizzando i playbook.