Inicio Empresa ¿Qué es Ansible?

¿Qué es Ansible?

by Autor Invitado

Ansible es una herramienta de automatización sin agentes escrita en Python. Se conecta a sus clientes a través de SSH y le permite automatizar las tareas aburridas y repetitivas que no desea realizar. Le permite tomar una tarea realizada por un humano que puede tardar una hora en realizarse y convertirla en un solo comando que se completa en minutos. Esto mejora su rendimiento y le permite comenzar a trabajar en el próximo gran proyecto.


Ansible es una herramienta de automatización sin agentes escrita en Python. Se conecta a sus clientes a través de SSH y le permite automatizar las tareas aburridas y repetitivas que no desea realizar. Le permite tomar una tarea realizada por un humano que puede tardar una hora en realizarse y convertirla en un solo comando que se completa en minutos. Esto mejora su rendimiento y le permite comenzar a trabajar en el próximo gran proyecto.

Beneficios de Ansible

Ansible proporciona muchos beneficios, tomemos un tiempo para ver algunos de los más importantes. Voy a dividir esto en secciones, una para aquellos que no tienen o tienen una automatización mínima, y ​​otra para aquellos que ya están usando una herramienta de automatización como Salt o Puppet.

Nuevo en automatización

Si es nuevo en la automatización, usar una herramienta que sea simple puede ayudarlo con la curva de aprendizaje. Veamos algunas razones por las que debería elegir Ansible sobre las otras herramientas disponibles.

1. Sintaxis sencilla

Debido a la forma simple de Ansible de definir tareas, es muy sencillo comenzar. Tome el siguiente fragmento, por ejemplo:

-

– anfitriones: todos

 Tareas:

  – nombre: Instalar Nginx

   mmm:

     nombre: nginx

     estado: último

Una tarea completa de Ansible, equivalente a ejecutar `yum install nginx` en todos sus hosts.

Probablemente ya sepas lo que está haciendo. Está instalando la última versión del Nginx servidor web de código abierto en todos sus hosts definidos. Veremos la definición de hosts más adelante. Dado que todas las tareas que crea están en YAML, son fáciles de leer y fáciles de crear. Esto es vital cuando comienza a aprender una nueva herramienta, ya que le permite ganar experiencia rápidamente mientras genera confianza y comprensión.

2. Git amor

Dado que sus automatizaciones son archivos de texto simples, es posible almacenarlas en Git (u otro sistema de repositorio de origen), donde tienen control de cambios y pueden consultarse y actualizarse desde una fuente central.

3. Orden de Ejecución Simple

Dado que las tareas se ejecutan en el orden que defina, no tiene que preocuparse por el orden de ejecución. Simplemente defina los pasos como lo haría con un ser humano, y Ansible los ejecutará exactamente en ese orden cada vez, sin tener que preocuparse por perder un paso.

4. Sin agente

Tener una forma sin agente de administrar sus hosts es importante, doblemente si aún no tiene una forma de implementar un agente de manera automatizada. Intentar iniciar un impulso de automatización en un entorno existente puede ser una pesadilla, especialmente si hay decenas o cientos de máquinas que necesitan el nuevo agente.

Aficionado a la automatización

Si ya ha realizado algo de automatización, tal vez usando Bash, Python o Powershell, es posible que se pregunte qué trae Ansible a la mesa. Vamos a ver.

1. Orquestación sencilla

¿Alguna vez ha intentado actualizar un sitio web usando un script bash? Supongamos que tiene un balanceador de carga web o un proxy inverso, 5 servidores web, un balanceador de carga de base de datos y 2 servidores de base de datos. Puede gastar cientos de líneas simplemente comprobando que cada componente se actualizó correctamente.

Con Ansible, puede definir comprobaciones de estado, actualizaciones graduales y configurar sus balanceadores de carga para eliminar agregar y eliminar nodos durante cada paso de la actualización. Puede ver un ejemplo de esto en la documentación oficial de Entrega continua y actualizaciones continuas.

2. Idempotencia

La idempotencia es la propiedad de ciertas operaciones en matemáticas e informática por la que se pueden aplicar varias veces sin cambiar el resultado más allá de la aplicación inicial. - Wikipedia Básicamente, el objetivo es ejecutar su libro de jugadas una vez para establecer las cosas como se desea, y luego seguir ejecutándolo cada *X*número de horas/días/semanas para garantizar que nada haya cambiado. Si algo cambia, debe buscar la fuente de *Desviación de configuración* en su entorno.

