Bonnes pratiques pour la mise à niveau du système d'exploitation

Ce document décrit les bonnes pratiques et les stratégies à suivre pour mettre à niveau les systèmes d'exploitation sur les instances Compute Engine. Découvrez comment mettre à niveau les versions majeures de l'OS à l'aide d'une infrastructure immuable, de la recréation d'instances ou de workflows sur place, et comment automatiser les correctifs de sécurité de routine.

Lorsqu'une version de système d'exploitation approche de sa date de fin de support ou de fin de vie, vous devez passer à une version compatible pour continuer à bénéficier des mises à jour de sécurité, de la compatibilité logicielle et de l'intégration à la plate-forme Cloud de Confiance by S3NS . Pour en savoir plus sur les phases d'assistance, consultez Cycle de vie des systèmes d'exploitation.

Risques liés aux mises à niveau sur place de versions majeures de l'OS

Si vous effectuez une mise à niveau majeure sur place du système d'exploitation (par exemple, en passant de Debian 12 à 13, de RHEL 9 à 10 ou d'Ubuntu 24.04 à 26.04 sur une instance de calcul en cours d'exécution), vous introduisez des risques opérationnels importants dans les environnements cloud. Contrairement aux serveurs physiques sur site, vos instances de calcul dépendent de packages spécialisés pour l'environnement invité afin de communiquer avec l'hyperviseur et le serveur de métadonnées Compute Engine.

Lorsque vous mettez à niveau un système d'exploitation sur place, vous risquez les modes de défaillance suivants :

  • Perte de connectivité SSH et RDP : les formats de configuration des services réseau, les règles de pare-feu au niveau de l'invité (comme ufw ou firewalld) ou les paramètres du démon SSH peuvent changer entre les versions de l'OS, ce qui coupe l'accès administratif à distance.
  • Perturbation de l'environnement invité : les packages google-guest-agent et google-oslogin gèrent les clés SSH, les comptes utilisateur, les interfaces réseau et la synchronisation avec les métadonnées. Si les dépôts ou les dépendances de packages sont interrompus lors d'une mise à niveau de la distribution, l'agent invité peut cesser de fonctionner, ce qui empêche d'autres connexions ou configurations réseau.
  • Incompatibilités avec les pilotes de stockage et du noyau : les modifications apportées au noyau, à initramfs ou aux pilotes des contrôleurs de disque (tels que virtio-scsi ou NVMe) peuvent entraîner des échecs de démarrage ou empêcher l'instance de calcul de reconnaître les volumes de disque persistant associés.
  • Configurations incohérentes pour les dépôts : les fournisseurs de systèmes d'exploitation abandonnent ou remplacent souvent les anciens dépôts de packages et les clés de signature, ce qui peut entraîner l'échec des gestionnaires de packages en cours de mise à niveau et laisser le système d'exploitation dans un état irrécupérable et partiellement installé.

Pour éviter ces risques, utilisez un modèle d'infrastructure immuable au lieu de mettre à niveau les versions majeures de l'OS sur vos instances de calcul de production.

Choisir la bonne stratégie de mise à niveau

Selon que vos charges de travail sont sans état ou avec état, choisissez l'une des stratégies suivantes :

Stratégie Recommandations Risque de temps d'arrêt Mécanisme de rollback
Infrastructure immuable Charges de travail sans état, groupes d'instances gérés (MIG), microservices, hôtes de conteneurs Aucun temps d'arrêt avec le remplacement progressif Rétablir une image antérieure pour le modèle d'instance
Recréer des instances de calcul avec Persistent Disk Instances de calcul autonomes avec état, bases de données avec stockage secondaire associé, hôtes d'applications anciennes Minimal avec un intervalle de maintenance planifié Réassocier des disques à l'instance de calcul d'origine ou restaurer des instantanés
Mise à niveau sur place de l'OS Instances de calcul autonomes où vous ne pouvez pas automatiser ni extraire les configurations locales Élevé, nécessitant un temps d'arrêt et une planification manuelle de la reprise Restaurer à partir d'un instantané de disque persistant

Infrastructure immuable

La méthode la plus sûre et la plus fiable pour mettre à niveau vos systèmes d'exploitation consiste à utiliser le modèle d'infrastructure immuable. Au lieu de modifier les instances de calcul en cours d'exécution, vous créez de nouvelles instances de calcul à partir d'images d'OS publiques ou personnalisées mises à jour, puis vous remplacez vos anciennes instances.

Si vos charges de travail s'exécutent dans des groupes d'instances gérés (MIG), vous pouvez automatiser ce déploiement sans aucune interruption de service.

