¿Qué es Ansible?
Ansible es una potente herramienta de automatización, que permite el uso de despliegues de entornos y configuraciones totalmente personalizados. La plataforma fue lanzada en 2012 por Michael DeHaan. Podemos utilizar Ansible para automatizar tareas de comprobación (monitorización de sistemas, etc.) y/o también para el aprovisionamiento de software de forma automática.
El diseño de Ansible se define como mínimo por naturaleza, ya que los sistemas de administración no imponen dependencias adicionales. El controlador en Ansible, se comunica con los nodos a través de SSH, sin necesidad de agentes, lo que hace de Ansible una plataforma segura y más eficiente.
Elementos más importantes de Ansible
Para tener una visión global de Ansible, es necesario conocer algunos de los elementos más importantes que forman la infraestructura de la plataforma:
- Máquina central de administración: es la máquina física o virtual desde la que lanzaremos las tareas a los nodos. Ansible solo se instala en esta máquina.
- Nodos: se definen por defecto en el archivo /etc/ansible/hosts de la máquina central. Sólo es necesario tener el servicio SSH y Python 2.5 instalado en ellos para comunicarse con el controlador.
- Inventory: archivo donde registramos los nodos. Podemos utilizar múltiples inventarios, definiendo grupos de hosts según nuestras necesidades. Por ejemplo, desarrollo y producción.
- Playbook: archivo que lista las tareas que queramos realizar. El formato del archivo es YAML. YAML es un lenguaje descriptivo simple(Human-readable), lo que suaviza la curva de aprendizaje de Ansible.
- Tasks: son las tareas a ejecutar. Se definen dentro de los Playbooks y son las acciones que llevará a cabo la máquina central sobre los nodos. Algunos ejemplos de su uso son: reiniciar y/o instalar cualquier servicio en los nodos.
- Module: nos permite ejecutar tareas de forma más fácil, sin necesidad de realizar un script para ello. Un ejemplo de modulo seria shell (permite ejecutar comandos en la terminal de los nodos).
- Role: es la mejor forma de organizar nuestros Playbooks en Ansible. Exigen una estructura de archivos determinada.
- Handler: son como las tareas, pero sólo se ejecutan si la tarea contiene la directiva notify que indica que algo ha cambiado. Su uso más común es para el reinicio de servicios tras la modificación de cualquier configuración.
Una de las grandes ventajas de Ansible a nivel empresarial, es el poder conseguir la armonía entre los entornos de desarrollo y producción, ya que facilita mucho el poder aprovisionar las mismas configuraciones en entornos diferentes.
Una vez introducidas las nociones básicas acerca de la sencilla, pero potente plataforma de Ansible, es hora de poner en práctica algunos ejemplos, para entender mejor como funciona Ansible.