Inicio > Gestión de paquetes y sistema > ansible

ansible: Gestión y automatización remota de servidores

Ansible es un motor de automatización de código abierto que realiza diversas tareas de automatización de TI, como aprovisionamiento de software, gestión de configuración, despliegue de aplicaciones y orquestación. Se conecta a servidores remotos a través de SSH sin necesidad de agentes y ejecuta tareas utilizando playbooks basados en YAML para definir las tareas.

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.

Comandos de la misma categoría