Créer une image mise à jour

  1. Sélectionnez la dernière image d'OS publique dans la liste des détails des systèmes d'exploitation compatibles, ou créez une image de base personnalisée à l'aide d'Image Builder ou d'outils automatisés tels que Packer ou Ansible.
  2. Vérifiez que votre application et ses dépendances s'installent et s'exécutent correctement sur la nouvelle version de l'OS dans un environnement de test hors production.
  3. Créez une image d'OS personnalisée ou référencez la nouvelle famille d'images publiques. Pour en savoir plus, consultez Bonnes pratiques concernant les familles d'images.

Créer un modèle d'instance mis à jour

Créez un modèle d'instance qui référence l'image d'OS mise à jour :

gcloud compute instance-templates create NEW_TEMPLATE_NAME \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --machine-type=MACHINE_TYPE \
    --region=REGION

Remplacez les éléments suivants :

  • NEW_TEMPLATE_NAME : nom de la nouvelle instance.
  • IMAGE_FAMILY : famille d'images de l'OS cible, par exemple debian-12 ou ubuntu-2404-lts.
  • IMAGE_PROJECT : projet hébergeant l'image, tel que debian-cloud ou ubuntu-os-cloud.
  • MACHINE_TYPE : type de machine de vos instances.
  • REGION : région Compute Engine dans laquelle vous créez le modèle.

Effectuer un remplacement progressif dans le MIG

Appliquez le modèle modifié à votre groupe d'instances géré et lancez un remplacement progressif :

gcloud compute instance-groups managed rolling-action replace MIG_NAME \
    --max-surge=20% \
    --max-unavailable=0 \
    --region=REGION

Remplacez les éléments suivants :

  • MIG_NAME : nom de votre groupe d'instances géré.
  • REGION : région où se trouve le MIG. Pour les MIG zonaux, remplacez --region=REGION par --zone=ZONE.

Recréer des instances de calcul avec Persistent Disk

Si vous exécutez des instances de calcul autonomes avec état dans lesquelles les applications stockent la configuration et les données sur des volumes Persistent Disk, vous pouvez mettre à niveau votre système d'exploitation en recréant l'instance de calcul avec un nouveau disque de démarrage tout en conservant vos disques de données.

Sauvegarder tous les disques

Avant de modifier l'infrastructure, créez des instantanés standards ou régionaux du disque de démarrage et de tous les volumes de disque persistant associés :

gcloud compute disks snapshot BOOT_DISK_NAME \
    --snapshot-names=SNAPSHOT_NAME \
    --zone=ZONE

Remplacez les éléments suivants :

  • BOOT_DISK_NAME : nom du disque de démarrage à sauvegarder.
  • SNAPSHOT_NAME : nom du nouvel instantané de disque persistant.
  • ZONE : zone où se trouve le disque.

Pour en savoir plus, consultez Créer et gérer des instantanés.

Séparer les données d'application du disque de démarrage

Assurez-vous que les données d'application, les fichiers de base de données et les journaux de transactions résident sur des volumes de disque persistant secondaires ou des services externes, tels que Cloud Storage ou Cloud SQL, plutôt que sur le disque de démarrage.

Créer l'instance de calcul de remplacement

  1. Arrêtez l'ancienne instance de calcul pour vous assurer que les données restent cohérentes :

    gcloud compute instances stop LEGACY_INSTANCE_NAME --zone=ZONE
    
  2. Dissociez les disques de données secondaires de l'ancienne instance de calcul :

    gcloud compute instances detach-disk LEGACY_INSTANCE_NAME \
        --disk=DATA_DISK_NAME \
        --zone=ZONE
    
  3. Créez une instance de calcul avec la version de l'OS cible :

    gcloud compute instances create NEW_INSTANCE_NAME \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE
    
  4. Associez les disques de données secondaires existants à la nouvelle instance de calcul :

    gcloud compute instances attach-disk NEW_INSTANCE_NAME \
        --disk=DATA_DISK_NAME \
        --zone=ZONE
    
  5. Connectez-vous à la nouvelle instance de calcul, installez les systèmes de fichiers sur les disques de données et démarrez les services de votre application.

  6. Si nécessaire, réattribuez les adresses IP externes statiques ou les enregistrements DNS pour qu'ils pointent vers la nouvelle instance de calcul.

Remplacez les éléments suivants :

  • LEGACY_INSTANCE_NAME : nom de l'instance de calcul existante que vous mettez à niveau.
  • DATA_DISK_NAME : nom du volume de disque persistant secondaire à dissocier et à réassocier.
  • NEW_INSTANCE_NAME : nom de la nouvelle instance de calcul de remplacement.
  • IMAGE_FAMILY : famille d'images pour la version de l'OS cible, telle que debian-13 ou ubuntu-2604-lts.
  • IMAGE_PROJECT : projet fournissant l'image, tel que debian-cloud ou ubuntu-os-cloud.
  • MACHINE_TYPE : type de machine pour la nouvelle instance de calcul.
  • ZONE : zone dans laquelle se trouvent vos instances de calcul.

