Seleccionar página

¿Qué es Ansible? ¿Y por qué?

Qué es Ansible, para los ansiosos: Ansible es una plataforma de automatización TI disponible como software libre que facilita el despliegue de aplicaciones, la orquestación multi-nivel y la gestión de la configuración de las infraestructuras.

¿Cuál es el contexto?

Nuestro interés por estos productos proviene de una firme vocación por acelerar la entrega de valor («el paso a producción»), alineando las conversaciones con los procesos de construcción de software, de aseguramiento y de suministro TI. La facultad de sistematizarlos y automatizarlos es el factor técnico que proporciona vida y credibilidad a esta aspiración.

Qué es Ansible

La creación Ansible

Son varios los jugadores que participan en este escenario: orquestadores, contenedores, virtualizadores, automatizadores, etc. Todo ello lo servimos empaquetado como herramientas DevOps.

Algunos de los jugadores son:

  • Especializados: VirtualBox, Puppet, Vagrant, Docker, Chef o Ansible.
  • Generalistas: IBM, HP, Oracle …

En automatización de infraestructuras TI, el esquema general que se está aplicando es un lenguaje que permita formalizar / describir las características de la infraestructura TI y una plataforma que ejecute las órdenes de forma automática. En este ámbito destacan Chef, Puppet y Ansible.

Como todo, cada uno tiene sus matices. Por nuestra parte, consideramos que Ansible reúne un buen equilibrio: una curva de aprendizaje moderada, buena capacidad y …

Batman_Ansible.jpg

… una comunidad Ansible muy enérgica (incluyendo una vía de evolución comercial).

Las actividades que podemos plantear con esta tecnología son:
  • Administración centralizada de configuraciones TI
  • Despliegue automatizado de aplicaciones
  • Orquestación TI multi-nivel (máquinas virtuales/contenedores – infraestructura/servidores – productos/aplicativos)
    .. hacia el despliegue continuo … ¡y más allá!

Dentro de nuestras líneas de trabajo relacionadas con las infraestructuras TI, consideramos Ansible como una de las herramientas con mejor proyección porque contribuye en nuestro caminar hacia la Calidad continua del Software.

Bien, pero ¿Qué es Ansible?

Ansible es una plataforma de automatización TI disponible como software libre que destaca por utilizar una arquitectura sin agentes, a diferencia de otros programas de control de configuración como Chef y Puppet.

Combina instalación multi-nodo, ejecuciones de tareas ad hoc y administración de configuraciones. Maneja nodos a través de SSH y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior) para instalarlo.

Ansible dispone de módulos que trabajan sobre JSON para intercambio de datos y admite que la salida estándar sea escrita en cualquier lenguaje. Además, nativamente utiliza YAML para describir configuraciones reusables de los sistemas.

El diseño de Ansible incluye:
  1. «Mínimo por naturaleza». Lo ideal es que los sistemas de administración de infraestructuras TI no impongan dependencias adicionales (lo ideal :-).
  2. «Consistente». Viene con las «pilas incluidas», es decir, con una rica biblioteca de componentes ya construidos.
  3. «Seguro». Ansible no instala agentes vulnerables en los nodos.
  4. «Alta confiabilidad». El modelo de idempotencia es aplicado para las instalaciones y configuraciones, para prevenir efectos secundarios en la ejecución repetitiva de scripts.
  5. «Suave curva de aprendizaje». Los playbooks usan un lenguaje descriptivo simple, basado en YAML.

Con estos mimbres nos facilita el despliegue de aplicaciones, la orquestación multi-nivel y la gestión de la configuración. Para ello disponemos de los siguientes componentes:

  • Módulos
    Los módulos son las unidades de trabajo en Ansible. Cada módulo es auto-suficiente y puede ser escrito en en lenguaje estándar de scripting, como ser Python, Perl, Ruby, Bash, etc. Una de las propiedades principales de los módulos es la idempotencia la cual asegura que ninguna operación se realizará una vez que el sistema ha alcanzado el estado deseado.
  • Playbooks
    Mediante los Playbooks se expresan las configuraciones, orquestaciones y despliegues en Ansible.

El formato de los Playbooks es YAML. Cada Playbook agrupa un conjunto de instrucciones para un fin.
Así, un «Playbook» contiene «Plays»,

cada «Play» contiene «Tasks»,

cada «Task» llama a «Modules».

Una muestra de formato Playbook:
– Name: install and start apache
hosts: webservers
user: root
gather_facts: no
tasks:
– name: install httpd
yum: name=httpd state=present
– name: start httpd
service: name=httpd state =running

 ¿Por dónde seguir?

Aunque el término ansible se usa en la literatura de ciencia ficción para describir un dispositivo hipotético de comunicación más rápido que la luz, no podemos decir que su curva de aprendizaje sea instantánea. Por tanto, ahora toca ampliar esta sucinta recopilación aprovechando la excelente documentación disponible:

Bienvenido al apasionante viaje desde la automatización de infraestructuras hacia la automatización del despliegue. Las tuberías de la Entrega Continua («Continuous Delivery pipelines») te están esperando a la vuelta de la esquina ¡nos vemos allí!

Former CD pipelines 1900 :-)

Former CD pipelines 1900 🙂

 

 

 

Panel Testing - Centro de Excelencia

Panel Testing - Centro de Excelencia

Nuestro Centro de Excelencia en SQA & Testing (CEST) es responsable de asegurar la Calidad del Software en los proyectos que desarrollamos, así como de evolucionar nuestro Know How en esta actividad. Si quieres conocernos mejor, visítanos en esta página, o contacta con nosotros vía e-mail en esta dirección.

Déjanos tu comentario

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This