Vagrant y ansible

Una combinación explosiva

2ª Parte: Ansible

Alberto Molina Coballes / @alberto_molina y José Domingo Muñoz Rodríguez / @Pledin_JD

Ansible. Introducción

  • En ciencia ficción: Dispositivo que permite comunicarse a mayor velocidad que la luz
  • Ansible es una aplicación libre de orquestación escrita en python
  • La primera versión se desarrolló en febrero de 2012 (!)

Ansible. Introducción (2)

  • Ventajas frente a otro software de automatización (puppet o chef):
    • Muy fácil instalación
    • Comunidad de desarrolladores muy activa
    • Muy pocas dependencias
    • Ideal para entornos pequeños y homogéneos
    • No es necesario configurar nada en los clientes
  • Inconvenientes:
    • Más complejo en entornos muy heterogéneos
    • Menos "recetas" desarrolladas previamente al ser muy nuevo

Lo importante no es qué herramienta de gestión de la configuración utilizar. Lo importante es utilizar al menos una.

Ansible. Instalación

Para utilizar la última versión:


# apt-get install python-pip python-dev
# pip install ansible
	    

Voila!

Ansible. Playbooks

Las tareas a realizar por ansible se describen en formato yaml en ficheros denominados “playbooks”, que pueden incluir una o varias jugadas, por ejemplo:

	
	       
---
- name: Apache installation
  hosts: all
  sudo: True
  tasks:
  - name: Set proper sources.list
    copy: >
      src=files/etc/apt/sources.list
      dest=/etc/apt/sources.list
      owner=root
      mode=644
  - name: Ensure apache is installed (after updating)
    apt: pkg=apache2 update_cache=yes
	       
	     

Vagrant + Ansible

Imagina que la siguiente situación para una determinada configuración de máquinas virtuales se pudiera hacer automáticamente:

  • Levantar las máquinas virtuales
  • Configurar la red
  • Realizar las actualizaciones de software
  • Instalar los paquetes del software que se va a utilizar
  • Copiar los ficheros de configuración de plantillas previamente creadas
  • Levantar o parar los servicios que se determinen
  • Ejecutar cualquier tarea en cada una de las máquinas virtuales
  • Dejar el entorno completamente operativo

No es ningún sueño: Eso es vagrant + ansible :-)