Mantener múltiples servidores actualizados puede ser una tarea compleja o repetitiva, especialmente cuando trabajas con diferentes sistemas operativos como RedHat y Ubuntu. Afortunadamente, Ansible, una herramienta de automatización ligera y potente te puede ayudar a simplificar este proceso. A continuación, te mostraré cómo puedes gestionar actualizaciones en grupos de servidores Linux de manera sencilla y eficiente.
Ansible es una herramienta de automatización open source que permite configurar y gestionar servidores sin necesidad de instalar agentes en ellos. Funciona mediante SSH
, lo que lo hace ideal para mantener servidores con diferentes sistemas operativos.
Al usar Ansible para gestionar actualizaciones podrás:
Antes de comenzar, asegúrate de tener instalado Ansible en tu sistema principal de control. Si aún no lo tienes, instálalo según el sistema principal que tengas.
Si tu sistema principal está basado en RedHat ejecuta:
sudo dnf install ansible
Si tu sistema principal es Debian o un derivado como Ubuntu ejecuta:
sudo apt install ansible
Crea y configura tu archivo de inventario, puede ser cualquier nombre como inventario.ini
, aquí especificarás los servidores, utiliza un nombre descriptivo, por ejemplo si tienes varios servidores con RedHat, Ubuntu, etc. de esa forma tendrás una mejor organización:
[servidores_redhat]
192.168.1.101
192.168.1.102
192.168.1.103
[servidores_ubuntu]
192.168.2.101
192.168.2.102
192.168.2.103
Un Playbook es un archivo YAML donde defines tareas automatizadas. Para este caso podemos crear dos playbooks, uno para servidores RedHat y otro para Ubuntu, o bien, podemos crear un solo archivo para los 2 grupos de servidores, depende de cual te acomode más, a continuación te mostraré unos ejemplos:
Crea un archivo playbook_redhat.yml
(o algun otro nombre que quieras) para las actualizaciones de servidores basados en RedHat y agrega lo siguiente:
- hosts: servidores_redhat
become: yes
tasks:
- name: Actualizar paquetes en RedHat
yum:
name: '*'
state: latest
Crea un archivo playbook_ubuntu.yml
(o algun otro nombre que quieras) para las actualizaciones de servidores basados en Debian como Ubuntu y agrega lo siguiente:
- hosts: servidores_ubuntu
become: yes
tasks:
- name: Actualizar paquetes en Ubuntu
apt:
update_cache: yes
upgrade: dist
Crea un archivo playbook_redhat_ubuntu.yml
(o algun otro nombre que quieras) para actualizar ambos grupos de servidores, esto detecta el tipo de sistema y ejecuta las tareas correspondientes:
- name: Actualizar servidores
hosts: all
become: true
tasks:
- name: Detectar sistema operativo
setup:
- name: Actualizar servidores Ubuntu
apt:
update_cache: yes
upgrade: dist
autoremove: yes
when: ansible_facts['os_family'] == "Debian"
- name: Actualizar servidores RedHat
yum:
name: "*"
state: latest
when: ansible_facts['os_family'] == "RedHat"
Para verificar si el archivo es correcto puedes verificar la sintaxis del Playbook sin ejecutarlo, para eso deber usar la opción --syntax-check
:
ansible-playbook playbook_redhat.yml --syntax-check
Usa la opción --check
para ejecutar el Playbook como una simulación, evaluando las tareas y mostrando qué cambios se realizarían sin aplicarlos realmente:
ansible-playbook -i inventario.ini playbook_redhat.yml --check
Para ejecutar un playbook, usa el comando:
ansible-playbook -i inventario.ini playbook_redhat.yml
Luego de ejecutar el o los playbooks correctamente habrás podido automatizar correctamente las actualizaciones de tus servidores.
Ansible es una herramienta extremadamente útil que te permitirá gestionar cualquier tipo de automatización que necesites como las actualizaciones de tus servidores de forma segura. Con una correcta configuración podrás ahorrar tiempo, minimizar errores y mantener tu infraestructura siempre al día.