POLíTICA DE COOKIES
Este sitio web le informa de que hace uso de cookies propias y de terceros con la finalidad de recopilar datos estadísticos anónimos de uso de la web, así como la mejora del funcionamiento y personalización de la experiencia de navegación del usuario. Si continúa navegando, consideraremos que acepta su uso. Pulse en Aceptar para verificar que está de acuerdo con el uso de Cookies. Aceptar Más información
rrc2software Blog Proyectos
rrc2software Blog Proyectos

Actualizar servidores Linux usando Ansible

Mediante el siguiente playbook de Ansible podremos actualizar de manera remota servidores basados en Red Hat Enterprise Linux (RHEL, CentOS, OracleLinux, ...) o Debian (Ubuntu y Debian) y reiniciarlos en el caso de que sea necesario.

# upgrade-servers.yaml
# Ramón Román Castro <www.rrc2software.com>
# Versión 1.1
---
- name: Actualizar servidores basados en Debian o RedHat y reiniciarlos si es necesario
  become: yes
  hosts: all
  gather_facts: true
  tasks:
    - name: Actualizar servidor (vía yum)
      yum:
        update_cache: yes
        name: '*'
        state: latest
      when:
        ansible_pkg_mgr == 'yum'
    - name: Actualizar servidor (vía dnf)
      dnf:
        update_cache: yes
        name: '*'
        state: latest
      when:
        ansible_pkg_mgr == 'dnf'
    - name: Actualizar servidor (vía apt)
      apt:
        update_cache: yes
        name: '*'
        state: latest
      when:
        ansible_pkg_mgr == 'apt'        
    - name: Comprobar si es necesario reiniciar (RedHat)
      shell:
        cmd: "/usr/bin/needs-restarting"
      register: needs_restart
      changed_when: needs_restart.stdout != ''
      failed_when: needs_restart.rc != 0
      when:
        ansible_os_family == 'RedHat'
    - name: Comprobar si es necesario reiniciar (Debian)
      stat:
        path: /etc/hosts
      register: needs_restart
      changed_when: needs_restart.stat.exists == True
      when:
        ansible_os_family == 'Debian'
    - name: Reiniciar el servidor si es necesario
      reboot:
      when:
        needs_restart is changed and (ansible_os_family == 'Debian' or ansible_os_family == 'RedHat')      

Un ejemplo de ejecución de este playbook sería el siguiente:

$ ansible-playbook -i ./hosts -l centos.example.com upgrade-servers.yaml -u admin 

Este playbook está preparado para ejecutarse con un usuario que tenga privilegios para ejecutar comandos como root. En el caso en el que se desee ejecutar directamente con root, el comando sería:

$ ansible-playbook -i ./hosts -l centos.example.com upgrade-servers.yaml -u root -k 

Para más información, visita la página oficial de documentación de Ansible.

Tweet Share Share Pin Share Email

Última modificación: Feb 19, 2021

Volver al inicio