Vous pouvez utiliser une seule requête de la CLI Google Cloud ou de l'API Compute Engine pour mettre à jour plusieurs propriétés d'instance et éventuellement redémarrer l'instance, si nécessaire. La méthode de mise à jour gère la logique pour valider les propriétés d'instance mises à jour et garantir que les ressources nécessaires sont disponibles pour terminer la mise à jour correctement. Si la demande comprend des propriétés non valides ou si les ressources demandées ne sont pas disponibles, la requête renvoie une erreur et n'apporte aucune modification à votre instance. Cela protège l'instance des mises à jour partielles, et lui évite d'être arrêtée et de ne pas pouvoir accéder aux ressources pour redémarrer.
Avant de commencer
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Définissez une région et une zone par défaut.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Restrictions
- Les requêtes de mise à jour d'instance via gcloud CLI ou l'API Compute Engine ne prennent pas en charge la sémantique
PATCH
. La ressource d'instance dans la requête de mise à jour doit inclure toutes les propriétés de l'instance. Les propriétés manquantes dans la configuration de l'instance dans votre requête de mise à jour sont considérées comme supprimées de l'instance. - Vous ne pouvez mettre à jour qu'une liste spécifique de propriétés.
- Il n'est pas possible de modifier des instances depuis et vers une location unique.
- Vous pouvez modifier une instance d'une réservation à une autre, mais vous ne pouvez pas associer une instance à une réservation, ou l'en dissocier, à l'aide du processus de mise à jour.
- Si l'instance est associée à un SSD local, vous ne pouvez pas mettre à jour les propriétés qui nécessitent le redémarrage d'une instance. Vous devez supprimer l'instance, puis la recréer. Assurez-vous de migrer vos données critiques du SSD local vers un disque persistant ou vers une autre VM avant de supprimer la VM.
- Si une instance utilise des ressources disponibles uniquement dans l'API Compute Engine version bêta, vous devez utiliser la bonne version de la méthode
instances.update
pour mettre à jour ces propriétés. Par exemple, si vous créez une instance à l'aide de l'API Compute Engine version bêta et configurez l'instance avec une ressource que seule l'API version bêta reconnaît, vous devez également utiliser la version bêta de la méthodeinstances.update
pour mettre à jour ces ressources. La version v1 de la méthodeinstances.update
ne reconnaît pas les ressources bêta utilisées par votre instance. Par conséquent, elle supprime ces ressources bêta de la configuration de l'instance lors du processus de mise à jour. Cela s'applique également aux ressources de l'API version alpha.
Autorisations
Vous devez disposer de l'autorisation compute.instances.update
pour pouvoir mettre à jour des instances.
Cette autorisation est incluse dans plusieurs rôles de gestion de l'authentification et des accès (IAM) existants.
Vous devez également être autorisé à utiliser les ressources que vous souhaitez modifier sur l'instance. Par exemple, pour ajouter un disque à une instance, vous devez disposer des autorisations suivantes :
- L'autorisation
compute.instances.update
sur l'instance que vous souhaitez mettre à jour. - L'autorisation
compute.disks.use
pour un disque existant oucompute.disks.create
pour un projet pour lequel vous souhaitez créer un disque.
Bonnes pratiques
Pour vous assurer que l'interface de mise à jour de l'instance fonctionne au mieux, suivez les bonnes pratiques suivantes :
- Si possible, utilisez systématiquement la même version de l'API Compute Engine pour créer, définir et mettre à jour des instances. Cela vous garantit de pouvoir mettre à jour et modifier toutes les ressources d'instance si elles ne sont disponibles que dans une seule version de l'API.
- Bien que vous puissiez utiliser la méthode
instances.update
pour mettre à jour des instances dans un groupe d'instances géré (MIG), dans la plupart des cas, il est préférable de modifier le modèle d'instance du groupe, puis de déployer cette mise à jour dans le MIG.
Propriétés pouvant être mises à jour
Vous ne pouvez modifier qu'un ensemble spécifique de propriétés d'instance via la méthode de mise à jour. Les mises à jour de certaines propriétés nécessitent le redémarrage de l'instance. Pour éviter les redémarrages accidentels sur vos instances, votre requête doit définir le type d'action qui est autorisé sur vos instances. Votre requête peut spécifier l'une des actions suivantes :
NO_EFFECT
: la requête de mise à jour vérifie si la requête est valide et si les ressources sont disponibles, mais n'exécute pas la mise à jour. Utilisez cette option pour tester des commandes sans lancer de véritables mises à jour.REFRESH
: la requête de mise à jour ne s'exécute que si les propriétés modifiées de l'instance ne nécessitent pas de la redémarrer. Une erreurINFEASIBLE
est renvoyée si la requête est valide, mais nécessite un redémarrage.RESTART
: si la mise à jour nécessite le redémarrage de l'instance, le système la redémarre.
Les propriétés qui nécessitent un redémarrage (RESTART
) pour la mise à jour :
reservationAffinity
disks
- Disques de démarragedisks.deviceName
- Tous les disques
displayDevice
enableNestedVirtualization
guestAccelerators
machineType
minCpuPlatform
networkPerformanceConfig
resourcePolicies
scheduling
serviceAccounts
shieldedInstanceConfig
threadsPerCore
visibleCoreCount
Propriétés qui nécessitent uniquement une actualisation (REFRESH
) pour la mise à jour :
canIpForward
deletionProtection
description
disks
- Propriétés de disque non amorçable, à l'exception dedeviceName
labels
metadata
nodeAffinities
tags
Mettre à jour les propriétés d'une instance
Mettez à jour vos instances en procédant comme suit :
- Exportez les propriétés de configuration de l'instance.
- Modifiez les propriétés de configuration de l'instance.
- Exécutez une requête de test en spécifiant
NO_EFFECT
comme action la plus perturbatrice. La réponse indique les champs non valides dans la configuration de l'instance et l'action requise pour appliquer les modifications. - Si la configuration est acceptable, demandez une mise à jour d'instance et spécifiez l'action la plus perturbatrice acceptable pour la mise à jour de votre instance.
Le système ne lance le processus de mise à jour que si votre requête répond aux exigences suivantes :
- La propriété
fingerprint
de l'instance de votre requête doit correspondre à la propriétéfingerprint
de l'instance que vous mettez à jour. Cela empêche les demandes de mise à jour simultanées sur une même instance de s'écraser. - Les propriétés de votre requête de mise à jour doivent être valides.
- Les ressources que vous demandez doivent être disponibles.
- Si les propriétés de votre requête nécessitent un redémarrage de l'instance, la requête doit spécifier
RESTART
comme action autorisée.
Si les exigences sont remplies, le système démarre le processus de mise à jour de l'instance. Sinon, le système n'apporte aucune modification à votre instance existante ou à sa configuration.
Vous pouvez lancer des mises à jour à l'aide de gcloud CLI ou de l'API Compute Engine.
gcloud
Utilisez la commande
instances export
pour exporter les propriétés existantes de l'instance :gcloud compute instances export INSTANCE_NAME \ --project PROJECT_ID \ --zone ZONE \ --destination=FILE_PATH
Remplacez l'élément suivant :
INSTANCE_NAME
: nom de l'instance à exporter.PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instance.FILE_PATH
: emplacement où enregistrer le fichier de configuration de l'instance sur votre poste de travail local.
Utilisez un éditeur de texte pour modifier une ou plusieurs propriétés du fichier de configuration d'instance exporté. Pour savoir quelles propriétés vous pouvez mettre à jour, consultez la liste des propriétés pouvant être mises à jour. Par exemple, pour changer le type de machine de l'instance, modifiez la propriété
machineType
.⋮ machineType: https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE ⋮
Remplacez l'élément suivant :
PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instance.MACHINE_TYPE
: le type de machine de l'instance. Par exemple,n1-standard-2
.
Utilisez la commande
instances update-from-file
pour exécuter une mise à jour de test de l'instance cible. Spécifiez l'option--most-disruptive-allowed-action=NO_EFFECT
. La réponse identifie les propriétés mal configurées et indique si une actionRESTART
ouREFRESH
est nécessaire pour appliquer la mise à jour.gcloud compute instances update-from-file INSTANCE_NAME \ --project PROJECT_ID \ --zone ZONE \ --source=FILE_PATH \ --most-disruptive-allowed-action NO_EFFECT
Remplacez l'élément suivant :
INSTANCE_NAME
: nom de l'instance à exporter.PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instance.FILE_PATH
: chemin d'accès au fichier de configuration d'instance modifié sur votre poste de travail local.
Exécutez la commande
instances update-from-file
pour mettre à jour l'instance cible. Si vous mettez à jour une propriété qui nécessite le redémarrage de l'instance, incluez l'option--most-disruptive-allowed-action=RESTART
. Si les propriétés ne nécessitent pas de redémarrage, spécifiez l'option--most-disruptive-allowed-action=REFRESH
. Pour savoir quelles propriétés nécessitent un redémarrage, consultez la liste des propriétés pouvant être mises à jour.gcloud compute instances update-from-file INSTANCE_NAME \ --project PROJECT_ID \ --zone ZONE \ --source=FILE_PATH \ --most-disruptive-allowed-action ALLOWED_ACTION
Remplacez l'élément suivant :
INSTANCE_NAME
: nom de l'instance à exporter.PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instance.FILE_PATH
: chemin d'accès au fichier de configuration d'instance modifié sur votre poste de travail local.ALLOWED_ACTION
: niveau de perturbation de la mise à jour. SpécifiezRESTART
pour permettre un redémarrage complet de l'instance. SpécifiezREFRESH
pour mettre à jour l'instance uniquement si les propriétés modifiées ne nécessitent pas de redémarrer l'instance.
Si la requête de mise à jour est valide et que les ressources requises sont disponibles, le processus de mise à jour de l'instance commence. Vous pouvez surveiller l'état de cette opération en affichant les journaux d'audit.
Si la mise à jour nécessite un redémarrage et que votre commande autorise l'action RESTART
, l'instance redémarre pour appliquer les modifications.
REST
Utilisez la méthode
instances.get
de l'API Compute Engine pour exporter les propriétés de l'instance :GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instanceINSTANCE_NAME
: nom de l'instance à exporter.
Cette requête renvoie une définition des ressources d'instance.
Dans la réponse, modifiez les propriétés de la ressource d'instance. Pour savoir quelles propriétés peuvent être mises à jour, consultez la liste des propriétés pouvant être mises à jour. Par exemple, pour changer le type de machine de l'instance, modifiez la propriété
machineType
. Vous pouvez modifier plusieurs propriétés.{ ⋮ "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE", ⋮ }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instance.MACHINE_TYPE
: type de machine de l'instance. Par exemple,n1-standard-2
.
Utilisez la méthode
instances.update
dans l'API Compute Engine et spécifiezmost_disruptive_allowed_action=NO_EFFECT
pour exécuter une mise à jour de test de l'instance cible. La réponse identifie les propriétés mal configurées et indique si une actionRESTART
ouREFRESH
est nécessaire pour appliquer la mise à jour.PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?most_disruptive_allowed_action=NO_EFFECT { ⋮ "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2", ⋮ }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instance.INSTANCE_NAME
: nom de l'instance à exporter.
Utilisez la méthode
instances.update
dans l'API Compute Engine pour mettre à jour l'instance cible. Si vous mettez à jour une propriété nécessitant un redémarrage de l'instance, incluez le paramètre de requête?most_disruptive_allowed_action=RESTART
pour indiquer que l'instance peut être redémarrée pendant la mise à jour. Si les propriétés ne nécessitent pas de redémarrage, spécifiez le paramètre de requête?most_disruptive_allowed_action=REFRESH
. Pour savoir quelles propriétés nécessitent un redémarrage, consultez la liste des propriétés pouvant être mises à jour. Incluez le corps complet de la ressource d'instance que vous avez modifiée. Dans l'exemple suivant, le corps remplace le type de machine parn1-standard-2
:PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?most_disruptive_allowed_action=ALLOWED_ACTION { ⋮ "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2", ⋮ }
Remplacez l'élément suivant :
PROJECT_ID
: ID du projet pour cette requête.ZONE
: zone de l'instance.INSTANCE_NAME
: nom de l'instance à exporter.ALLOWED_ACTION
: niveau de perturbation de la mise à jour. SpécifiezRESTART
pour permettre un redémarrage complet de l'instance. SpécifiezREFRESH
pour mettre à jour l'instance uniquement si les propriétés modifiées ne nécessitent pas de redémarrer l'instance.
Si la requête de mise à jour est valide et que les ressources requises sont disponibles, le processus de mise à jour de l'instance commence. Vous pouvez surveiller l'état de cette opération en affichant les journaux d'audit.
Si la mise à jour nécessite un redémarrage et que votre commande autorise l'action RESTART
, l'instance redémarre pour appliquer les modifications.
Étape suivante
- Vérifiez l'état de l'instance.
- Apprenez à réserver des ressources dans une zone spécifique.