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.
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 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 :
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
-
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 section Gérer les accès.
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.create
sur le projet-
Pour créer la VM à l'aide d'une image personnalisée :
compute.images.useReadOnly
sur l'image -
Pour créer la VM à l'aide d'un instantané :
compute.snapshots.useReadOnly
sur l'instantané -
Pour créer la VM à l'aide d'un modèle d'instance :
compute.instanceTemplates.useReadOnly
sur le modèle d'instance -
Pour attribuer un ancien réseau à la VM :
compute.networks.use
sur le projet -
Pour spécifier une adresse IP statique pour la VM :
compute.addresses.use
sur le projet -
Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un ancien réseau :
compute.networks.useExternalIp
sur le projet -
Pour spécifier un sous-réseau pour la VM :
compute.subnetworks.use
sur le projet ou sur le sous-réseau choisi -
Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un réseau VPC :
compute.subnetworks.useExternalIp
sur le projet ou sur le sous-réseau choisi -
Pour définir les métadonnées d'instance de VM pour la VM :
compute.instances.setMetadata
sur le projet -
Pour définir des tags pour la VM :
compute.instances.setTags
sur la VM -
Pour définir des libellés pour la VM :
compute.instances.setLabels
sur la VM -
Pour définir un compte de service à utiliser avec la VM :
compute.instances.setServiceAccount
sur la VM -
Pour créer un disque pour la VM :
compute.disks.create
sur le projet -
Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture :
compute.disks.use
sur le disque -
Pour associer un disque existant en mode lecture seule :
compute.disks.useReadOnly
sur 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 create
suivante :
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_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-1
,vm-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
,COUNT
doit ê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éfinie 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.1
Compute Engine crée autant de VM que possible, jusqu'à COUNT
.Supérieur à 1
et inférieur àCOUNT
Compute Engine crée au moins MIN_COUNT
VM et jusqu'àCOUNT
VM au maximum. Si lesMIN_COUNT
VM 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_SHAPE : répartition des VM dans les zones spécifiées. Utilisez l'option
--location-policy
pour spécifier les zones. Le tableau suivant indique les valeurs valides pour cette option :Valeur Description ANY_SINGLE_ZONE
Applique 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. BALANCED
Tente de répartir uniformément les VM dans toutes les zones de la région. ANY
Permet 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.bulkInsert
suivante :
POST https://www.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_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-1
,vm-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
,COUNT
doit ê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éfinie 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.1
Compute Engine crée autant de VM que possible, jusqu'à COUNT
.Supérieur à 1
et inférieur àCOUNT
Compute Engine crée au moins MIN_COUNT
VM et jusqu'àCOUNT
VM au maximum. Si lesMIN_COUNT
VM 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_SHAPE : répartition des VM dans les zones spécifiées. Utilisez le champ
locationPolicy
pour spécifier les zones. Le tableau suivant indique les valeurs valides pour ce champ :Valeur Description ANY_SINGLE_ZONE
Applique 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. BALANCED
Tente de répartir uniformément les VM dans toutes les zones de la région. ANY
Permet 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 create
suivante.
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-1
,vm-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
,COUNT
doit ê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éfinie 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.1
Compute Engine crée autant de VM que possible, jusqu'à COUNT
.Supérieur à 1
et inférieur àCOUNT
Compute Engine crée au moins MIN_COUNT
VM et jusqu'àCOUNT
VM au maximum. Si lesMIN_COUNT
VM 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.bulkInsert
suivante.
POST https://www.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-1
,vm-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
,COUNT
doit ê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éfinie 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.1
Compute Engine crée autant de VM que possible, jusqu'à COUNT
.Supérieur à 1
et inférieur àCOUNT
Compute Engine crée au moins MIN_COUNT
VM et jusqu'àCOUNT
VM au maximum. Si lesMIN_COUNT
VM 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.internal
lorsque vous activez le DNS globalVM_NAME.ZONE.c.PROJECT_ID.internal
lorsque 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 create
suivante.
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_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-1
,vm-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
,COUNT
doit ê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éfinie 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.1
Compute Engine crée autant de VM que possible, jusqu'à COUNT
.Supérieur à 1
et inférieur àCOUNT
Compute Engine crée au moins MIN_COUNT
VM et jusqu'àCOUNT
VM au maximum. Si lesMIN_COUNT
VM 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_SHAPE : répartition des VM dans les zones spécifiées. Utilisez le champ
locationPolicy
pour spécifier les zones. Le tableau suivant indique les valeurs valides pour ce champ :Valeur Description ANY_SINGLE_ZONE
Applique 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. BALANCED
Tente de répartir uniformément les VM dans toutes les zones de la région. ANY
Permet 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.bulkInsert
suivante :
POST https://www.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_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-1
,vm-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
,COUNT
doit ê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-1
etvm-2
avec les noms d'hôte personnalisésmy-host1234.example.com
ettest.example.com
, spécifiez respectivement la propriétéhostname
dansperInstanceProperties
, 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éfinie 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.1
Compute Engine crée autant de VM que possible, jusqu'à COUNT
.Supérieur à 1
et inférieur àCOUNT
Compute Engine crée au moins MIN_COUNT
VM et jusqu'àCOUNT
VM au maximum. Si lesMIN_COUNT
VM 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_SHAPE : répartition des VM dans les zones spécifiées. Utilisez le champ
locationPolicy
pour spécifier les zones. Le tableau suivant indique les valeurs valides pour ce champ :Valeur Description ANY_SINGLE_ZONE
Applique 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. BALANCED
Tente de répartir uniformément les VM dans toutes les zones de la région. ANY
Permet 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 operation
que 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 ressource operation
:
GET 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 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 instancesBulkInsertOperationMetadata
dans la réponse contient les détails suivants de l'opération :
status
: l'état est l'un des suivants :CREATING
: la création de la VM est en coursROLLING_BACK
: la requête a échoué et fait l'objet d'un rollbackDONE
: la création ou le rollback de la VM a bien été effectué
targetVmCount
: nombre de VM à créer dans la zone spécifiéecreatedVmCount
: nombre de VM déjà créées dans la zone spécifiéefailedToCreateVmCount
: nombre de VM dont la création a échoué dans la zone spécifiéedeletedVmCount
: nombre de VM supprimées dans le cadre du rollback d'une opération ayant échoué
Le champ progress
dans 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 RUNNING
jusqu'à 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://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://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 DONE
lorsque Compute Engine crée au moins le nombre minimal de VM spécifié par minCount
ou 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 ressourceOperation
renvoyée par la requête.Utilisez la propriété
operationGroupId
comme un filtre avec la commandegcloud compute operations list
pour 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,
targetLink
représente le chemin d'accès de la VM. Exécutez la commandegcloud compute instances describe
en 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 list
avec 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 list
pour 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 ressourceOperation
renvoyée par la requête.Utilisez la propriété
operationGroupId
pour 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.aggregatedList
et incluez la propriétéoperationGroupId
en 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.get
et incluez la propriétéoperationGroupId
dans 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,
targetLink
représente le chemin d'accès de la VM. Utilisez la méthodeinstances.get
en 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.get
avec 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.aggregatedList
pour 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 = 1000
Indiquez 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 created
Continuez à 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
perInstanceProperties
pour 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.list
avec 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.