Skip to content

Ansible - Quickstart

Ansible es una herramienta de automatización de IT de código abierto que permite gestionar configuraciones, implementar aplicaciones, orquestar tareas y automatizar procesos repetitivos de forma sencilla y eficiente.


¿Qué es Ansible?

  • Herramienta de automatización open source.
  • Simple de instalar, eficiente y fácil de aprender.
  • Escrita en Python, usa módulos.
  • No usa agentes.
  • No requiere conocimientos de programación.

Conceptos Básicos

Control Node

  • Nodo desde donde se ejecuta Ansible (no Windows).
  • Requiere Python.

Managed Node / Hosts

  • Equipos administrados sin Ansible instalado.

Inventory

  • Listado de hosts a administrar.
  • Puede ser estático o dinámico.

Modules

  • Pequeños programas con funciones específicas.
  • Ej: win_user, yum, user, mysql_db.

Tasks

- name: Crear usuario MI_NOMBRE
  user:
    name: MI_NOMBRE
    state: present

Play

  • Lista ordenada de tareas ejecutadas en un grupo de hosts.

Playbook

  • Archivo YAML con varios plays.
  • Define tareas, archivos, variables, roles.

Roles

  • Organización estructurada de configuraciones reutilizables.

Collection

  • Paquetes modulares: roles, módulos, plugins, playbooks.

Ansible Galaxy

ansible-galaxy collection install <nombre>
ansible-galaxy collection list
ansible-doc -l

¿Cómo Funciona?

  • Lee archivos YAML → identifica plays, tareas, hosts.
  • Copia módulo al equipo, lo ejecuta y luego elimina.
  • Para equipos de red, los módulos se ejecutan en el controlador.
  • Métodos de conexión: ssh, winrm, docker, kubectl, etc.

Diferencias Notables

  • No necesita agente.
  • Infraestructura mínima.
  • Escrito en Python.

Casos de Uso

  • Provisionamiento
  • Configuración
  • Despliegue de aplicaciones
  • Orquestación
  • Seguridad
  • Entrega continua

Instalación en Red Hat Enterprise Linux

dnf install ansible-core

Ejemplo Inventory (INI)

localhost ansible_connection=local

[webservers]
webserver1 ansible_host=192.168.10.1
webserver2.lab.example.com
webserver[3:9].lab.example.com ansible_user=webadmin

[dbservers]
dbserver1 ansible_host=192.168.10.2 ansible_port=2222
dbserver2.lab.example.com

[crm:children]
webservers
dbservers

[all:vars]
ntp_server=time1.google.com

[dbservers:vars]
db_pkg=mariadb-server
db_max_connections=500

[crm:vars]
stage=testing

[webservers]
secure=false

Comandos Ad-Hoc

ansible -m <module> -a "<args>" -i <inventory> -u <usuario> -b --ask-sudo-pass
ansible-doc -l