GNU/Linux >> Linux Esercitazione >  >> Linux

Come lavorare con File e Shell Provisioner in Vagrant

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.

  1. Script in linea
  2. 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.


Linux
  1. `^m` E come sbarazzartene?

  2. Lo scopo di .bashrc e come funziona?

  3. Come modificare i permessi di file e directory con File Manager

  4. Come lavorare con CentOS Web Panel File Manager

  5. Come riempire un file con FF usando dd?

Come creare nuovi utenti in OpenShift con htpasswd e OAuth

Come lavorare con il processo in primo piano e in background in Linux

Come lavorare con hardlink e softlink in Linux

Come creare una macchina virtuale con Vagrant e VirtualBox

Come lavorare con Ansible Provisioner in Vagrant

Come installare e utilizzare Nu Shell su Linux