Mises à niveau de l'OS sur place

Si vous ne pouvez pas recréer votre instance de calcul en raison de configurations manuelles complexes et que vous devez effectuer une mise à niveau sur place, effectuez ces vérifications avant la mise à niveau et suivez attentivement les instructions spécifiques à la distribution.

Checklist avant la mise à niveau

Suivez toutes les étapes de cette checklist avant de commencer une mise à niveau sur place :

  1. Prenez un instantané du disque de démarrage avant d'exécuter des commandes de mise à niveau. Il s'agit de votre principal mécanisme de récupération en cas d'échec de la mise à niveau.
  2. Mettez à jour tous les packages actuels et l'environnement invité pour Cloud de Confiance vers les dernières versions disponibles pour votre version actuelle de l'OS :

    • Pour Debian et Ubuntu : sudo apt update && sudo apt dist-upgrade -y
    • Pour RHEL, CentOS et Rocky Linux : sudo dnf upgrade -y
    • Pour SLES : sudo zypper update

    Assurez-vous que les packages google-guest-agent et google-oslogin sont actifs :

    sudo systemctl status google-guest-agent
    
  3. Activez la console série interactive sur votre instance de calcul pour pouvoir résoudre les problèmes et vous connecter si SSH ou la mise en réseau cessent de fonctionner pendant la mise à niveau :

    gcloud compute instances add-metadata INSTANCE_NAME \
        --metadata=serial-port-enable=TRUE \
        --zone=ZONE
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de votre instance de calcul.
    • ZONE : zone où se trouve votre instance de calcul.

    Pour en savoir plus, consultez Interagir avec la console série.

  4. Si vous utilisez OS Login ou des clés SSH gérées par l'agent invité, définissez un mot de passe pour un compte utilisateur local disposant de droits d'administrateur, par exemple avec sudo passwd USERNAME. Vous pourrez ainsi vous connecter via la console série si OS Login est temporairement indisponible pendant la mise à niveau. Remplacez USERNAME par le nom de votre compte utilisateur local.

  5. Assurez-vous que la partition racine / et la partition de démarrage /boot disposent de suffisamment d'espace libre (au moins 5 Go sont recommandés) pour télécharger et décompresser les nouveaux packages :

    df -h / /boot
    
  6. Vérifiez que les agents tiers pour la sécurité, la sauvegarde ou la surveillance (y compris l'agent Ops Google Cloud) sont compatibles avec la version cible du système d'exploitation.

Procédures de mise à niveau sur place

Les sections suivantes fournissent des workflows généraux pour les systèmes d'exploitation courants. Consultez toujours la documentation officielle sur la mise à niveau de votre système d'exploitation avant de procéder à la mise à niveau.

Debian

Vous pouvez mettre à niveau Debian entre deux versions majeures consécutives. Ne sautez pas les versions majeures. Par exemple, passez d'abord de Debian 11 à Debian 12, puis de Debian 12 à Debian 13.

  1. Mettez à jour les dépôts de packages Debian existants :

    sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y
    
  2. Mettez à jour les sources de package dans /etc/apt/sources.list et /etc/apt/sources.list.d/ en remplaçant le nom de code de la version actuelle, tel que bullseye, par le nom de code de la version cible, tel que bookworm. Assurez-vous que les URL du dépôt de packages Cloud de Confiance correspondent à la nouvelle version.

  3. Effectuez une mise à niveau minimale pour mettre à jour les principaux outils d'empaquetage :

    sudo apt update
    sudo apt upgrade --without-new-pkgs -y
    
  4. Exécutez la mise à niveau complète de la distribution :

    sudo apt full-upgrade -y
    
  5. Vérifiez que google-guest-agent est actif et activé :

    sudo systemctl enable --now google-guest-agent
    
  6. Redémarrez l'instance de calcul :

    sudo systemctl reboot
    

Ubuntu

Pour gérer les mises à niveau LTS vers LTS sur Ubuntu, utilisez l'outil do-release-upgrade.

  1. Mettez à jour tous les packages actuels :

    sudo apt update && sudo apt dist-upgrade -y
    
  2. Installez le package principal pour le gestionnaire de mises à jour :

    sudo apt install update-manager-core -y
    
  3. Démarrez l'outil de mise à niveau des versions :

    sudo do-release-upgrade
    
  4. Suivez les instructions interactives pour confirmer les mises à jour du dépôt et les remplacements de packages. Si vous êtes invité à examiner les fichiers de configuration modifiés, vérifiez attentivement les différences avant de les remplacer.

  5. Redémarrez l'instance de calcul lorsque vous y êtes invité.

RHEL

Pour effectuer une mise à niveau entre les versions majeures de RHEL, utilisez l'utilitaire leapp Red Hat compatible.

  1. Vérifiez l'état de votre abonnement Red Hat et assurez-vous que l'instance de calcul se connecte à Compute Engine Red Hat Update Infrastructure (RHUI).
  2. Installez l'utilitaire Leapp et les packages contenant les données de migration.
  3. Exécutez l'évaluation avant la mise à niveau :

    sudo leapp preupgrade
    
  4. Consultez le rapport dans /var/log/leapp/leapp-report.txt et résolvez tous les problèmes d'inhibiteurs identifiés par Leapp.

  5. Exécutez la mise à niveau :

    sudo leapp upgrade
    
  6. Redémarrez l'instance pour permettre à Leapp d'effectuer la mise à niveau de l'OS dans un environnement isolé :

    sudo reboot
    

SLES

Pour effectuer des migrations de service packs et des mises à niveau de distribution de version majeure sur SLES, utilisez zypper :

  1. Mettez à jour le système existant :

    sudo zypper patch
    
  2. Exécutez zypper migration pour effectuer une migration en ligne ou suivez le workflow de mise à niveau de la distribution à l'aide de zypper dup, spécifié dans la documentation sur la mise à niveau de SLES.

Windows

Pour les instances de calcul Windows Server, vous pouvez utiliser des supports d'installation avec des licences en volume Compute Engine et des scripts PowerShell pour automatiser les mises à niveau sans intervention manuelle.

Pour effectuer une mise à niveau sur place sur Windows Server, suivez le tutoriel Effectuer une mise à niveau sur place de Windows Server.

Automatiser la gestion des correctifs pour les mises à jour mineures

Faites la distinction entre les mises à niveau majeures de l'OS et les mises à jour mineures et correctifs de sécurité de routine. Pour la maintenance régulière des logiciels, les mises à jour des packages et l'application de correctifs aux CVE, utilisez VM Manager Patch pour automatiser le déploiement des correctifs sur votre parc d'instances de calcul.

Suivez ces bonnes pratiques pour gérer les correctifs automatiquement :

  • Organiser les instances avec des libellés : attribuez des libellés avec des métadonnées, telles que env:dev, env:prod et tier:frontend, pour cibler des groupes spécifiques d'instances de calcul pour les correctifs.
  • Déployer zone par zone : échelonnez les tâches de correctif entre les zones et les régions. N'appliquez jamais de correctifs à toutes les zones simultanément dans les environnements de production.
  • Utilisez des scripts préliminaires et consécutifs aux correctifs : configurez des scripts préliminaires aux correctifs pour vider les connexions ou suspendre les services de manière sécurisée, et configurez des scripts consécutifs aux correctifs pour exécuter des vérifications d'état avant de remettre les instances en service.
  • Surveiller la conformité des correctifs : utilisez le tableau de bord VM Manager dans la consoleCloud de Confiance pour suivre la conformité des correctifs et l'état des failles sur votre parc d'instances de calcul.

Pour en savoir plus, consultez Créer des jobs de correctif.

Validation et dépannage après la mise à niveau

Une fois la mise à niveau effectuée, suivez les étapes de validation suivantes :

  1. Vérifiez que la connexion SSH ou RDP fonctionne normalement.
  2. Assurez-vous que l'agent invité et le service OS Login sont actifs et signalent un état sain :

    sudo systemctl status google-guest-agent
    sudo systemctl status google-oslogin-cache
    
  3. Vérifiez que l'instance de calcul peut interroger le serveur de métadonnées de l'instance :

    curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/id
    
  4. Vérifiez que vos services d'application ont démarré et que les vérifications de l'état des équilibreurs de charge signalent des instances opérationnelles.

Résoudre les problèmes de perte de connexion

Si vous perdez l'accès SSH ou RDP à l'instance de calcul après une mise à niveau sur place, suivez les étapes de dépannage ci-dessous :

  1. Consultez le journal de la console pour détecter les paniques du noyau, les erreurs lors du démarrage du service ou les échecs lors de l'initialisation du réseau :

    gcloud compute instances tail-serial-port-output INSTANCE_NAME \
        --zone=ZONE
    
  2. Si vous avez activé la console série interactive avant la mise à niveau, connectez-vous directement au terminal :

    gcloud compute connect-to-serial-port INSTANCE_NAME \
        --zone=ZONE
    

    Connectez-vous à l'aide de vos identifiants utilisateur locaux, inspectez les journaux système avec journalctl -xe et redémarrez le réseau ou le service google-guest-agent.

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance de calcul que vous dépannez.
    • ZONE : zone où se trouve l'instance de calcul.
  3. Si le système d'exploitation ne peut pas démarrer ni être récupéré, créez un volume de disque persistant à partir de l'instantané que vous avez pris avant la mise à niveau, puis associez-le en tant que disque de démarrage de l'instance de calcul. Pour obtenir la procédure de récupération détaillée, consultez Restaurer un instantané sur un nouveau disque.

Étapes suivantes