¿Que es?
Vagrant es una herramienta de software libre, multiplataforma, una herramienta que nos ayuda a crear y manejar máquinas virtuales con un mismo entorno de trabajo. Nos permite definir los servicios a instalar así como también sus configuraciones. Está pensado para trabajar en entornos locales y lo podemos utilizar con shell scripts, Chef, Puppet o Ansible.
Vagrant no corre una maquina virtual sino que simplemente se encarga de las características con las que debe crearse esa VM y los complementos a instalar.Para poder trabajar con las máquinas virtuales es necesario que también instalamos VirtualBox.
¿Para qué Sirve?
Vagrant sirve para ayudarnos a crear y configurar máquinas virtuales con determinadas características y configuraciones. La gran ventaja de vagrant es que posee un archivo de configuración Vagrantfile donde se centraliza toda la configuración de la VM que creamos.
Vagran no está pensado para trabajar en producion, para infraestructuras más complejas existen otras herramientas como Terraform que pertenece a la misma empresa HashiCorp.
Realmente se utilizar para los desarrolladores el local, que a través de un Vagrantfile, todos nuestros desarrolladores en local partan con el mismo entorno.
Instalación
Para comenzar vamos a instalar Vagrant, para ello podemos descargar el instalador desde el sitio oficial.
Provisioning
Para adaptar una máquina (box) a las necesidades del proyecto se puede usar lo que se denomina en vagrant provision:
–Script de shell
–Herramientas de alto nivel: Chef, Puppet, Ansible…
Ejemplo:
En esta entrada veremos cómo configurar una Box basado en centos 7.6, donde aprovisionaremos con ansible, la instalación y automatización de docker ce, docker-compose, desactivaremos firewalld y selinux.
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(“2”) do |config|
config.vm.box = “bento/centos-7.6”
config.vm.network “private_network”, ip: “192.168.30.10”
config.vm.provision “ansible_local” do |ansible|
ansible.playbook = “playbook_centos_install_docker.yaml”
end
end
Podemos descargarnos el playbook de ansible, para el provisioning de Vagrant desde:
https://github.com/agarciafer/labs-ansible/blob/master/playbook_centos_install_docker.yaml
Ejecutando el proyecto
Ahora en nuestro sistema operativo, tras instalar vagrant, nos creamos un directorio, donde tenemos el fichero Vagrantfile y el playbook de ansible, playbook_centos_install_docker.yaml y ejecutaremos:
# vagrant up
Esperamos a que se descargue el box, esta configuración nos creará en nuestro equipo un interfaz de red con la dirección 192.168.30.1 y en nuestra máquina de Linux tendrá la dirección ip 192.168.30.10, a la cual podremos acceder con el usuario:
vagrant/vagrant root/vagrant
Durante la creación de la mv, veremos el provisioning a través de ansible.
Tras la finalización de la creación y provisioning de nuestra mv, ahora nos podemos conectar a nuestra mv a través de ssh a la dirección ip 192.168.30.10, o con el comando de vagrant:
# vagrant ssh
[vagrant@localhost ~]$ su - Password: [root@localhost ~]# docker --version Docker version 19.03.8, build afacb8b [root@localhost ~]# docker-compose
Ahora ya tenemos nuestra mv, creada y configurada para trabajar con docker, en un entorno de Linux.
Conclusión
Como hemos visto en esta breve introducción Vagrant es muy fácil de instalar y utilizar, permitiéndonos configurar entornos locales solo con un par de comandos. Además, nos proporciona la seguridad de que todos los entornos que creemos con el mismo vagrantfile serán iguales.
También nos aseguramos de que una configuración no afecta a otra permitiéndonos trabajar con distintos lenguajes en simultáneo. Y si algo se rompe solo volvemos a crear nuestro entorno utilizando vagrant.
Si queremos eliminar nuestro proyecto:
# vagrant destroy




