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