Introducción a Ansible

  Ansible es un motor de código abierto que automatiza los procesos para preparar la infraestructura, gestionar la configuración, implementar las aplicaciones y organizar los sistemas, entre otros procedimientos de tecnología de la información.
  Este programa combina instalación multi-nodo (es decir: permite desplegar configuraciones de servidores y servicios por lotes), ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación.​ Gestiona nodos a través de SSH y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior​) para instalarlo. Dispone de módulos que trabajan sobre JSON y la salida estándar puede ser escrita en cualquier lenguaje. Nativamente utiliza YAML para describir configuraciones reutilizables de los sistemas.
  Este programa está incluido como parte de la distribución de Linux Fedora, heredada de Red Hat Inc., y también está disponible para Red Hat Enterprise Linux, CentOS y Scientific Linux a través de los Paquetes Extras para Enterprise Linux (EPEL) como también para otros sistemas operativos. Ansible tiene soporte comercial de Ansible, Inc.
  Ansible se conecta a los nodos y les inserta pequeños programas denominados módulos, los cuales permiten realizar tareas de automatización en la plataforma. Luego ejecuta esos programas, que funcionan como modelos de recurso del estado deseado de los sistemas, y los retira cuando finaliza la tarea.

CARACTERÍSTICAS

  Este programa posee las siguientes características básicas:
  •   Aprovisionamiento: Permite aprovisionar las últimas plataformas en la nube, anfitriones virtualizados e hipervisores, dispositivos de red y servidores físicos.
  •   Gestión de la configuración: Establece y mantiene el rendimiento del producto, al registrar y actualizar la información que describen los programas y equipamiento informático físico de una empresa. Normalmente, esta información incluye las versiones y actualizaciones que se han aplicado a los paquetes de programas instalados y las ubicaciones y direcciones de red de los dispositivos físicos informáticos.
  •   Despliegue de aplicaciones: Cuando se define la aplicación con Ansible y se maneja su despliegue con Ansible Tower, es posible llevar un control de todo el ciclo de vida de una aplicación. Desde desarrollo hasta producción. 
  •   Seguridad y Cumplimiento: Permite definir las seguridad en los sistemas de forma sencilla. Utilizando la sintaxis de un manual de tácticas ("playbook", en inglés) es posible definir reglas de cortafuegos, gestión de usuarios y grupos y políticas de seguridad personalizadas en los sistemas que se estén gestionando y además posees un gran número de módulos que ayudan en la labor.
  •   Orquestación: Permite orquestar los despliegues de OpenStack por ejemplo. Compañías como Rackspace, CSC, HP, Cisco e IBM confían en Ansible para mantener sus nubes OpenStack disponibles de manera simple y segura.




FUNCIONAMIENTO

  Puesto que Ansible no necesita agentes, una vez instalado no se requiere instalar ningún programa en los nodos que gestiona. La plataforma lee información en el inventario (descripción de los nodos a los que puede acceder esta plataforma) para saber qué máquinas desea gestionar. Aunque cuenta con un archivo de inventario predeterminado, el usuario puede crear uno propio y definir los servidores que desea que administre.
  El programa utiliza el protocolo SSH para conectarse a los servidores y ejecutar las tareas. De forma predeterminada, utiliza claves y un agente SSH y se conecta a las máquinas remotas con el nombre del usuario actual. No es necesario iniciar sesión como superusuario; puede hacerse como cualquier otro y luego utilizar los comandos su o sudo para adquirir nuevos privilegios.
  Una vez que Ansible se conecta, transfiere los módulos [unidades de trabajo; cada módulo es autosuficiente y puede ser escrito en lenguajes de guiones estándar (Python, Perl, Ruby, Bash, etc.); una de sus propiedades principales es la idempotencia la cual asegura que ninguna operación se realizará una vez que el sistema ha alcanzado el estado deseado] que requiere el comando o el manual de tácticas a la máquina remota para que los ejecute. La plataforma utiliza las plantillas de YAML comprensibles para las personas, de manera que los usuarios puedan programar la ejecución automática de las tareas repetitivas sin necesidad de aprender un lenguaje de programación avanzado.
  Este programa contiene módulos integrados que puede utilizar para automatizar las tareas, o puede optar por escribir los suyos en cualquier lenguaje que pueda devolver mensajes en JSON (Ruby, Python, Bash...). En el caso de los módulos para la automatización de Windows, incluso es posible escribirlos en PowerShell.

