11.5. Rétablissement de RHEL pour les images Edge
Vous pouvez vérifier si l'image mise à jour a été déployée avec succès ou non. Si le déploiement échoue, vous pouvez revenir à une version antérieure (commit). Pour revenir à un état fonctionnel antérieur, vous pouvez soit effectuer les étapes manuellement, soit utiliser un processus automatisé.
11.5.1. Comment les images RHEL for Edge sont-elles réintégrées ?
Avec les images RHEL for Edge, seules les mises à jour transactionnelles sont appliquées au système d'exploitation. Avec les mises à jour transactionnelles, vous pouvez facilement revenir sur les mises à jour infructueuses jusqu'au dernier bon état connu, ce qui permet d'éviter toute défaillance du système pendant les mises à jour.
Vous pouvez utiliser des retours en arrière intelligents avec Greenboot pour éliminer les problèmes de choix entre la stabilité de l'application et l'application des mises à jour de sécurité.
Greenboot exploite le site rpm-ostree
et exécute des contrôles de santé personnalisés au démarrage du système. En cas de problème, le système annule les modifications et préserve le dernier état de fonctionnement. Lorsque vous déployez une mise à jour rpm-ostree
, elle exécute des scripts pour vérifier que les services critiques peuvent encore fonctionner après la mise à jour. Si le système ne fonctionne pas, la mise à jour revient à la dernière version fonctionnelle connue du système. Ce processus garantit que votre dispositif RHEL for Edge est dans un état opérationnel.
Voici la structure du répertoire de Greenboot :
Exemple 11.1. Structure des répertoires de Greenboot
etc
└─ greenboot
├─ check
| └─ required.d
| └─ init.py
└─ green.d
└─ red.d
/etc/greenboot/check/required.d
- Contient les contrôles de santé qui ne doivent pas échouer.
/etc/greenboot/check/wanted.d
- Contient les contrôles de santé susceptibles d'échouer.
/etc/greenboot/green.d
- Contient les scripts à exécuter après un démarrage réussi.
/etc/greenboot/red.d
- Contient les scripts à exécuter après un échec de démarrage. Le système tente de démarrer trois fois et, en cas d'échec, il exécute les scripts.
Le diagramme suivant illustre le processus de retour en arrière de l'image RHEL for Edge.
11.5.2. Rétablissement manuel des images RHEL for Edge
Si le déploiement de la mise à jour de l'image RHEL for Edge échoue ou si la mise à jour ne fonctionne pas correctement, vous pouvez revenir manuellement à une version de déploiement antérieure.
Pour revenir à une version antérieure, procédez comme suit :
Procédure
Exécutez la commande
rollback
:# rpm-ostree rollback
La sortie de la commande fournit des détails sur l'ID d'engagement qui est déplacé et indique une transaction terminée avec les détails du paquet supprimé.
Redémarrer le système.
# systemctl reboot
La commande active le commit précédent avec le contenu stable. Les modifications sont appliquées et la version précédente est restaurée.
11.5.3. Rolling back des images RHEL for Edge à l'aide d'un processus automatisé
Les contrôles Greenboot fournissent un cadre intégré au processus de démarrage et peuvent déclencher des retours en arrière à l'adresse rpm-ostree
lorsqu'un contrôle de santé échoue. Pour les contrôles de santé, vous pouvez créer un script personnalisé qui indique si un contrôle de santé a réussi ou échoué. En fonction du résultat, vous pouvez décider du moment où un retour en arrière doit être déclenché.
Pour créer un script de bilan de santé, procédez comme suit :
Procédure
Créez un script qui renvoie un code de sortie standard
0
.Par exemple, le script suivant permet de s'assurer que le serveur DNS configuré est disponible :
#!/bin/bash DNS_SERVER=$(grep ^nameserver /etc/resolv.conf | head -n 1 | cut -f2 -d" ") COUNT=0 # check DNS server is available ping -c1 $DNS_SERVER while [ $? != '0' ] && [ $COUNT -lt 10 ]; do ((COUNT++)) echo "Checking for DNS: Attempt $COUNT ." sleep 10 ping -c 1 $DNS_SERVER done
Inclure un fichier exécutable pour les contrôles sanitaires à l'adresse
/etc/greenboot/check/required.d/
.chmod +x check-dns.sh
Lors du redémarrage suivant, le script est exécuté dans le cadre du processus de démarrage, avant que le système n'entre dans la cible boot-complete.target. Si les contrôles de santé sont réussis, aucune action n'est entreprise. Dans le cas contraire, le système est redémarré plusieurs fois, avant de marquer l'échec de la mise à jour et de revenir à la mise à jour précédente.
Verification steps
Pour vérifier si la passerelle par défaut est accessible, exécutez le script de contrôle de santé suivant :
Créez un script qui renvoie un code de sortie standard
0
.#!/bin/bash DEF_GW=$(ip r | awk '/^default/ {print $3}') SCRIPT=$(basename $0) count=10 connected=0 ping_timeout=5 interval=5 while [ $count -gt 0 -a $connected -eq 0 ]; do echo "$SCRIPT: Pinging default gateway $DEF_GW" ping -c 1 -q -W $ping_timeout $DEF_GW > /dev/null 2>&1 && connected=1 || sleep $interval ((--count)) done if [ $connected -eq 1 ]; then echo "$SCRIPT: Default gateway $DEF_GW is reachable." exit 0 else echo "$SCRIPT: Failed to ping default gateway $DEF_GW!" 1>&2 exit 1 fi
Inclure un fichier exécutable pour les contrôles de santé dans le répertoire
/etc/greenboot/check/required.d/
.chmod +x check-gw.sh