¡Bienvenido al día 30 de nuestra serie "50 herramientas DevOps en 50 días"! Hoy vamos a explorar Ansible, una de las herramientas más esenciales del conjunto de herramientas de DevOps. Este blog le presentará los conceptos básicos de Ansible, desglosará sus componentes clave y le mostrará cómo empezar con ejemplos sencillos. Mantendremos las cosas sencillas, lo que lo convertirá en un punto de partida perfecto para principiantes.
Ansible es una herramienta de automatización de código abierto que simplifica tareas como la gestión de la configuración, la implementación de aplicaciones y la orquestación. Está diseñado para ser simple pero poderoso, permitiéndole automatizar tareas repetitivas y administrar su infraestructura de manera más eficiente.
Sin agente: Ansible no requiere la instalación de ningún agente en sistemas remotos, lo que reduce los gastos generales.
Libros de estrategias YAML legibles por humanos: Ansible utiliza YAML (otro lenguaje de marcado más) para escribir libros de estrategias, que son fáciles de leer y escribir.
Idempotente: Puedes ejecutar el mismo libro de estrategias varias veces sin preocuparte por cambios no deseados.
Arquitectura sin agentes: Dado que Ansible no tiene agentes, no es necesario instalar ningún software adicional en los sistemas cliente, lo que reduce los gastos generales y los posibles riesgos de seguridad.
Sintaxis simple: Ansible utiliza YAML para sus manuales, que es fácil de leer y escribir, lo que lo hace accesible incluso para aquellos nuevos en la automatización.
Idempotencia: Ansible garantiza que se logre el estado deseado independientemente del estado actual. Esto significa que ejecutar un libro de estrategias varias veces no causará problemas ni duplicará acciones.
Amplio soporte comunitario: Con una comunidad grande y activa, Ansible tiene una gran cantidad de funciones, módulos y guías que se pueden reutilizar y personalizar para satisfacer sus necesidades.
Escalabilidad: Ya sea que administre unos pocos servidores o miles, Ansible escala bien, lo que lo hace adecuado para organizaciones de todos los tamaños.
Inventario: Esta es una lista de hosts (servidores) que administra Ansible. Los inventarios pueden ser estáticos (definidos en un archivo) o dinámicos (generados por un script).
Módulos: Los módulos son los caballos de batalla de Ansible. Se ejecutan en hosts remotos para realizar tareas como instalar paquetes, copiar archivos o administrar servicios.
Playbooks: Los Playbooks son el lenguaje de configuración, implementación y orquestación de Ansible. Están escritos en YAML y describen una serie de tareas que se ejecutarán en los hosts.
Roles: Los roles te permiten dividir los manuales en componentes reutilizables, lo que facilita la gestión y organización de proyectos grandes.
Variables: Las variables se utilizan para almacenar valores que se pueden reutilizar en los manuales. Proporcionan flexibilidad y le permiten personalizar los manuales sin codificar valores.
Controladores: Los controladores son tareas especiales que solo se ejecutan cuando son activadas por otras tareas. A menudo se utilizan para cosas como reiniciar servicios.
Comencemos instalando Ansible en su nodo de control. El proceso de instalación es sencillo y varía ligeramente según su sistema operativo.
Instalación de Ansible en Ubuntu/Debian
sudo apt update sudo apt install ansible -y
Instalación de Ansible en CentOS/RHEL
sudo yum install epel-release -y sudo yum install ansible -y
Verificando la instalación
Después de la instalación, puede verificar que Ansible esté instalado correctamente ejecutando:
ansible --version
Creemos un manual simple para instalar Nginx en un servidor remoto. Comenzaremos definiendo nuestro inventario.
Paso 1: Crear un archivo de inventario
Crea un archivo llamado hosts:
[webservers] 34.42.111.35 34.42.111.66
Este archivo de inventario define un grupo llamado servidores web que contiene dos servidores.
Paso 2: Escribe el manual
A continuación, escribiremos un manual para instalar e iniciar Nginx en estos servidores.
Cree un archivo llamado nginx_setup.yml:
--- - name: Install Nginx on web servers hosts: webservers become: yes tasks: - name: Install Nginx apt: name: nginx state: present - name: Start Nginx service service: name: nginx state: started enabled: true
nombre: Una descripción legible por humanos de lo que hace el libro de estrategias o la tarea.
hosts: Especifica el grupo de hosts (del inventario) donde debe ejecutarse el libro de jugadas.
convertirse en: Indica que Ansible debe usar privilegios elevados (como sudo).
tareas: Enumera los pasos que ejecutará Ansible. Aquí, estamos instalando Nginx y asegurándonos de que el servicio se inicie y habilite en el arranque.
Paso 3: Ejecute el Playbook
Para ejecutar el libro de jugadas, ejecute el siguiente comando:
ansible-playbook -i hosts nginx_setup.yml
Este comando le dice a Ansible que ejecute las tareas en nginx_setup.yml en los hosts definidos en el archivo de inventario de hosts.
Considere un escenario en el que necesita instalar un conjunto de paquetes en varios servidores. Hacer esto manualmente llevaría mucho tiempo y sería propenso a errores. Con Ansible, puedes automatizar esta tarea fácilmente.
Aquí tienes una guía sencilla para instalar varios paquetes:
--- - name: Install essential packages hosts: all become: yes tasks: - name: Install packages apt: name: - git - curl - htop state: present
En este manual, Ansible instala git, curl y htop en todos los servidores enumerados en el inventario. El módulo apt garantiza que cada paquete esté instalado.
Imagine que necesita crear un nuevo usuario en varios servidores y asignarlo a grupos específicos. Realizar esta tarea manualmente en cada servidor sería tedioso. Con Ansible, es muy sencillo.
Así es como puedes hacerlo:
--- - name: Create a new user hosts: all become: yes tasks: - name: Create user "devuser" user: name: devuser state: present groups: sudo
Este manual crea un nuevo usuario devuser en todos los servidores administrados y los agrega al grupo sudo.
Consistencia: Ansible garantiza que sus sistemas estén configurados de manera consistente, lo que reduce el riesgo de cambios en la configuración.
Eficiencia: Automatizar tareas repetitivas libera tiempo para trabajos más críticos.
Escalabilidad: Ya sea que administre un puñado de servidores o miles, Ansible escala sin esfuerzo.
Flexibilidad: El enfoque modular de Ansible le permite personalizar y ampliar su funcionalidad según sea necesario.
Ansible es una herramienta poderosa pero fácil de usar que puede simplificar drásticamente la administración de su infraestructura. Con solo unas pocas líneas de código, puede automatizar tareas complejas, garantizando coherencia y confiabilidad en todo su entorno. Ya sea que esté configurando servidores, implementando aplicaciones o administrando configuraciones, Ansible puede ayudarlo a hacerlo de manera más eficiente.
Mañana, profundizaremos en temas más avanzados de Ansible y exploraremos características que pueden llevar su automatización al siguiente nivel. ¡Manténganse al tanto!
? Asegúrate de seguirme en LinkedIn para obtener las últimas actualizaciones: Shiivam Agnihotri
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3