GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo trabajar con File y Shell Provisioner en Vagrant

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.

  1. Scripts en línea
  2. 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.


Linux
  1. Cómo programar con Bash:Sintaxis y herramientas

  2. Linux:¿cómo hacer que Oracle Java 7 funcione con Setcap Cap_net_bind_service+ep?

  3. ¿Cómo crear un archivo temporal en Shell Script?

  4. Cómo trabajar con el administrador de archivos del panel web de CentOS

  5. ¿Cómo rellenar un archivo con FF usando dd?

Cómo crear nuevos usuarios en OpenShift con htpasswd y OAuth

Cómo trabajar con procesos en primer plano y en segundo plano en Linux

Cómo trabajar con enlaces duros y suaves en Linux

Cómo crear una máquina virtual con Vagrant y VirtualBox

Cómo trabajar con Ansible Provisioner en Vagrant

Cómo instalar y usar Nu Shell en Linux