Automatiza tareas con Ansible en entornos Linux - Debian - Ubuntu y Windows
Si aún no sabes lo que es Ansible, entra aquí y échale un vistazo antes de nada!!
Lo que te voy a contar aquí son los conceptos generales de Ansible y unos pasos básicos para poder empezar. Más adelante iré publicando por aquí diferentes mini-roles con tareas concretas para que tengas varios ejemplos
Qué es y para qué te sirve Ansible
Muy sencillo!. Ansible es una herramienta (diría más bien casi un sdk o casi un framework) para la automatización de tareas recurrentes. Es válido tanto en entornos linux-debian como en windows (si con windows también pero no tengo ni idea!) Tiene una gran ventaja que es que siempre que ejecutes el mismo script de Ansible, el resultado siempre será el mismo!
Ojo: puedes automatizar tareas pero no para aprovisionar máquinas! Si no sabes lo que significa esta frase, no te preocupes, no vas a cometer ningún error jaja
Un ejemplo concreto de tarea recurrente, la instalación Mysql. En el fondo la instalación es monótona en todos los sitios. Hay una serie de pasos que siempre son los mismos (instalar paquete, configuración básica, etc...) y se pueden automatizar para que no tengas que repetirlos siempre
Conceptos básicos
- Fichero hosts: Ansible lo puedes ejecutar directamente indicando la ip|nombre directamente en línea de comandos, fichero de tareas o en un fichero hosts (que creo que es la mejor opción). Este fichero lo creas en la raíz de tu proyecto y la estructura es muy sencilla:
# Si tu fichero se llama hosts este sería el formato # Puedes crear cuantos grupos quieras [local] 127.0.0.1 [pre] pre.midominio.es 23.23.23.23
# Puedes también usar el formato yml par el hosts. Este sería el formato local: hosts: 127.0.0.1: pre: hosts: 23.23.23.23: ansible_connection: ssh ansible_user: root ansible_port: 2222
- Carpeta y concepto roles: el concepto "Rol" quizás es lo más importante cuando trabajas con Ansbile ya que su ejecución se basa en esto. Un rol es un conjunto de tareas que comparten un mismo tema. Por ejemplo un rol sería instalarMysql ya que todas las tareas tiene un fin común
- Módulos: es el componente de más bajo nivel. Son funciones/métodos que se usan en las tareas de los roles para llegar a su fin
- Ansible-galaxy: esto no es propio de Ansible pero es un extra. Es un sitio donde se publican y mantienen módulos para usar con Ansible. Es algo similar a dockerhub.
- Ansible-vault: esto también es un extra pero bastante importante. Esto es una característica/componente de Ansible que te permite cirfrar los ficheros directamente. Esto es muy útil cuando quieres protejer secretos de tus variables o plantillas
Comando básicos
Te indico unos comandos genéricos para el uso básico de tu proyecto ansible:
Ejecutar un rol concreto:
ansible-playbook -i hosts.yml ./tuTarea.yml
Crear un nuevo rol en tu proyecto:
ansible-galaxy role init nombre_de_tu_rol