Automatiza tareas con Ansible en Debian Linux Ubuntu

Enviado por christian el

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

 

Dinahosting: dominios y alojamiento web
My investor

Regístrate en MyInvestory tendrás un extra de 20€ ! :D

Usa el código U048395 y te llevas un regalo en tu primera inversión :)

Usa el código 22c80f y te llevas un regalo en tu primera inversión :)