Nous avons vu dans le chapitre précédent que notre inventaire de machines peut être généré dynamiquement. Nous pouvons donc à l’aide d’Ansible mettre à jour les machines qui devront exécuter les calculs.
Voici un exemple de playbook Ansible pour cela dans le fichier update-servers.yml
---
# Description : Playbook pour la mise à jour des systèmes Ubuntu/Debian
# Ce playbook effectue :
# - La mise à jour du cache des paquets (apt update)
# - La mise à jour des paquets installés (apt upgrade)
- name: "Mise à jour des systèmes"
# Décommenter une des lignes suivantes selon les besoins :
#hosts: all # Pour tous les hôtes de l'inventaire
#hosts: vm_servers # Pour les machines virtuelles uniquement
#hosts: lxc_servers # Pour les conteneurs LXC uniquement
hosts: calcul_distribue # Dans notre cas, uniquement les conteneurs LXC servant de workers pour le calcul distribué
# Élévation des privilèges (nécessaire pour apt)
become: true
# Variables pour le contrôle des mises à jour
vars:
# Durée de validité du cache en secondes (86400 = 24 heures)
cache_valid_time: 86400
tasks:
- name: "Mise à jour du cache des paquets"
apt:
update_cache: yes
cache_valid_time: "{{ cache_valid_time }}"
register: apt_update_result
- name: "Mise à jour des paquets"
apt:
upgrade: yes
register: apt_upgrade_result
# Optionnel : Affichage des résultats
- name: "Affichage des paquets mis à jour"
debug:
var: apt_upgrade_result
when: apt_upgrade_result.changed
# Optionnel : Redémarrage si nécessaire
- name: "Vérification si un redémarrage est nécessaire"
stat:
path: /var/run/reboot-required
register: reboot_required
- name: "Notification si un redémarrage est nécessaire"
debug:
msg: "Un redémarrage du système est recommandé"
when: reboot_required.stat.exists
Exécutons ce playbook :
deployer@ubuntu-deploy:~/homelab_julia_pve_tf_ansible$ ANSIBLE_REMOTE_USER=root ansible-playbook -i dynamic-inventory.proxmox.yml update-servers.yml
PLAY [Mise à jour des systèmes] ******************************************************************************
TASK [Gathering Facts] ***************************************************************************************
ok: [ubuntu-lxc-1]
ok: [ubuntu-lxc-4]
ok: [ubuntu-lxc-5]
ok: [ubuntu-lxc-3]
ok: [ubuntu-lxc-2]
TASK [Mise à jour du cache des paquets] **********************************************************************
ok: [ubuntu-lxc-3]
ok: [ubuntu-lxc-4]
ok: [ubuntu-lxc-5]
ok: [ubuntu-lxc-1]
ok: [ubuntu-lxc-2]
TASK [Mise à jour des paquets] *******************************************************************************
TASK [Vérification si un redémarrage est nécessaire] *********************************************************
ok: [ubuntu-lxc-1]
ok: [ubuntu-lxc-4]
ok: [ubuntu-lxc-5]
ok: [ubuntu-lxc-3]
ok: [ubuntu-lxc-2]
TASK [Notification si un redémarrage est nécessaire] *********************************************************
ok: [ubuntu-lxc-1] => {
"msg": "Un redémarrage du système est recommandé"
}
ok: [ubuntu-lxc-3] => {
"msg": "Un redémarrage du système est recommandé"
}
ok: [ubuntu-lxc-5] => {
"msg": "Un redémarrage du système est recommandé"
}
ok: [ubuntu-lxc-4] => {
"msg": "Un redémarrage du système est recommandé"
}
ok: [ubuntu-lxc-2] => {
"msg": "Un redémarrage du système est recommandé"
}
PLAY RECAP ***************************************************************************************************
ubuntu-lxc-1 : ok=6 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-2 : ok=6 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-3 : ok=6 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-4 : ok=6 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-5 : ok=6 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0