Descripción general
Ansible opera de forma sin agentes (agentless), lo que significa que no es necesario instalar software adicional en los servidores gestionados. Ejecuta comandos a través de conexiones SSH y utiliza módulos escritos en Python para realizar diversas tareas. Define los hosts gestionados a través de un archivo de inventario y automatiza tareas utilizando comandos ad-hoc o playbooks.
Características principales
- Modo sin agentes (no se requieren agentes en los servidores gestionados)
- Comunicación basada en SSH (aprovecha la infraestructura existente)
- Uso de playbooks YAML (scripts de automatización concisos y legibles)
- Gestión de configuración, despliegue de aplicaciones, orquestación y otras automatizaciones de TI
Opciones principales
Los comandos de Ansible se utilizan para ejecutar módulos específicos o realizar comandos ad-hoc en grupos de hosts definidos en el archivo de inventario.
Opciones de ejecución básicas
Información y depuración
Comando generado:
Combina los comandos.
Descripción:
`ansible` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de uso
Puede realizar diversas tareas en servidores remotos utilizando comandos de Ansible.
Verificar conexión a todos los hosts (ping)
ansible all -m ping
Prueba la conectividad con todos los hosts definidos en el inventario.
Ejecutar comando en el grupo de servidores web
ansible webservers -a "uptime"
Ejecuta el comando 'uptime' en los hosts del grupo 'webservers' del inventario.
Instalar paquete en un host específico (usando sudo)
ansible node1 -b -m apt -a "name=nginx state=present"
Instala el paquete 'nginx' en el host node1. Utiliza la opción -b para usar privilegios sudo.
Usar un archivo de inventario personalizado
ansible all -i my_inventory.ini -a "df -h"
Ejecuta el comando 'df -h' en todos los hosts utilizando el archivo 'my_inventory.ini' en lugar del archivo de inventario predeterminado.
Copiar archivo especificando usuario remoto
ansible webservers -u deploy_user -m copy -a "src=./index.html dest=/var/www/html/"
Copia el archivo local 'index.html' a la ruta '/var/www/html/' del servidor remoto, conectándose como el usuario remoto 'deploy_user'.
Instalación
Ansible no está incluido por defecto en la mayoría de las distribuciones de Linux, por lo que debe instalarse a través de un gestor de paquetes o Python pip. La instalación a través de Python pip es el método más recomendado.
Instalación con Python pip (recomendado)
Si tienes Python instalado, puedes instalar Ansible usando pip.
- Comando de instalación: pip install ansible
- Comando de actualización: pip install --upgrade ansible
Ubuntu/Debian
Instala usando el gestor de paquetes APT.
- Comando de instalación: sudo apt update && sudo apt install ansible
CentOS/RHEL
Instala usando el gestor de paquetes YUM/DNF. Puede requerir el repositorio EPEL.
- Instalar repositorio EPEL: sudo yum install epel-release
- Comando de instalación: sudo yum install ansible
Consejos y precauciones
Consejos y puntos a tener en cuenta para usar Ansible de manera efectiva.
Consejos de uso de Ansible
- **Gestión de archivos de inventario**: Es importante organizar y definir los hosts gestionados de manera sistemática. Se pueden usar formatos `ini` o `yaml`.
- **Se recomienda el uso de playbooks**: Para tareas que van más allá de comandos ad-hoc simples, se recomienda usar playbooks basados en YAML (`ansible-playbook`) para mejorar la reutilización, legibilidad y control de versiones.
- **Comprender la idempotencia**: Ansible está diseñado para que el estado del sistema se mantenga igual incluso si las tareas se ejecutan varias veces. Esto se llama idempotencia, y debes aprovechar este concepto al escribir scripts de automatización.
- **Autenticación basada en claves SSH**: Es recomendable utilizar claves SSH en lugar de contraseñas para mejorar la seguridad y simplificar el proceso de automatización.
- **Uso de Vault**: La información sensible (contraseñas, claves API, etc.) debe gestionarse cifrada utilizando Ansible Vault.