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
ansible-galaxy install ryandaniels.server_update_reboot