Aprovisionamiento

Por supuesto que la reutilización de los boxes disminuye en gran medida el esfuerzo operativo, sin embargo aun quedan pendientes tareas que son repetibles y no requieren de la intervención de un humano, estas tareas son el foco de los programas de aprovisionamiento.

Los programas de aprovisionamiento corren dentro de un proceso Vagrant y se encargan de automatizar tareas como: instalar software, realizar configuraciones, subir servicios, etc. dentro de las maquinas virtuales.

Vagrant provee interfaces para multiples mecanismos de aprovisionamiento que van desde la ejecución de un shell hasta la integración con varios sistemas de gestión de la configuracón populares en la industria, tales como Ansible, CFEEngine, Chef, Docker, Puppet y Salt.

Ejecución

Los programas de aprovisionamiento corren en las siguientes partes del proceso vagrant:

  • Al momento de iniciar el ambiente vagrant, es decir que esto sucede solo cuando se ejecuta el comando vagrant up por primera vez o luego de haber destruido el ambiente. Esto significa que si el ambiente ya ha sido creado, la segunda vez que se corra el comando vagrant up no se realizara ninguna tarea de aprovisionamiento a menos que se añada el parámetro --provision.

    Ejemplo: vagrant up --provision

  • Cuando el comando vagrant provision es usado para iniciar el ambiente.

    Ejemplo: vagrant provision

  • Cuando el parámetro --provision es usado para reiniciar el ambiente.

    Ejemplo: vagrant reload --provision

  • En cada inicio o reinicio, es decir siempre. Esto es posible si el parámetro run: "always" esta declarado en la configuración. En la siguiente sección de configuración se muestra un ejemplo de este caso.

También es posible inhabilitar un programa de aprovisionamiento o correr uno en especifico, mediante los comandos --no-provision y --provision-with respectivamente.

Configuración

La configuración de cualquier programa de aprovisionamiento se realiza en el archivo VagrantFile, mediante la declaración del siguiente bloque:

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "first_provisioner", type: "shell", run: "always" do |s|
    s.inline = "echo hello"
  end
end

En este ejemplo se define que el programa de aprovisionamiento es llamado "first_provisioner", que es de tipo shell y la línea que ejecuta es "echo hello, ademas esta indicando este se ejecutara cada vez que se inicie o reinicie el ambiente.

Multi-provisionamiento

No hay ninguna restricción en usar varios programas de aprovisionamiento, solo hay que tener en cuenta los siguiente:

  • El orden de ejecución esta dado por la secuencia en que se declaren.

  • Si se declaran en multiples niveles como por ejemplo de forma global y anidados, tenga en cuenta que primero se ejecutan los programas de anidamiento declarados en el bloque externo y luego se ejecutan los que del bloque interno.

Ejemplo ejecución de multiples programas de aprovisionamiento:

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "echo Hola"

  config.vm.define "web" do |web|
    web.vm.provision "shell", inline: "echo mundo"
  end

  config.vm.provision "shell", inline: "echo cruel"
end

*La salida de este programa sera "Hola cruel mundo".

results matching ""

    No results matching ""