Ansible es una plataforma que simplifica la orquestación y automatización de las tareas y procesos de operación de IT.
Red Hat Ansible es una tecnología permite gestionar servidores, configuraciones y aplicaciones de una forma sencilla, robusta y paralela. Esto quiere decir que puede ejecutar varias secuencias de tareas en paralelo, con los ahorros de tiempo que esto supone.
Para presentaros un ejemplo de un caso de uso de automatización de IT con Ansible, vamos a suponer que queremos hacer un despliegue de aplicaciones. Imaginemos que nuestro objetivo es instalar en un servidor las herramientas necesarias para la publicación de páginas web, es decir PHP, Apache y MySQL, entre otras aplicaciones.
Inventario:
Lo primero que haremos es crear el inventario de nodos de Ansible.
El inventario puede contener múltiples nodos estructurados de forma jerárquica mediante etiquetas e, incluso, se puede aprovisionar de forma dinámica desde diferentes fuentes como CMDB o Clouds.
En este caso únicamente vamos a incorporar un nodo, el 192.168.101.104, bajo la etiqueta webserver.
Añadiremos nuestro nodo al fichero /etc/ansible/hosts, que es el inventario por defecto de Ansible.
También generaremos la clave SSH necesaria para la comunicación entre el controlador y los nodos y, en este caso, la copiaremos en el nodo 192.168.101.104.
Comando de prueba (ping):
A continuación, vamos a hacer una prueba para comprobar que la comunicación entre el controlador de Ansible y el nodo es correcta.
En este caso, ejecutaremos el comando «ansible all -m ping» para que se lance el módulo ping en todos los nodos de nuestro inventario.
Obtendremos la respuesta del debug en la que comprobaremos que el ping se ha ejecutado con éxito.
Playbook:
Los playbooks permiten crear estructuras condicionales o iterativas, para determinar la secuencia de tareas a ejecutar en función de variables o eventos. Una gran ventaja del YAML es que, al ser un lenguaje descriptivo, facilita que estas estructuras sean elementos autodocumentados, de fácil interpretación por cualquier miembro del equipo.
Para llegar a nuestro objetivo del caso de uso de despliegue de aplicaciones, vamos a crear un nuevo playbook al que llamaremos «webserver.yml», en el que describiremos los hosts a los que se aplicará. En este caso, los hosts, con la etiqueta «webserver», el usuario con el que se ejecutarán las tareas, denominado «root», y la definición de las tareas bajo la etiqueta «tasks».
Vamos a definir tres tareas que van a llevar a cabo las siguientes acciones:
- Desplegar las aplicaciones PHP5, Apache2, MySQL, entre otras, …
- Habilitar el módulo «rewrite» en Apache
- Y reiniciar el servicio Apache
Ejecución del playbook:
Para lanzar el playbook, en este caso, ejecutaremos el comando «ansible-playbook webserver.yml».
Como en el playbook hemos definido que el ámbito de aplicación serán los nodos con la etiqueta «webserver», solo se ejecutara en el nodo 192.168.101.104.
Tras la ejecución, podremos comprobar en el debug que tanto la tarea de recopilación de datos de los nodos, llamados «facts», como las tres tareas definidas en el playbook se han ejecutado correctamente.
Ya tendremos nuestro servidor listo para la publicación de páginas web.
Esto es sólo el principio…
Además de este despliegue de aplicaciones, podríamos haber automatizado el aprovisionamiento de este y otros servidores en un entorno Cloud, configurado las redes, desplegado un balanceador de carga, aplicado las reglas necesarias en el firewall, y muchas cosas más…
Y todo esto, de forma totalmente automatizada, en poco tiempo, y sin errores, ¡gracias a Ansible!
¿Listo/a para automatizar tus procesos de IT?
Bueno. Esta presentación ha sido solo un breve repaso sobre lo qué es Ansible y las posibilidades que ofrece la adopción de esta tecnología.
Si estáis interesados en entrar en el mundo de la automatización, en EXEVI podemos ayudaros, bien a través de nuestros servicios gestionados, o acompañándoos en un proyecto integral de automatización.
No dudes en ponerte en contacto con nosotros.
Deja un comentario