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
Acerca del proyecto

Role to update packages on linux and optionally reboot

Instalar
ansible-galaxy install ryandaniels.server_update_reboot
Licencia
mit
Descargas
15.9k
Propietario
Ansible all the things