Configuration Drift es donde los servidores en la infraestructura se vuelven cada vez más diferentes a medida que pasa el tiempo.- Shadow Soft

3. Almacenamiento de secretos incorporado

El almacenamiento de secretos integrado de Ansible, llamado Ansible Vault, le permite almacenar datos confidenciales como contraseñas, claves de API o incluso claves privadas de forma segura, con el resto de su base de código, en control de fuente. Esto es inaudito en Bash o Python, y generalmente requiere herramientas de terceros, como una bóveda de contraseñas habilitada para API.

4. Capacidad de expansión

Ansible se puede expandir fácilmente para los módulos de Windows y Linux, así como para comunicarse con herramientas de terceros. Esto significa que si desea automatizar algo, es probable que ya haya un módulo comunitario que pueda usar, o puede crear o adaptar un módulo existente para que se ajuste a sus necesidades.

Puede encontrar información sobre cómo desarrollar sus propios módulos con la documentación oficial, o puede consultar los módulos de la comunidad de Ansible Galaxy.

Primeros pasos con Ansible

Instalación Ansible

Comenzar es tan simple como instalar Ansible en su estación de trabajo o servidor. Voy a mostrar los comandos de RedHat/CentOS, pero puede ver otros pasos de instalación en la documentación oficial.

`sudo yum instalar ansible`

¡Eso es todo! Tiene instalado un nodo de control de Ansible completamente funcional y está listo para funcionar.

Inventario

Ansible necesita saber con qué máquinas hablar y ejecutar sus libros de jugadas. Así que echemos un vistazo a la configuración de un inventario básico. El archivo de inventario predeterminado está disponible en `/etc/ansible/hosts` en Linux. Si echa un vistazo a ese archivo, verá que tiene un formato similar a INI, y probablemente se parece a esto:

correo.ejemplo.com

[servidores web]

foo.ejemplo.com

bar.ejemplo.com

[servidores de base de datos]

uno.ejemplo.com

dos.ejemplo.com

tres.ejemplo.com

Como se explica en la documentación, los encabezados entre paréntesis son nombres de grupos, que le permiten clasificar los sistemas en grupos arbitrarios. Le recomendaría que se tome un tiempo y configure su archivo de inventario, ya que es importante que Ansible sepa en qué hosts desea ejecutar las tareas.

Creación de un libro de jugadas

Un libro de jugadas es una colección de tareas que se ejecutarán en sus hosts. Puede crear un libro de jugadas que sea tan simple como un solo archivo con una jugada, o muchos archivos con múltiples condicionales e importaciones de otros libros de jugadas. Vamos a comenzar con un libro de jugadas simple que instala, inicia y agrega reglas de firewall para nginx en nuestros servidores web. En nuestro archivo de hosts, podríamos tener algo como esto:

[servidores web]

web01.ejemplo.com

web02.ejemplo.com

y en nuestro archivo `nginx-install.yaml`, tenemos lo siguiente:

-

– anfitriones: servidores web

 Tareas:

  – nombre: Instalar Nginx

   mmm:

     nombre: nginx

     estado: último

  – nombre: Iniciar Nginx

   servicio:

     nombre: nginx

     estado: iniciado

  – nombre: permitir el puerto 80 a través de firewalld

   cortafuegos:

     puerto: 80/tcp # Alternativamente, puede usar la sintaxis "servicio: http"

     permanente: si

     estado: habilitado

Descripción general del host de Ansible que se conecta a sus servidores web e instala NGINX. Para ejecutar este libro de jugadas, simplemente ejecute `ansible-playbook nginx-install.yaml` y Ansible instalará Nginx en cualquier host de su grupo de servidores web. Este es un libro de jugadas simple con una sola jugada; sin embargo, es un buen ejemplo de la facilidad con la que se puede usar Ansible en su entorno.

Conclusión

Como puede ver, Ansible es una herramienta de automatización muy flexible y fácil de usar que puede funcionar en cualquier entorno. Con su fácil curva de aprendizaje y la capacidad de crecer según sus necesidades, Ansible es una de las mejores herramientas de automatización para la implementación de infraestructura en un entorno completamente administrado por DevOps.

-Justin Gauthier

@justinsane454