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