ryandaniels.server_update_reboot

ansible-role-server-update-reboot

Rôle Ansible pour mettre à jour le serveur avec les derniers packages, redémarrer le serveur et attendre qu'il redémarre. Ajoutez d'autres rôles après cela pour continuer l'installation/configuration du serveur.
Peut également exclure des packages de la mise à jour, ne mettre à jour que des packages spécifiés, ou installer des packages spécifiés.
Fonctionne avec Redhat/CentOS et Ubuntu.

Peut être utilisé pour mettre à jour les packages pour la Mitigation Meltdown/Spectre pour Redhat/CentOS 7 et Ubuntu 16.04

Un exemple plus détaillé peut être trouvé dans l'article de blog : Utiliser Ansible pour mettre à jour Ubuntu, CentOS et Redhat

Requiert : Ansible 2.7.1 (utilise le module reboot et 2.7.1 corrige reboot_timeout)

Note :
Ce rôle peut redémarrer le serveur s'il y a une mise à jour du noyau et si la variable de redémarrage est vraie (le redémarrage est le paramètre par défaut).

Distributions testées

  • Ubuntu 18.04 / 16.04
  • CentOS & RHEL 7.x

Variables de groupe

./group_vars/centos-dev/proxy.yml
Avec un proxy :

proxy_env:
  http_proxy: http://mon.proxy.interne:80
  https_proxy: https://mon.proxy.interne:80

Sans proxy :

proxy_env: []

Paramètres par défaut

  • debug_enabled_default: true|false (par défaut false)
  • update_default: true|false (par défaut true)
  • reboot_default: true|false (par défaut true)
  • server_update_reboot_pre_delay: Temps (en secondes) à attendre avant d'exécuter les tâches de ce rôle
  • server_update_reboot_pre_reboot_delay: Temps (en secondes) à attendre avant de redémarrer
  • server_update_reboot_post_reboot_delay: Temps (en secondes) à attendre après le redémarrage
  • server_update_reboot_reboot_timeout: Temps maximum (en secondes) à attendre pour que le serveur redémarre

Variables pour RHEL/CentOS :

  • server_update_yum_exclude_pkgs: chaîne de caractères séparée par des virgules de packages à exclure de la mise à jour. Peut utiliser des jokers. (par défaut [])
  • server_update_yum_install_pkgs: chaîne de caractères séparée par des virgules de packages à mettre à jour UNIQUEMENT. Peut utiliser des jokers. (par défaut '*' signifiant tous les packages)

Variables pour Ubuntu :

  • server_update_apt_exclude_default: true|false. mettre à true si vous utilisez la liste d'exclusion ci-dessous (par défaut false)
  • server_update_apt_exclude_pkgs: Liste de packages à ne pas mettre à jour (chaque élément sur une ligne séparée). Peut inclure un joker (mais utilisez ^ pour commencer à correspondre ou beaucoup correspondront) pour faire correspondre plusieurs packages. (par défaut non défini)
  • server_update_apt_default: full|update_specific|install (par défaut full)
    • full : mettre à jour tous les packages avec "apt-get dist-upgrade"
    • update_specific : ne mettre à jour que la liste dans la variable server_update_apt_install_pkgs
    • install : ne faire qu'installer la liste dans la variable server_update_apt_install_pkgs
  • server_update_apt_install_pkgs: Liste de packages à UNIQUEMENT mettre à jour ou installer (chaque élément sur une ligne séparée). Peut inclure un joker pour faire correspondre plusieurs packages. (par défaut non défini)

Exemple de Playbook server-update-reboot.yml

L'exemple de playbook ci-dessous mettra à jour/redémarrera un serveur à la fois (en utilisant les variables max_fail_percentage et serial). Si vous souhaitez mettre à jour/redémarrer tout en une fois, décommentez ces lignes.

---
- hosts: '{{inventory}}'
  max_fail_percentage: 0
  serial: 1
  become: yes
  roles:
#  - stop-applications
  - server-update-reboot
#  - server-config-xyz
#  - start-applications

Préparation

  • installer ansible
  • créer des clés
  • ssh au client pour ajouter une entrée dans le fichier known_hosts
  • configurer le fichier authorized_keys du serveur client
  • exécuter des commandes ansible

Utilisation

Pour Redhat/CentOS/Ubuntu

Utilisez tous les paramètres par défaut pour : mettre à jour, redémarrer le serveur et attendre qu'il démarre :

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev" -i hosts-dev

Idem que ci-dessus, mais ne redémarre pas le serveur :

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev reboot_default=false" -i hosts-dev

Pour Redhat/CentOS

Mettre à jour tous les packages sauf les packages spécifiés (pour RHEL) :

ansible-playbook server-update-reboot.yml --extra-vars 'inventory=centos-dev server_update_yum_exclude_pkgs="mysql*, bash, openssh*"' -i hosts-dev

Ne mettre à jour (ou installer) que des packages spécifiques (pour 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

Pour Ubuntu

Mettre à jour tous les packages sauf les packages spécifiés (pour 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

Ne mettre à jour que des packages spécifiques (pour 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

Ne faire qu'installer des packages spécifiques (pour Ubuntu). Attention avec les jokers :

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

Mitigation Spectre/Meltdown

Pour patcher Redhat/CentOS 7 et Ubuntu 16.04, pour Spectre et Meltdown (CVE-2017-5754, CVE-2017-5753, CVE-2017-5715)
Infos de Ubuntu
Infos de Redhat

Ou patcher tout simplement en utilisant la première commande ci-dessus.

Pour Redhat/CentOS 7 (Mitigation 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

Pour Ubuntu 16.04 (Mitigation 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

Notes

RHEL5

RHEL/CentOS 5 a une dépendance qui doit être installée : python-simplejson
Cette commande utilisera le module raw pour l'installer :

ansible centos5 -m raw -a "yum install -y python-simplejson" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev

SELinux

Si SELinux est activé/permissif, une dépendance est nécessaire : libselinux-python
Cette commande utilisera le module raw pour l'installer :

ansible centos5 -m raw -a "yum install -y libselinux-python" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev
À propos du projet

Role to update packages on linux and optionally reboot

Installer
ansible-galaxy install ryandaniels.server_update_reboot
Licence
mit
Téléchargements
15.9k
Propriétaire
Ansible all the things