====== Rebooter Persan ====== ===== Actions préalables ===== ==== Vérifier si un fsck va être déclenché ==== Une vérification de disque peut rallonger énormément la durée du redémarrage. Vérifier : df | awk '/^\/dev\/mapper/ {print $1}' | xargs -I {} sh -c 'echo {}; tune2fs -l {}' | awk '/^\/dev/ {print $1} /^Filesystem state/ {print $3, " ",$4}' ==== Prévenir les usagers ==== === Sur status.chapril.org === Ouvrir une action de maintenance sur https://status.chapril.org/ : * Utiliser le modèle ''reboot cluster'' ; * Renseigner ''When is this maintenance scheduled for?'' ; * Ne pas remplir ''When did this maintenance complete?'' ; * Cocher ''Notifier les abonnés ?''. === Sur chapril@april.org puis sur admins@chapril.org === Envoyer deux courriels séparés aux listes : [[chapril@april.org]] puis [[admins@chapril.org]] : From: François Poulain To: chapril@april.org Subject: [Chapril] Reboot du cluster Coucou, Je vais rebooter le cluster pour tenir compte du dernier upgrade noyal de sécurité. François -- François Poulain === Sur pouet.chapril.org === À l'aide du compte https://pouet.chapril.org/@chapriladmin : Nous allons redémarrer les serveurs de notre Chapril https://chapril.org pour tenir compte des mises à jour. L'opération prendra environ 30 minutes, durée pendant laquelle les services seront indisponibles. === Sur les machines === Vérifier qui est présent sur les VM : cluster_guests=$(ssh root@persan.chapril.org "virsh list --name"; ssh root@korat.chapril.org "virsh list --name") for guest in $cluster_guests ; do echo "===== $guest =====" cmd='for i in $(ps auxwww|grep "\-bash" | awk '\''{ print $2 }'\'' ); do cat "/proc/$i/environ" ; done 2>/dev/null |strings |grep GIT_AUTHOR_NAME | sort | uniq' ssh root@$guest.cluster.chapril.org "$cmd" done Pour le cas où un animateur travaillerait sur sa VM sans avoir vu ni le courriel ni ''status.chapril.org'', envoyer un avertissement sur chaque machine. ./do.sh "wall 'Bonjour. Reboot SI Chapril à 13h15. Cpm.'" === Sur IRC et XMPP === * IRC : salon ''#chapril'' sur ''irc.libera.chat:6697'' ([[https://webchat.april.org/|webchat]]) ; * XMPP : ''chapril@muc.chapril.org''. ==== Couper le monitoring ==== * Mettre les //hosts// concernés en //downtime// ; * Propager les //downtimes// en questions sur les services des //hosts//. Le script suivant peut être utilisé pour couper le monitoring sur les hôtes et propager les //downtimes// sur les services hébergés. Les identifiants sont définis dans le fichier ''/etc/icinga2/conf.d/api-users.conf'' sur la machine ''admin.cluster.chapril.org''. L'utilitaire ''[[https://github.com/jpmens/jo|jo]]'' ([[https://packages.debian.org/stable/jo|paquet Debian]]) est requis. curl -k -s -S -i -u ${ICINGA_USER}:${ICINGA_PASSWORD} -H 'Accept: application/json' \ -X POST 'https://icinga.chapril.org:5665/v1/actions/schedule-downtime' \ -d "$(jo -p \ pretty=true \ type=Host \ filter="match(\"persan*\", host.vars.hote)" \ all_services=true \ author="${GIT_AUTHOR_NAME}" \ comment="Persan upgrade maintenance" \ fixed=true \ start_time=$(date +%s -d "+0 hour") \ end_time=$(date +%s -d "+1 hour"))" ==== Lister les VM actives ==== Noter la liste des VM actives pour comparer avec après le redémarrage. virsh list ===== Arrêt de Persan ===== Arrêter les VM avant de redémarrer Persan. ==== Arrêter les VM ==== cd /etc/libvirt/qemu virsh list --state-running --name | xargs -I{} virsh shutdown {}; watch virsh list ===== Redémarrage de Persan ===== reboot ==== Remise en marche de Persan ==== Attendre que le système ait fini de démarrer (état à //running//) : watch "systemctl status | grep State | head -1" Démarrer les VM : Ne pas redémarrer la VM ''template''. virsh list --state-shutoff --name | grep -v template | xargs -I{} virsh start {}; watch virsh list ==== Lister les VM actives ==== virsh list Et comparer à la liste avant ''reboot''. ==== Vérifier le bon démarrage des VM ==== Parfois les VM démarre mais en statut //degraded//. Il convient de vérifier par une commande : ./do.sh "systemctl status | head -2" Et pour les VM n'ayant pas un statut //running//, faire la commande suivante pour identifier le service en souffrance : systemctl list-units ==== Vérifier les sondes dans Icinga ==== Si un problème subsiste alors les sondes devraient le faire apparaître dans Icinga. Vérifier que les alertes actives sont acceptables. ==== Clôturer l'action de maintenance status.chapril.org ==== Éditer l'action de maintenance : * //Status// : sélectionner ''complete'' ; * //When did this maintenance complete?// : mettre la date et l’horaire de fin.