Si vous souhaitez créer un grand nombre d'instances de machines virtuelles (VM) identiques et indépendantes les unes des autres, créez des VM de manière groupée à l'aide de Google Cloud CLI ou de l'API Compute Engine. Vous pouvez créer ces VM dans toutes les zones d'une région ou les répartir dans certaines zones.
Pour obtenir plus d'informations et connaître les limites associées, consultez la page À propos de la création groupée de VM. Si vous souhaitez créer des instances avec des GPU associés, consultez plutôt Créer des VM GPU de manière groupée.
Avant de commencer
- Assurez-vous de disposer d'un quota suffisant et des autorisations requises pour les VM et les ressources associées que vous prévoyez de créer.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification permet 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 en sélectionnant l'une des options suivantes :
Select the tab for how you plan to use the samples on this page:
gcloud
-
Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :
gcloud initSi vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
- Set a default region and zone.
REST
Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.
Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :
gcloud initSi vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .
Rôles requis
Pour obtenir les autorisations nécessaires à la création de VM de manière groupée, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.Ce rôle prédéfini contient les autorisations requises pour créer des VM de manière groupée. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour créer des VM de manière groupée :
compute.instances.createsur le projet-
Pour créer la VM à l'aide d'une image personnalisée :
compute.images.useReadOnlysur l'image -
Pour créer la VM à l'aide d'un instantané :
compute.snapshots.useReadOnlysur l'instantané -
Pour créer la VM à l'aide d'un modèle d'instance :
compute.instanceTemplates.useReadOnlysur le modèle d'instance -
Pour spécifier un sous-réseau pour la VM :
compute.subnetworks.usesur le projet ou sur le sous-réseau choisi -
Pour spécifier une adresse IP statique pour la VM :
compute.addresses.usesur le projet -
Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un réseau VPC :
compute.subnetworks.useExternalIpsur le projet ou sur le sous-réseau choisi -
Pour attribuer un ancien réseau à la VM :
compute.networks.usesur le projet -
Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un ancien réseau :
compute.networks.useExternalIpsur le projet -
Pour définir les métadonnées d'instance de VM pour la VM :
compute.instances.setMetadatasur le projet -
Pour définir des tags pour la VM :
compute.instances.setTagssur la VM -
Pour définir des libellés pour la VM :
compute.instances.setLabelssur la VM -
Pour définir un compte de service à utiliser avec la VM :
compute.instances.setServiceAccountsur la VM -
Pour créer un disque pour la VM :
compute.disks.createsur le projet -
Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture :
compute.disks.usesur le disque -
Pour associer un disque existant en mode lecture seule :
compute.disks.useReadOnlysur le disque
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer des VM de manière groupée dans une région
Pour créer des VM de manière groupée dans une région, utilisez gcloud CLI ou l'API Compute Engine.
Si vous spécifiez un type de machine ou la prise en charge de matériel supplémentaire (tel qu'un GPU ou un disque SSD local), Compute Engine place les VM dans une zone de la région compatible avec le type de machine et le matériel supplémentaire.
gcloud
Pour créer des VM de manière groupée dans une région, exécutez la commande
gcloud compute instances bulk createsuivante :gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]Remplacez les éléments suivants :
NAME_PATTERN : modèle de nom des VM. Utilisez une séquence de caractères de hachage (
#) que Compute Engine remplacera par une séquence de nombres. Par exemple, le modèle de nomvm-#génère des VM portant les nomsvm-1etvm-2, etc., jusqu'à ce qu'il atteigne le nombre de VM spécifié par--count, qui doit être inférieur ou égal au nombre de VM autorisé par le modèle de nom.Lors de l'utilisation d'un modèle de nom, Compute Engine tente d'éviter les conflits de noms en vérifiant les noms des VM existantes créées à partir des requêtes précédentes.
PREDEFINED_NAMES : liste des noms prédéfinis des VM à créer. Si vous utilisez cette option et spécifiez
COUNT,COUNTdoit être égal au nombre de noms fournis.REGION : région dans laquelle créer les VM.
COUNT : nombre de VM à créer. Cette valeur doit être inférieure ou égale au nombre de VM autorisées par
NAME_PATTERN. Si vous utilisez--predefined-names, vous n'avez pas besoin de spécifierCOUNT, mais dans ce cas, la valeur doit être égale au nombre de noms fournis.MIN_COUNT : nombre minimal de VM à créer. Le tableau suivant décrit le comportement de la requête en fonction de la manière dont vous définissez cette option :
Valeur Description Non défini La valeur par défaut est COUNT. Si Compute Engine ne peut pas créer le nombre de VM spécifié parCOUNT, la requête échoue et aucune VM n'est créée.1Compute Engine crée autant de VM que possible, jusqu'à COUNT.Supérieur à 1et inférieur àCOUNTCompute Engine crée au moins MIN_COUNTVM et jusqu'àCOUNTVM au maximum. Si lesMIN_COUNTVM ne peuvent pas être créées, la requête échoue et aucune VM n'est créée.LOCATION_POLICY : zones à inclure ou exclure dans une région. Utilisez une liste de paires clé/valeur, avec la zone comme clé et la règle comme valeur. Les valeurs valides pour la règle sont
allow(la valeur par défaut) etdeny. Voici un exemple de valeur pour cette option :--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_DISTRIBUTION_SHAPE : répartition des VM dans les zones spécifiées. Utilisez l'option
--location-policypour spécifier les zones. Le tableau suivant indique les valeurs valides pour cette option :Valeur Description ANY_SINGLE_ZONEApplique le placement de la VM dans une seule zone et donne la priorité à l'utilisation des réservations inutilisées. Utilisez cette option pour éviter toute sortie réseau interzone ou pour réduire la latence du réseau. Il s'agit de la valeur par défaut. BALANCEDTente de répartir uniformément les VM dans toutes les zones de la région. ANYPermet de répartir les VM dans plusieurs zones d'une région. Choisit les zones qui disposent de ressources disponibles et qui optimisent les réservations zonales non utilisées.
REST
Pour créer des VM de manière groupée dans une région, utilisez la méthode
instances.bulkInsertsuivante :POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }Remplacez les éléments suivants :
PROJECT_ID : ID du projet.
REGION : région dans laquelle créer les VM.
NAME_PATTERN : modèle de nom des VM. Indiquez cette valeur ou
perInstanceProperties. Utilisez une séquence de caractères de hachage (#) que Compute Engine remplacera par une séquence de nombres. Par exemple, le modèle de nomvm-#génère des VM portant les nomsvm-1etvm-2, etc., jusqu'à ce qu'il atteigne le nombre de VM spécifié par--count, qui doit être inférieur ou égal au nombre de VM autorisé par le modèle de nom.Lors de l'utilisation d'un modèle de nom, Compute Engine tente d'éviter les conflits de noms en vérifiant les noms des VM existantes créées à partir des requêtes précédentes.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ... : liste des noms prédéfinis des VM à créer. Spécifiez cet élément ou
namePattern. Si vous utilisez cette option et spécifiezCOUNT,COUNTdoit être égal au nombre de noms fournis.COUNT : nombre de VM à créer. Cette valeur doit être inférieure ou égale au nombre de VM autorisées par
NAME_PATTERN. Si vous utilisezperInstanceProperties, vous n'avez pas besoin de spécifierCOUNT, mais dans ce cas, la valeur doit être égale au nombre de noms fournis.MIN_COUNT : nombre minimal de VM à créer. Le tableau suivant décrit le comportement de la requête en fonction de la manière dont vous définissez cette option :
Valeur Description Non défini La valeur par défaut est COUNT. Si Compute Engine ne peut pas créer le nombre de VM spécifié parCOUNT, la requête échoue et aucune VM n'est créée.1Compute Engine crée autant de VM que possible, jusqu'à COUNT.Supérieur à 1et inférieur àCOUNTCompute Engine crée au moins MIN_COUNTVM et jusqu'àCOUNTVM au maximum. Si lesMIN_COUNTVM ne peuvent pas être créées, la requête échoue et aucune VM n'est créée.LOCATION_POLICY : zones à inclure ou exclure dans une région. Utilisez une liste de paires clé/valeur, avec la zone comme clé et la règle comme valeur. Les valeurs valides pour la règle sont
ALLOW(la valeur par défaut) etDENY. Voici un exemple de valeur pour ce champ :"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },TARGET_DISTRIBUTION_SHAPE : répartition des VM dans les zones spécifiées. Utilisez le champ
locationPolicypour spécifier les zones. Le tableau suivant indique les valeurs valides pour ce champ :Valeur Description ANY_SINGLE_ZONEApplique le placement de la VM dans une seule zone et donne la priorité à l'utilisation des réservations inutilisées. Utilisez cette option pour éviter toute sortie réseau interzone ou pour réduire la latence du réseau. Il s'agit de la valeur par défaut. BALANCEDTente de répartir uniformément les VM dans toutes les zones de la région. ANYPermet de répartir les VM dans plusieurs zones d'une région. Choisit les zones qui disposent de ressources disponibles et qui optimisent les réservations zonales non utilisées.
Créer des VM de manière groupée dans une zone
Pour créer des VM de manière groupée dans une zone, utilisez gcloud CLI ou l'API Compute Engine.
gcloud
Pour créer des VM de manière groupée dans une zone spécifique, exécutez la commande
gcloud compute instances bulk createsuivante.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]Remplacez les éléments suivants :
NAME_PATTERN : modèle de nom des VM. Utilisez une séquence de caractères de hachage (
#) que Compute Engine remplacera par une séquence de nombres. Par exemple, le modèle de nomvm-#génère des VM portant les nomsvm-1etvm-2, etc., jusqu'à ce qu'il atteigne le nombre de VM spécifié par--count, qui doit être inférieur ou égal au nombre de VM autorisé par le modèle de nom.Lors de l'utilisation d'un modèle de nom, Compute Engine tente d'éviter les conflits de noms en vérifiant les noms des VM existantes créées à partir des requêtes précédentes.
PREDEFINED_NAMES : liste des noms prédéfinis des VM à créer. Si vous utilisez cette option et spécifiez
COUNT,COUNTdoit être égal au nombre de noms fournis.ZONE : zone dans laquelle créer les VM.
COUNT : nombre de VM à créer. Cette valeur doit être inférieure ou égale au nombre de VM autorisées par
NAME_PATTERN. Si vous utilisez--predefined-names, vous n'avez pas besoin de spécifierCOUNT, mais dans ce cas, la valeur doit être égale au nombre de noms fournis.MIN_COUNT : nombre minimal de VM à créer. Le tableau suivant décrit le comportement de la requête en fonction de la manière dont vous définissez cette option :
Valeur Description Non défini La valeur par défaut est COUNT. Si Compute Engine ne peut pas créer le nombre de VM spécifié parCOUNT, la requête échoue et aucune VM n'est créée.1Compute Engine crée autant de VM que possible, jusqu'à COUNT.Supérieur à 1et inférieur àCOUNTCompute Engine crée au moins MIN_COUNTVM et jusqu'àCOUNTVM au maximum. Si lesMIN_COUNTVM ne peuvent pas être créées, la requête échoue et aucune VM n'est créée.
REST
Pour créer des VM de manière groupée dans une zone, utilisez la méthode
instances.bulkInsertsuivante.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }Remplacez les éléments suivants :
PROJECT_ID : ID du projet.
ZONE : zone dans laquelle créer les VM.
NAME_PATTERN : modèle de nom des VM. Indiquez cette valeur ou
perInstanceProperties. Utilisez une séquence de caractères de hachage (#) que Compute Engine remplacera par une séquence de nombres. Par exemple, le modèle de nomvm-#génère des VM portant les nomsvm-1etvm-2, etc., jusqu'à ce qu'il atteigne le nombre de VM spécifié par--count, qui doit être inférieur ou égal au nombre de VM autorisé par le modèle de nom.Lors de l'utilisation d'un modèle de nom, Compute Engine tente d'éviter les conflits de noms en vérifiant les noms des VM existantes créées à partir des requêtes précédentes.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ... : liste des noms prédéfinis des VM à créer. Spécifiez cet élément ou
namePattern. Si vous utilisez cette option et spécifiezCOUNT,COUNTdoit être égal au nombre de noms fournis.COUNT : nombre de VM à créer. Cette valeur doit être inférieure ou égale au nombre de VM autorisées par
NAME_PATTERN. Si vous utilisezperInstanceProperties, vous n'avez pas besoin de spécifierCOUNT, mais dans ce cas, la valeur doit être égale au nombre de noms fournis.MIN_COUNT : nombre minimal de VM à créer. Le tableau suivant décrit le comportement de la requête en fonction de la manière dont vous définissez cette option :
Valeur Description Non défini La valeur par défaut est COUNT. Si Compute Engine ne peut pas créer le nombre de VM spécifié parCOUNT, la requête échoue et aucune VM n'est créée.1Compute Engine crée autant de VM que possible, jusqu'à COUNT.Supérieur à 1et inférieur àCOUNTCompute Engine crée au moins MIN_COUNTVM et jusqu'àCOUNTVM au maximum. Si lesMIN_COUNTVM ne peuvent pas être créées, la requête échoue et aucune VM n'est créée.
Créer des VM avec des noms d'hôte personnalisés de façon groupée
Vous pouvez créer des VM avec des noms d'hôte personnalisés de façon groupée dans une région ou dans une zone à l'aide de gcloud CLI ou de l'API Compute Engine.
L'enregistrement DNS de votre nom d'hôte personnalisé doit être configuré manuellement. Pour en savoir plus, consultez la section Limites.
Si vous ne spécifiez pas de nom d'hôte, Compute Engine définit le nom d'hôte des VM comme suit :
VM_NAME.c.PROJECT_ID.internallorsque vous activez le DNS globalVM_NAME.ZONE.c.PROJECT_ID.internallorsque vous activez le DNS zonal
Pour en savoir plus, consultez la section Noms DNS internes.
gcloud
Pour créer des VM avec des noms d'hôte personnalisés dans une région spécifique de façon groupée, utilisez la commande
gcloud beta compute instances bulk createsuivante.gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]Remplacez les éléments suivants :
NAME_PATTERN : modèle de nom des VM. Utilisez une séquence de caractères de hachage (
#) que Compute Engine remplacera par une séquence de nombres. Par exemple, le modèle de nomvm-#génère des VM portant les nomsvm-1etvm-2, etc., jusqu'à ce qu'il atteigne le nombre de VM spécifié par--count, qui doit être inférieur ou égal au nombre de VM autorisé par le modèle de nom.Lors de l'utilisation d'un modèle de nom, Compute Engine tente d'éviter les conflits de noms en vérifiant les noms des VM existantes créées à partir des requêtes précédentes.
PREDEFINED_NAMES : liste des noms prédéfinis des VM à créer. Si vous utilisez cette option et spécifiez
COUNT,COUNTdoit être égal au nombre de noms fournis.[VM_NAME=HOSTNAME, …] : liste de paires clé/valeur de noms prédéfinis pour les VM et les noms d'hôte de domaine complets que vous souhaitez attribuer aux VM. Les noms d'hôte personnalisés doivent être conformes aux exigences de la norme RFC 1035 relative aux noms d'hôte valides.
REGION : zone dans laquelle créer les VM.
COUNT : nombre de VM à créer. Cette valeur doit être inférieure ou égale au nombre de VM autorisées par
NAME_PATTERN. Si vous utilisez--predefined-names, vous n'avez pas besoin de spécifierCOUNT, mais dans ce cas, la valeur doit être égale au nombre de noms fournis.MIN_COUNT : nombre minimal de VM à créer. Le tableau suivant décrit le comportement de la requête en fonction de la manière dont vous définissez cette option :
Valeur Description Non défini La valeur par défaut est COUNT. Si Compute Engine ne peut pas créer le nombre de VM spécifié parCOUNT, la requête échoue et aucune VM n'est créée.1Compute Engine crée autant de VM que possible, jusqu'à COUNT.Supérieur à 1et inférieur àCOUNTCompute Engine crée au moins MIN_COUNTVM et jusqu'àCOUNTVM au maximum. Si lesMIN_COUNTVM ne peuvent pas être créées, la requête échoue et aucune VM n'est créée.LOCATION_POLICY : zones à inclure ou exclure dans une région. Utilisez une liste de paires clé/valeur, avec la zone comme clé et la règle comme valeur. Les valeurs valides pour la règle sont
ALLOW(la valeur par défaut) etDENY. Voici un exemple de valeur pour ce champ :"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },TARGET_DISTRIBUTION_SHAPE : répartition des VM dans les zones spécifiées. Utilisez le champ
locationPolicypour spécifier les zones. Le tableau suivant indique les valeurs valides pour ce champ :Valeur Description ANY_SINGLE_ZONEApplique le placement de la VM dans une seule zone et donne la priorité à l'utilisation des réservations inutilisées. Utilisez cette option pour éviter toute sortie réseau interzone ou pour réduire la latence du réseau. Il s'agit de la valeur par défaut. BALANCEDTente de répartir uniformément les VM dans toutes les zones de la région. ANYPermet de répartir les VM dans plusieurs zones d'une région. Choisit les zones qui disposent de ressources disponibles et qui optimisent les réservations zonales non utilisées.
REST
Pour créer des VM avec des noms d'hôte personnalisés dans une région spécifique de façon groupée, utilisez la méthode
instances.bulkInsertsuivante :POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }Remplacez les éléments suivants :
PROJECT_ID : ID du projet.
REGION : région dans laquelle créer les VM.
NAME_PATTERN : modèle de nom des VM. Indiquez cette valeur ou
perInstanceProperties. Utilisez une séquence de caractères de hachage (#) que Compute Engine remplacera par une séquence de nombres. Par exemple, le modèle de nomvm-#génère des VM portant les nomsvm-1etvm-2, etc., jusqu'à ce qu'il atteigne le nombre de VM spécifié par--count, qui doit être inférieur ou égal au nombre de VM autorisé par le modèle de nom.Lors de l'utilisation d'un modèle de nom, Compute Engine tente d'éviter les conflits de noms en vérifiant les noms des VM existantes créées à partir des requêtes précédentes.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ... : liste des noms prédéfinis des VM à créer. Spécifiez cet élément ou
namePattern. Si vous utilisez cette option et spécifiezCOUNT,COUNTdoit être égal au nombre de noms fournis.HOSTNAME_1, HOSTNAME_2, … : noms d'hôte de domaine complets que vous souhaitez attribuer aux VM. Les noms d'hôte personnalisés doivent être conformes aux exigences de la norme RFC 1035 relative aux noms d'hôte valides.
Par exemple, pour créer deux VM
vm-1etvm-2avec les noms d'hôte personnalisésmy-host1234.example.comettest.example.com, spécifiez respectivement la propriétéhostnamedansperInstanceProperties, comme suit :{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ...} },COUNT : nombre de VM à créer. Cette valeur doit être inférieure ou égale au nombre de VM autorisées par
NAME_PATTERN. Si vous utilisezperInstanceProperties, vous n'avez pas besoin de spécifierCOUNT, mais dans ce cas, la valeur doit être égale au nombre de noms fournis.MIN_COUNT : nombre minimal de VM à créer. Le tableau suivant décrit le comportement de la requête en fonction de la manière dont vous définissez cette option :
Valeur Description Non défini La valeur par défaut est COUNT. Si Compute Engine ne peut pas créer le nombre de VM spécifié parCOUNT, la requête échoue et aucune VM n'est créée.1Compute Engine crée autant de VM que possible, jusqu'à COUNT.Supérieur à 1et inférieur àCOUNTCompute Engine crée au moins MIN_COUNTVM et jusqu'àCOUNTVM au maximum. Si lesMIN_COUNTVM ne peuvent pas être créées, la requête échoue et aucune VM n'est créée.LOCATION_POLICY : zones à inclure ou exclure dans une région. Utilisez une liste de paires clé/valeur, avec la zone comme clé et la règle comme valeur. Les valeurs valides pour la règle sont
ALLOW(la valeur par défaut) etDENY. Voici un exemple de valeur pour ce champ :"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },TARGET_DISTRIBUTION_SHAPE : répartition des VM dans les zones spécifiées. Utilisez le champ
locationPolicypour spécifier les zones. Le tableau suivant indique les valeurs valides pour ce champ :Valeur Description ANY_SINGLE_ZONEApplique le placement de la VM dans une seule zone et donne la priorité à l'utilisation des réservations inutilisées. Utilisez cette option pour éviter toute sortie réseau interzone ou pour réduire la latence du réseau. Il s'agit de la valeur par défaut. BALANCEDTente de répartir uniformément les VM dans toutes les zones de la région. ANYPermet de répartir les VM dans plusieurs zones d'une région. Choisit les zones qui disposent de ressources disponibles et qui optimisent les réservations zonales non utilisées.
Vérifier l'état d'une requête de création de VM de manière groupée
Lorsque vous créez une requête de mutation, Compute Engine renvoie une ressource
operationque vous pouvez interroger pour obtenir l'état de l'opération. Pour en savoir plus, consultez la page Gérer les réponses de l'API.Pour obtenir l'état d'une requête d'insertion groupée, envoyez une requête HTTP
GETà la ressourceoperation:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Pour obtenir l'état d'une requête d'insertion groupée régionale, envoyez la requête suivante :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
Remplacez les éléments suivants :
PROJECT_ID: ID du projet dans lequel vous créez des VMREGION: région dans laquelle vous créez des VMZONE: zone dans laquelle vous créez des VMOPERATION_ID: ID de l'opération d'insertion groupée
L'objet
instancesBulkInsertOperationMetadatade la réponse contient des informations sur l'opération par zone dans le champperLocationStatus. Pour chaque zone incluse dans la demande de création groupée,perLocationStatuscontient les champs suivants :status: l'état est l'un des suivants :CREATING: la création de la VM est en cours dans la zone.ROLLING_BACK: la requête a échoué dans la zone et fait l'objet d'un rollback.DONE: la création ou le rollback de la VM a bien été effectué dans la zone.
targetVmCount: nombre de VM que Compute Engine tente de créer dans la zone. Compute Engine détermine ce nombre après les vérifications initiales, et il ne change pas pendant l'opération. Lorsque vous vérifiez l'état de l'opération, ce champ est toujours présent pour chaque zone.createdVmCount: nombre de VM déjà créées dans la zone. Cette valeur ne dépasse pastargetVmCountpour une zone donnée.failedToCreateVmCount: nombre de VM dont la création a échoué dans la zone.deletedVmCount: nombre de VM supprimées dans la zone dans le cadre du rollback d'une opération ayant échoué.
Le champ
progressdans la réponse représente le pourcentage d'achèvement de l'opération.L'état de l'opération d'insertion groupée est défini sur
RUNNINGjusqu'à ce que Compute Engine crée au moins le nombre minimal de VM et ne crée plus de VM ni n'effectue de rollback de la requête.Lorsque l'opération d'insertion groupée est en cours, vous devriez obtenir une réponse semblable à celle-ci :
{ "kind" : "compute#operation", "id": "4653028658507445766", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationType": "bulkInsert", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project" "targetId": 4653028658507445766, "status": "RUNNING", "progress": 2, "user": "example@google.com", "insertTime": "2023-04-23T09:57:13.474-07:00", "startTime": "2023-04-23T09:57:13.474-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "metadata": "instances_bulk_insert_operation_metadata": { "per_location_status": { "zones/us-central1-a": { "status": "CREATING", "targetVmCount": 50, "createdVmCount": 1 } } } }Dans cet exemple, une instance a été créée avec succès et l'opération est terminée à 2 %.
L'opération renvoie l'état
DONElorsque Compute Engine crée au moins le nombre minimal de VM spécifié parminCountou lorsque Compute Engine termine le rollback de la requête. Une fois le nombre de VM demandé créé, vous obtenez une réponse semblable à celle-ci :{ "endTime": "2023-04-23T09:58:13.474-07:00", "id": "5053101474378293244", "insertTime": "2023-04-23T09:57:13.474-07:00", "instancesBulkInsertOperationMetadata": { "perLocationStatus": { "zones/us-central1-a": { "status": "DONE", "createdVmCount": 50, "targetVmCount": 50 } } }, "kind": "compute#operation", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "operationType": "bulkInsert", "progress": 100, "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "startTime": "2023-09-11T16:21:55.629-07:00", "status": "DONE", "targetId": "625521788110", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project", "user": "example@google.com", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a" }Pour en savoir plus, consultez la documentation de l'objet
instancesBulkInsertOperationMetadata.Vérifier l'état d'une seule VM
Pour vérifier l'état d'une seule VM créée à partir d'une requête de création groupée de VM, utilisez gcloud CLI ou l'API Compute Engine.
gcloud
Obtenez la valeur de la propriété
operationGroupIdà partir de la ressourceOperationrenvoyée par la requête.Utilisez la propriété
operationGroupIdcomme un filtre avec la commandegcloud compute operations listpour rechercher les VM associées à la requête régionale ou zonale dans l'ensemble des opérations et des zones du projet :gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
Obtenez les autres propriétés de la VM en effectuant l'une des opérations suivantes :
Dans la liste des opérations,
targetLinkreprésente le chemin d'accès de la VM. Exécutez la commandegcloud compute instances describeen indiquant ce chemin d'accès comme nom de la VM pour obtenir les propriétés de la VM :gcloud compute instances describe VM_NAME
Exécutez la commande
gcloud compute instances listavec un filtre incluant les noms des VM de la liste des opérations :gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Exécutez la commande
gcloud compute instances listpour obtenir les propriétés des VM situées dans l'ensemble des zones et des régions, et filtrez les résultats en fonction d'un libellé propre aux instances ou de leur nom :gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
REST
Obtenez la valeur de la propriété
operationGroupIdà partir de la ressourceOperationrenvoyée par la requête.Utilisez la propriété
operationGroupIdpour obtenir la liste des opérations de VM associées à la requête régionale ou zonale :Si vous avez envoyé une requête régionale, pour effectuer une recherche sur l'ensemble des opérations et des zones du projet, utilisez la méthode
globalOperations.aggregatedListet incluez la propriétéoperationGroupIden tant que filtre :GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
Si vous avez envoyé une requête zonale, pour répertorier les opérations dans cette zone, utilisez la méthode
zoneOperations.getet incluez la propriétéoperationGroupIddans la corps de la requête :GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
Obtenez les autres propriétés de la VM en effectuant l'une des opérations suivantes :
Dans la liste des opérations,
targetLinkreprésente le chemin d'accès de la VM. Utilisez la méthodeinstances.geten indiquant ce chemin d'accès comme nom de la VM pour obtenir toutes les propriétés de la VM :GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
Utilisez la méthode
instances.getavec un filtre incluant les noms des VM de la liste des opérations :GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Utilisez la méthode
instances.aggregatedListpour obtenir les propriétés des VM situées dans l'ensemble des zones et des régions, et filtrez les résultats en fonction d'un libellé propre aux instances ou de leur nom :GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Exemples de pseudo-code
Les exemples de pseudo-code suivants montrent comment personnaliser les requêtes de création de VM de manière groupée.
Créer des VM de manière groupée dans une région à partir d'un ensemble de régions
Le pseudo-code suivant décrit comment créer 1 000 VM dans une région à partir d'un ensemble de régions. Lorsque vous tentez de créer des VM de manière groupée dans une région à partir d'un ensemble de régions, la requête commence par vérifier la capacité. Si la capacité est insuffisante, la requête échoue immédiatement et recommence avec la région suivante de l'ensemble.
Spécifiez le nombre de VM à créer dans une zone.
nTarget = 1000Indiquez les régions dans lesquelles créer les VM.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]Effectuez des itérations via les régions et créez les VM dans chaque région jusqu'à ce qu'elles aboutissent.
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
Créer des VM de manière groupée dans une zone
sur un type de machine
Le pseudo-code suivant décrit comment créer plusieurs VM dans une zone sur un type de machine spécifié. Lorsque vous tentez de créer des VM de manière groupée sur le même type de machine, la requête vérifie d'abord la disponibilité de ces types de machines. Si le type de machine disponible n'est pas suffisant, la requête échoue immédiatement et recommence avec le type de machine suivant.
Spécifiez le nombre de VM à créer et la région dans laquelle les créer.
nTarget = 1000 region = "us-central1"Spécifiez les familles de machines sur lesquelles créer les VM.
acceptableMachineFamilies = ["n2","c2","e2","n1"]Effectuez des itérations via les types de machines et créez les VM sur ce type de machine jusqu'à ce qu'elles aboutissent.
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
Créer plus de 5 000 VM dans une zone
Lorsque vous créez des VM de manière groupée, vous ne pouvez créer que 5 000 VM par requête. Le pseudo-code suivant décrit comment créer plus de 5 000 VM dans une zone en envoyant plusieurs requêtes.
Indiquez le nombre de VM à créer, un compteur pour effectuer le suivi du nombre total de VM créées, la région dans laquelle créer les VM, et une variable pour stocker la zone dans laquelle Compute Engine crée les VM.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""Envoyez une requête initiale pour créer 5 000 VM, enregistrez la zone renvoyée par la requête, puis mettez à jour le compteur du nombre de VM créées.
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs createdContinuez à envoyer des requêtes pour créer jusqu'à 5 000 VM à la fois dans la zone jusqu'à ce que Compute Engine crée le nombre de VM spécifié.
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
Créer des VM de manière groupée et afficher leur état
La procédure suivante montre comment créer un groupe de VM portant des noms prédéfinis, puis afficher leur état :
Indiquez le nombre de VM à créer, la zone dans laquelle les créer, ainsi qu'une structure de données dans laquelle stocker les noms.
nTarget = 1000 targetZone = "us-central-1a" names = []Générez les noms modélisés des VM et ajoutez-les à la structure de données.
for n in range(0, 1000): names.push("instance-%d".format(n))Créez les VM et utilisez
perInstancePropertiespour spécifier les noms.call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)Pour obtenir des informations sur les VM, utilisez la méthode
instances.listavec un filtre portant sur les noms des VM dont vous souhaitez connaître les détails.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
Étape suivante
Après avoir créé des VM de manière groupée, effectuez l'une des opérations suivantes, ou les deux, pour simplifier la gestion de ces VM :
Ajoutez les VM à un groupe d'instances non géré. L'ajout de VM à un groupe d'instances non géré vous permet d'utiliser Cloud Monitoring. Les groupes d'instances non gérés ne se chargent ni de la gestion du cycle de vie, ni de l'équilibrage de charge des VM.
Utilisez des libellés. Les libellés permettent d'organiser les ressources à l'aide de paires clé/valeur.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/10/18 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/10/18 (UTC)."],[],[]] -