12 – vagrant (vagrant 01)

Bienvenidos al episodio 12 de deployandome, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 21 de marzo de 2017.

Como en cada episodio quiero que agradecerle a todos los escuchas que difunden este podcast en las redes sociales.

También recordarles que pueden dejarnos sus comentarios en el blog https://deployando.me o contactarnos y seguirnos por twitter por @deployandome.

Les cuento que en el blog he comenzado una serie de artículos donde estoy analizando distintas APP para suscribirse a podcast. La ventaja de estas aplicaciones es enterarse automáticamente cuándo un nuevo episodio aparece y llevar la cuenta de los que aun no hemos escuchado.

Las aplicaciones para escuchar podcast nos ayudan a buscar catálogos, filtrando por cosas como temática, lenguaje o duración. Si buscan y revisan esos catálogos, seguramente van a encontrar podcast que sean de su interés, al punto que piden llegar a ser como yo: que casi no escucho otra cosa que audio “a demanda”, o sea podcast.

Uno de los que escucho en forma consecuente es La Tortulia Podcast que trata de historias reales poco conocidas, presentadas en forma muy divertida por sus conductores Diego y Sebastián. Precisamente en el episodio pasado del 14 de marzo, incluyeron un audio con mi voz, donde confesaba mi calidad de escucha a este excelente podcast uruguayo sobre el drama humano hilarante.

El tema del que trata este episodio de deployandome ha sido para mi un proceso de selección que no ha sido fácil .

Por un lado, se trata de un software que ha cambiado mi forma diaria de trabajar, que me ha ayudado a razonar problemas de una forma distinta, que lo ejecuto todo los días y mi actividad depende mucho de él; por lo que merece un espacio en este podcast.

Pero, por otro lado, me parece algo muy de base que tiendo a asumir que la mayoría de Ustedes ya conocen y usan. Pero tengo que admitir, que para mi sorpresa, que cada vez que lo nombro en distintos ambientes, la mayoría no lo conoce ni lo usa.

Semana pasada comencé mis cursos de Administración Linux en la Universidad Católica del Uruguay, en los que utilizamos este software como herramienta de base para todos los ejercicios del semestre. Y cuando lo presenté la inmensa mayoría de los estudiantes presentes no lo conocían.

Así que es con alegría que puedo decir que esas dudas que me mantuvieron indeciso se disiparon y que estoy convencido que esta serie que empezamos hoy va a ser positivo para muchos sysadmins y devops.

Comenzamos esta serie sobre Vagrant un software de la empresa HashiCorp.

Según su página oficial vagrantup.com: Vagrant es un software permite configurar, reproducir y compartir entornos de desarrollo.

Más concretamente, Vagrant nos permite configurar un flujo de trabajo fácil de usar, con foco en la automatización para hacer un despliegue y gestión rápida de entornos de desarrollo o producción.

Cuando me hablaron de Vagrant hace varios años atrás, pensaba muy sysadmin y cuando me dijeron “entornos de desarrollo” evoqué códigos, librerías, frameworks, IDE y compiladores, que no estaban muy en la línea de mi trabajo. Pero he ido construyendo una visión más devops y mis insumos (que son cosas como servidores, almacenamiento, redes, servicios, protocolos, usuarios, seguridad) se describen en archivos de texto con una sintaxis estricta, que esas descripciones son mi “entorno de trabajo” y de los cuales guardo historia y versiones en un repositorio Git. Qué más parecido a lo que es un entorno de desarrollo aplicado a lo mío.

Entonces Vagrant viene a ayudarme a trabajar en una forma más fluida y automática con mis entornos de servidores, redes y demás.

¿como hace esto Vagrant?

Parte de trabajar fundamentalmente con dos conceptos:

Un primer concepto es lo que vagrant llama el “proveedor”, que es un sistema de virtualización o un sistema que permite solicitar máquinas o infraestructura.

Out of the box, trabaja con Virtualbox, VMWare, Hyper-V y recientemente Docker.

Con plugins, que extienden la funcionalidad podemos trabajar con sistemas de virtualización como Proxmox y Parallels; contenedores como LXC y Openvz, o proveedores de cloud como Amazon, Azure, DigitalOcean, Google o sistemas basados en Openstack, solo por nombrar algunos.

La idea es simple: voy a describir credenciales y hardware para que vagrant vaya al proveedor correspondiente y levante el hardware.

El segundo punto es el "aprovisionamiento", que es todo lo que yo tengo que hacer para que ese hardware que acaba de nacer, llegue a mi nivel de producción.

Vagrant para aprovisionamiento permite utilizar shell script, ansible. puppet, chef, cfengine y salt.

Entonces tengo un único archivo llamado Vagrantfile donde describo el 100% de como es mi entorno que puede ser un único servidor o una serie de servidores, redes, características según el proveedor que me va a permitir levantar ese entorno.

Pero además, por cada equipamiento voy a tener un aprovisionamiento que es todo lo que le falta a la máquina recién levantada para estar a nivel de producción, desde crear usuarios, instalar paquetes, habilitar llaves ssh, permisos, archivos de configuración, servicios, clonar repositorios con aplicaciones, etc. etc.

El entorno, perfectamente lo puedo compartir con un colega para que lo utilice, o con la persona o el equipo encargado del desarrollo de la aplicación para que pueda desarrollar en un ambiente idéntico al de producción.

Hoy día casi cualquier cosa que quiero probar, desde una nueva versión de distribución, a un software, a una configuración de VPN primero pasa por un entorno vagrant que despliego localmente en mi notebook, para luego ser llevado a un ambiente de producción.

Vagrant fue iniciado en enero 2010 por Mitchell Hasimoto. En noviembre de 2012 Michell formó la empresa HashiCorp para dedicarse al desarrollo de Vagrant.

Vagrant es un proyecto de software libre alojado en Github y licenciado bajo licencia MIT.

En siguientes ediciones de esta serie sobre Vagrant tengo planeado profundizar en alguno de los usos que yo le doy, tanto a nivel educativo como profesional.

Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me

Hasta la próxima edición.

Referencias: