Feb 12, 2021
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