ryandaniels.server_update_reboot
ansible-role-servidor-actualizar-reinicio
Rol de Ansible para actualizar el servidor a los paquetes más recientes, reiniciar el servidor y esperar a que el servidor inicie. Agrega más roles después de esto para continuar instalando/configurando el servidor.
También se pueden excluir paquetes de ser actualizados, actualizar solo paquetes específicos o instalar paquetes específicos.
Funciona con Redhat/CentOS y Ubuntu.
Se puede utilizar para actualizar paquetes para la Mitigación de Meltdown/Spectre para Redhat/CentOS 7 y Ubuntu 16.04
Un ejemplo más detallado se puede encontrar en el blog: Usando Ansible para actualizar Ubuntu, CentOS y Redhat
Requiere: Ansible 2.7.1 (usa el módulo de reinicio y 2.7.1 corrige reboot_timeout)
Nota:
Este rol puede reiniciar el servidor si hay una actualización del núcleo y si la variable de reinicio es verdadera (el reinicio es la configuración predeterminada).
Distribuciones probadas
- Ubuntu 18.04 / 16.04
- CentOS & RHEL 7.x
Variables de Grupo
./group_vars/centos-dev/proxy.yml
Con un proxy:
proxy_env:
http_proxy: http://mi.proxy.interno:80
https_proxy: https://mi.proxy.interno:80
Sin proxy:
proxy_env: []
Configuraciones Predeterminadas
- debug_enabled_default: true|false (predeterminado false)
- update_default: true|false (predeterminado true)
- reboot_default: true|false (predeterminado true)
- server_update_reboot_pre_delay: Tiempo (en segundos) para esperar antes de ejecutar tareas en este rol
- server_update_reboot_pre_reboot_delay: Tiempo (en segundos) para esperar antes de reiniciar
- server_update_reboot_post_reboot_delay: Tiempo (en segundos) para esperar después de reiniciar
- server_update_reboot_reboot_timeout: Tiempo máximo (en segundos) para esperar que el servidor se reinicie
Variables para RHEL/CentOS:
- server_update_yum_exclude_pkgs: cadena separada por comas de paquetes a excluir de la actualización. Se pueden usar comodines. (predeterminado [])
- server_update_yum_install_pkgs: cadena separada por comas de paquetes que SOLO se actualizarán. Se pueden usar comodines. (predeterminado '*' que significa todos los paquetes)
Variables para Ubuntu:
- server_update_apt_exclude_default: true|false. establecer en true si se usa la lista de exclusión a continuación (predeterminado false)
- server_update_apt_exclude_pkgs: Lista de paquetes a no actualizar (cada uno en una línea separada). Puede incluir comodines (pero use ^ para comenzar la coincidencia o muchos coincidirán) para coincidir con múltiples paquetes. (predeterminado indefinido)
- server_update_apt_default: full|update_specific|install (predeterminado full)
- full: actualizar todos los paquetes usando "apt-get dist-upgrade"
- update_specific: solo actualizar de la lista en la variable server_update_apt_install_pkgs
- install: solo instalar de la lista en la variable server_update_apt_install_pkgs
- server_update_apt_install_pkgs: Lista de paquetes que SOLO se actualizarán o instalarán (cada uno en una línea separada). Puede incluir un comodín para coincidir con múltiples paquetes. (predeterminado indefinido)
Ejemplo de Playbook server-update-reboot.yml
El siguiente ejemplo de playbook actualizará/reiniciará un servidor a la vez (usando las variables max_fail_percentage y serial). Si deseas actualizar/reiniciar todo a la vez, descomenta esas líneas.
---
- hosts: '{{inventory}}'
max_fail_percentage: 0
serial: 1
become: yes
roles:
# - detener-aplicaciones
- servidor-actualizar-reinicio
# - configurar-servidor-xyz
# - iniciar-aplicaciones
Preparación
- instalar ansible
- crear claves
- ssh al cliente para agregar una entrada al archivo known_hosts
- configurar las claves autorizadas del servidor cliente
- ejecutar comandos de ansible
Uso
Para Redhat/CentOS/Ubuntu
Usa todas las configuraciones predeterminadas para: actualizar, reiniciar el servidor y esperar a que el servidor inicie:
ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev" -i hosts-dev
Igual que lo anterior, pero no reinicia el servidor:
ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev reboot_default=false" -i hosts-dev
Para Redhat/CentOS
Actualizar todos los paquetes excepto los paquetes especificados (para RHEL):
ansible-playbook server-update-reboot.yml --extra-vars 'inventory=centos-dev server_update_yum_exclude_pkgs="mysql*, bash, openssh*"' -i hosts-dev
Actualizar (o instalar) solo paquetes específicos (para RHEL):
ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev
Para Ubuntu
Actualizar todos los paquetes excepto los paquetes especificados (para Ubuntu):
ansible-playbook server-update-reboot.yml --extra-vars 'inventory=ubuntu-dev server_update_apt_exclude_default=true' --extra-vars '{"server_update_apt_exclude_pkgs": [bash, openssl, ^mysql*, ^openssh*]}' -i hosts-dev
Actualizar solo los paquetes específicos (para Ubuntu):
ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode, openssh*]}" -i hosts-dev
Instalar solo paquetes específicos (para Ubuntu). Ten cuidado con los comodines:
ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=install" --extra-vars "{'server_update_apt_install_pkgs': [bash, openssh-server]}" -i hosts-dev
Mitigación de Spectre/Meltdown
Para parchear Redhat/CentOS 7 y Ubuntu 16.04, para Spectre y Meltdown (CVE-2017-5754, CVE-2017-5753, CVE-2017-5715)
Información de Ubuntu
Información de Redhat
O simplemente parchear todo usando el primer comando anterior.
Para Redhat/CentOS 7 (Mitigación de Spectre/Meltdown)
ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev
Para Ubuntu 16.04 (Mitigación de Spectre/Meltdown)
ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode]}" -i hosts-dev
Notas
RHEL5
RHEL/CentOS 5 tiene una dependencia que necesita ser instalada: python-simplejson
Este comando usará el módulo raw para instalarlo:
ansible centos5 -m raw -a "yum install -y python-simplejson" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=nombredeusuario123" -i hosts-dev
SELinux
Si SELinux está habilitado/permisivo, se necesita una dependencia: libselinux-python
Este comando usará el módulo raw para instalarlo:
ansible centos5 -m raw -a "yum install -y libselinux-python" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=nombredeusuario123" -i hosts-dev
ansible-galaxy install ryandaniels.server_update_reboot