EL MANUAL TÁCTICO

  Un manual táctico, o manual de tácticas, es un archivo YAML que contiene por lo menos una jugada ("play", en inglés), y que sirve para definir el estado deseado de un sistema.
  Las jugadas son un conjunto ordenado de tareas (elementos que llaman a los módulos de Ansible y conforman una jugada, en la cual se ejecutan en el orden en que se escribieron) que se ejecutan en las selecciones del anfitrión desde el archivo de inventario de este programa.


  Cuando esta plataforma comienza a funcionar, puede hacer un seguimiento del estado del sistema. Si al hacerlo detecta que la descripción del manual táctico sobre el sistema no coincide con su estado real, implementará todos los cambios necesarios para que se cumpla esta correspondencia.
  Ansible incluye un "modo de verificación" que muestra la forma en que reaccionaría la plataforma, pero sin que se implementen cambios concretos, de manera que pueda validar los manuales de tácticas y los comandos específicos antes de modificar el estado del sistema. Los controladores en este programa sirven para ejecutar una tarea específica tras haberse realizado un cambio en el sistema. Los activan las tareas, y se ejecutan una sola vez, después de todas las demás jugadas del manual táctico.
  Por su parte, las variables son un concepto de este programa que le permiten modificar la ejecución de los manuales de tácticas y sirven para compensar las diferencias entre los sistemas, como las versiones de los paquetes o las rutas de los archivos. Ansible posibilita la ejecución de manuales tácticos en diferentes sistemas. Estas variables se deben definir en función de la tarea que está realizando el manual de tácticas, siguiendo un orden de prioridad que establece cuáles prevalecerán sobre otras, lo cual se debe tener en cuenta a la hora de incluirlas en el mismo.
  Las funciones de Ansible son un tipo de manual táctico especial completamente autónomo y portátil que incluye las tareas, las variables, las plantillas de configuración y otros archivos de soporte que son necesarios para completar una organización compleja. Una colección puede contener varias funciones, lo cual facilita el intercambio de contenido a través de Automation Hub y Ansible Galaxy.
  Para trabajar con este programa, también se debe comprender de qué se tratan las colecciones, que son un formato de distribución para el contenido de Ansible que puede incluir manuales tácticos, funciones, módulos y complementos.

GESTIÓN DE LA CONFIGURACIÓN

  La gestión de la configuración es un proceso que busca mantener los sistemas informáticos, los servidores y sus programas en un estado deseado y uniforme. Permite garantizar que un sistema funcione como se espera a medida que se realizan cambios. Tradicionalmente, los administradores de sistemas se encargaban de hacerlo de forma manual o con guiones personalizados.
  Cuando se utiliza Ansible como una herramienta para la gestión de la configuración, su función es almacenar el estado actual de los sistemas y ayudar a mantenerlo.
  Las herramientas de gestión de la configuración agilizan los cambios y las implementaciones, eliminan la probabilidad de que haya errores humanos y permiten que la gestión del sistema sea predecible y ajustable. También posibilitan el seguimiento del estado de los recursos y evitan la repetición de algunas tareas.
  Por otra parte, mediante la gestión automatizada de la configuración de Ansible se mejora la recuperación del sistema después de un evento importante, puesto que si un servidor falla por alguna razón desconocida, es posible implementar uno nuevo rápidamente y obtener un registro de las modificaciones o las actualizaciones efectuadas para identificar el origen del problema.
  En resumen, Ansible incluye las herramientas que se necesitan para implementar la automatización en toda la empresa, como los manuales tácticos y los sistemas de análisis. Ofrece un panel visual, el control de acceso basado en funciones y otras herramientas, para que los usuarios centralicen y controlen la infraestructura de TI, lo cual ayuda a reducir la complejidad operativa.
  Además, esta plataforma también incluye Automation Analytics, una función que permite que los miembros del equipo de operaciones analicen el uso, el tiempo de actividad y los patrones de ejecución de los diferentes equipos que utilizan la plataforma.

  Aguardo que la presente entrada haya sido interesante para el lector. De ser así, espero que éste la comente y/o la comparta, por favor.
  

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.