Proveedores son herramientas que le permiten automatizar su flujo de trabajo cuando está iniciando una máquina virtual. vagabundo admite aprovisionadores como file, shell, ansible, puppet y salt stack. Puede usar cualquiera de estas herramientas y automatizar el flujo de trabajo de implementación de su máquina virtual.
[ También te puede interesar:Primeros pasos con Vagrant y VirtualBox ]
Este artículo verá dos de los archivos y shell del aprovisionador que puede usar regularmente cuando está implementando nuevas máquinas virtuales.
Cómo usar un aprovisionador de Shell en Vagrant
Concha los aprovisionadores le permiten ejecutar shell comandos en su máquina vagabunda. Para usar cáscara provisioner tiene que pasar shell como argumento a vm.provision método.
config.vm.provision "shell"
Hay dos formas de ejecutar shell comandos en vagabundo.
- Scripts en línea
- Scripts externos
Cómo trabajar con secuencias de comandos en línea en Vagrant
En el en línea script, pasará el shell comandos dentro del Vagrantfile . Hay muchas maneras de usar un script en línea. El siguiente ejemplo muestra cómo usar un script en línea. Después de definir el aprovisionador de shell, debe pasar en línea y comando como un par clave-valor. Continúe, modifique el Vagrantfile y agregue la línea anterior.
config.vm.provision "shell", inline: "echo Welcome to linuxshelltips"
Antes de ejecutar cualquier proveedor hay un punto importante a tener en cuenta. El aprovisionador normalmente se ejecuta solo cuando ejecuta "vagrant up ” por primera vez.
Eche un vistazo a la imagen a continuación, agregué el aprovisionador de shell al Vagrantfile e inicié mi máquina virtual y me dice que use --provision
marca ya que esta no es la primera vez que inicio esta VM.
$ vagrant up --provision # Starting the VM $ vagrant reload --provision # Restarting the VM
También puedes usar bloquear sintaxis que ofrece más legibilidad. Esto es lo mismo que la definición anterior de una línea.
config.vm.provision "shell" do |cmd| cmd.inline = "echo Welcome to Linuxshelltips" end
Si ha trabajado con bash, podría haber usado heredoc . Similar a ese Ruby también es compatible con Heredoc, que puede usar en archivos vagabundos y redirigir una serie de comandos bash hacia él. Aquí estoy intentando instalar epel-repository e instale el wget comando.
$COMMANDS = <<-'BLOCK' yum install epel-release -y yum install wget -y BLOCK config.vm.provision "shell", inline: $COMMANDS
Permítanme explicar lo que hace el código anterior. Estoy creando una variable llamada $COMMANDS
y almacenar heredoc en la variable. Estoy pasando el $COMMANDS
variable como el valor en línea que ejecutará la serie de yum comandos que pasamos dentro del bloque de código.
Puede ver en la captura de pantalla anterior tanto epel-repo y wget se instalan correctamente. También puede llamar a los scripts que ya están disponibles en la máquina vagabunda. Tengo un script de prueba llamado welcome.sh en vagrant host y para ejecutarlo agregue la siguiente sintaxis al archivo de configuración.
config.vm.provision "shell", inline: "/usr/bin/bash /home/vagrant/welcome.sh"
Si desea que el aprovisionador se ejecute siempre que inicie o reinicie su máquina virtual, puede usar la definición de estilo de bloque y pasar "siempre ” a “correr ”. Ejecutar acepta dos valores "siempre ” y “nunca ”. Cuando se establece en "nunca ” el aprovisionador no se ejecutará.
Vagrant.configure("2") do |config| config.vm.provision "shell", inline: "/usr/bin/bash ~/welcome.sh", run: "always" end
También puede pasar --no-provision
marca con el comando de inicio/reinicio para suprimir el comportamiento del parámetro de ejecución.
$ vagrant up --no-provision $ vagrant reload --no-provision
Cómo trabajar con secuencias de comandos externas en Vagrant
Una opción alternativa al script en línea es el script externo. Esto es bastante simple, cree un script de shell externamente y proporcione la ruta del script en el aprovisionador de shell como se muestra a continuación.
config.vm.provision "shell", path: "/home/karthick/welcome.sh"
El vagabundo copiará el script en /tmp/ ubicación en la máquina virtual y activará el script.
Cómo usar el aprovisionador de archivos en Vagrant
El aprovisionador de archivos le permite cargar archivos en directorios a la máquina vagabunda desde su máquina host. El aprovisionador de archivos acepta rutas de origen y rutas de destino de dos parámetros.
Para copiar un archivo, agregue la siguiente propiedad en su Vagrantfile con la ruta de origen y destino. Reemplace la ruta de origen y destino según su ubicación.
config.vm.provision "file", source: "/home/karthick/vagrant/centos7/script.sh" , destination: "~/script.sh"
Si inicia/reinicia la máquina virtual, verá que en el archivo de registro se llama al aprovisionador y el archivo se copia en la máquina virtual.
Para copiar un directorio, debe pasar la ruta del directorio en origen y destino. Si desea el mismo nombre para su directorio que en el origen, debe proporcionar el mismo nombre de destino.
config.vm.provision "file", source: "/home/karthick/vagrant/centos7" , destination: "~/centos7"
En el próximo artículo, analizaremos cómo utilizar ansible provisioner para automatizar nuestro flujo de trabajo mediante playbooks.