Quando você quiser criar um grande número de instâncias de máquinas virtuais (VM) idênticas e independentes umas das outras, crie VMs em massa usando a CLI do Google Cloud ou a API Compute Engine. Você pode criar essas VMs em todas as zonas de uma região ou distribuídas em determinadas zonas.
Para obter mais detalhes e limitações associadas, consulte Sobre a criação em massa de VMs . Se você quiser criar instâncias com GPUs anexadas, consulte Criar VMs de GPU em massa .
Antes de começar
- Para VMs e quaisquer recursos relacionados que você planeja criar, certifique-se de ter cota suficiente e as permissões necessárias .
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
compute.instances.create
no projeto - Para usar uma imagem personalizada para criar a VM:
compute.images.useReadOnly
na imagem - Para usar um instantâneo para criar a VM:
compute.snapshots.useReadOnly
no instantâneo - Para usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnly
no modelo de instância - Para atribuir uma rede legada à VM:
compute.networks.use
no projeto - Para especificar um endereço IP estático para a VM:
compute.addresses.use
no projeto - Para atribuir um endereço IP externo à VM ao usar uma rede legada:
compute.networks.useExternalIp
no projeto - Para especificar uma sub-rede para sua VM:
compute.subnetworks.use
no projeto ou na sub-rede escolhida - Para atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida - Para definir metadados de instância de VM para a VM:
compute.instances.setMetadata
no projeto - Para definir tags para a VM:
compute.instances.setTags
na VM - Para definir rótulos para a VM:
compute.instances.setLabels
na VM - Para definir uma conta de serviço para a VM usar:
compute.instances.setServiceAccount
na VM - Para criar um novo disco para a VM:
compute.disks.create
no projeto - Para anexar um disco existente no modo somente leitura ou leitura-gravação:
compute.disks.use
no disco - Para anexar um disco existente no modo somente leitura:
compute.disks.useReadOnly
no disco NAME_PATTERN : o padrão de nome para as VMs. Use uma sequência de caracteres hash (
#
) para o Compute Engine substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomes comovm-1
evm-2
, até o número de VMs especificado por--count
, que deve ser menor ou igual ao número de VMs que o padrão de nome permite.Ao usar um padrão de nome, o Compute Engine tenta evitar conflitos de nome verificando os nomes das VMs existentes criadas a partir de solicitações anteriores.
PREDEFINED_NAMES : uma lista de nomes predefinidos para as VMs criarem. Se estiver usando esse sinalizador e especificando
COUNT
,COUNT
deverá ser igual ao número de nomes fornecidos.REGION : a região na qual criar as VMs.
COUNT : o número de VMs a serem criadas. Deve ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usando--predefined-names
, você não precisa especificarCOUNT
, mas se o fizer, deverá ser igual ao número de nomes fornecidos.MIN_COUNT : o número mínimo de VMs a serem criadas. A tabela a seguir descreve o comportamento da solicitação dependendo de como você define esse sinalizador:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. SeMIN_COUNT
VMs não puderem ser criadas, a solicitação falhará e nenhuma VM será criada.LOCATION_POLICY : as zonas a serem incluídas ou excluídas em uma região. Use uma lista de pares chave-valor, com a zona como chave e a política como valor. Os valores válidos para a política são
allow
, que é o padrão, edeny
. Veja a seguir um valor de exemplo para esse sinalizador:--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_DISTRIBUTION_SHAPE : a distribuição das VMs nas zonas especificadas. Use o sinalizador
--location-policy
para especificar as zonas. A tabela a seguir mostra os valores válidos para esse sinalizador:Valor Descrição ANY_SINGLE_ZONE
Aplica a colocação de VM em uma única zona e prioriza a utilização de reservas não utilizadas. Use isto para evitar saída de rede entre zonas ou para reduzir a latência da rede. Este é o valor padrão. BALANCED
Tentativas de distribuir VMs uniformemente em todas as zonas da região. ANY
Permite a distribuição de VMs em diversas zonas de uma região. Escolhe zonas que possuem recursos disponíveis e que maximizam as reservas zonais não utilizadas. PROJECT_ID : o ID do projeto.
REGION : a região na qual criar as VMs.
NAME_PATTERN : o padrão de nome para as VMs. Especifique isto ou
perInstanceProperties
. Use uma sequência de caracteres hash (#
) para o Compute Engine substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomes comovm-1
evm-2
, até o número de VMs especificado por--count
, que deve ser menor ou igual ao número de VMs que o padrão de nome permite.Ao usar um padrão de nome, o Compute Engine tenta evitar conflitos de nome verificando os nomes das VMs existentes criadas a partir de solicitações anteriores.
PREDEFINED_NAME_1 , PREDEFINED_NAME_2 , ...: uma lista de nomes predefinidos para as VMs criarem. Especifique this ou
namePattern
. Se estiver usando esse sinalizador e especificandoCOUNT
,COUNT
deverá ser igual ao número de nomes fornecidos.COUNT : o número de VMs a serem criadas. Deve ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usandoperInstanceProperties
, você não precisa especificarCOUNT
, mas se o fizer, deverá ser igual ao número de nomes fornecidos.MIN_COUNT : o número mínimo de VMs a serem criadas. A tabela a seguir descreve o comportamento da solicitação dependendo de como você define esse sinalizador:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. SeMIN_COUNT
VMs não puderem ser criadas, a solicitação falhará e nenhuma VM será criada.LOCATION_POLICY : as zonas a serem incluídas ou excluídas em uma região. Use uma lista de pares chave-valor, com a zona como chave e a política como valor. Os valores válidos para a política são
ALLOW
, que é o padrão, eDENY
. Veja a seguir um valor de exemplo para este campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE : a distribuição de VMs nas zonas especificadas. Use o campo
locationPolicy
para especificar as zonas. A tabela a seguir mostra os valores válidos para este campo:Valor Descrição ANY_SINGLE_ZONE
Aplica a colocação de VM em uma única zona e prioriza a utilização de reservas não utilizadas. Use isto para evitar saída de rede entre zonas ou para reduzir a latência da rede. Este é o valor padrão. BALANCED
Tentativas de distribuir VMs uniformemente em todas as zonas da região. ANY
Permite a distribuição de VMs em diversas zonas de uma região. Escolhe zonas que possuem recursos disponíveis e que maximizam as reservas zonais não utilizadas. NAME_PATTERN : o padrão de nome para as VMs. Use uma sequência de caracteres hash (
#
) para o Compute Engine substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomes comovm-1
evm-2
, até o número de VMs especificado por--count
, que deve ser menor ou igual ao número de VMs que o padrão de nome permite.Ao usar um padrão de nome, o Compute Engine tenta evitar conflitos de nome verificando os nomes das VMs existentes criadas a partir de solicitações anteriores.
PREDEFINED_NAMES : uma lista de nomes predefinidos para as VMs criarem. Se estiver usando esse sinalizador e especificando
COUNT
,COUNT
deverá ser igual ao número de nomes fornecidos.ZONE : a zona na qual criar as VMs.
COUNT : o número de VMs a serem criadas. Deve ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usando--predefined-names
, você não precisa especificarCOUNT
, mas se o fizer, deverá ser igual ao número de nomes fornecidos.MIN_COUNT : o número mínimo de VMs a serem criadas. A tabela a seguir descreve o comportamento da solicitação dependendo de como você define esse sinalizador:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. SeMIN_COUNT
VMs não puderem ser criadas, a solicitação falhará e nenhuma VM será criada.PROJECT_ID : o ID do projeto.
ZONE : a zona na qual criar as VMs.
NAME_PATTERN : o padrão de nome para as VMs. Especifique isto ou
perInstanceProperties
. Use uma sequência de caracteres hash (#
) para o Compute Engine substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomes comovm-1
evm-2
, até o número de VMs especificado por--count
, que deve ser menor ou igual ao número de VMs que o padrão de nome permite.Ao usar um padrão de nome, o Compute Engine tenta evitar conflitos de nome verificando os nomes das VMs existentes criadas a partir de solicitações anteriores.
PREDEFINED_NAME_1 , PREDEFINED_NAME_2 , ...: uma lista de nomes predefinidos para as VMs criarem. Especifique this ou
namePattern
. Se estiver usando esse sinalizador e especificandoCOUNT
,COUNT
deverá ser igual ao número de nomes fornecidos.COUNT : o número de VMs a serem criadas. Deve ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usandoperInstanceProperties
, você não precisa especificarCOUNT
, mas se o fizer, deverá ser igual ao número de nomes fornecidos.MIN_COUNT : o número mínimo de VMs a serem criadas. A tabela a seguir descreve o comportamento da solicitação dependendo de como você define esse sinalizador:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. SeMIN_COUNT
VMs não puderem ser criadas, a solicitação falhará e nenhuma VM será criada.-
VM_NAME .c. PROJECT_ID .internal
quando você habilita o DNS global -
VM_NAME . ZONE .c. PROJECT_ID .internal
quando você ativa o DNS zonal NAME_PATTERN : o padrão de nome para as VMs. Use uma sequência de caracteres hash (
#
) para o Compute Engine substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomes comovm-1
evm-2
, até o número de VMs especificado por--count
, que deve ser menor ou igual ao número de VMs que o padrão de nome permite.Ao usar um padrão de nome, o Compute Engine tenta evitar conflitos de nome verificando os nomes das VMs existentes criadas a partir de solicitações anteriores.
PREDEFINED_NAMES : uma lista de nomes predefinidos para as VMs criarem. Se estiver usando esse sinalizador e especificando
COUNT
,COUNT
deverá ser igual ao número de nomes fornecidos.[ VM_NAME = HOSTNAME , ...]: uma lista de pares de valores-chave de nomes predefinidos para as VMs e nomes de host de domínio totalmente qualificados que você deseja atribuir às VMs. Os nomes de host personalizados devem estar em conformidade com os requisitos da RFC 1035 para nomes de host válidos.
REGION : a zona na qual criar as VMs.
COUNT : o número de VMs a serem criadas. Deve ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usando--predefined-names
, você não precisa especificarCOUNT
, mas se o fizer, deverá ser igual ao número de nomes fornecidos.MIN_COUNT : o número mínimo de VMs a serem criadas. A tabela a seguir descreve o comportamento da solicitação dependendo de como você define esse sinalizador:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. SeMIN_COUNT
VMs não puderem ser criadas, a solicitação falhará e nenhuma VM será criada.LOCATION_POLICY : as zonas a serem incluídas ou excluídas em uma região. Use uma lista de pares chave-valor, com a zona como chave e a política como valor. Os valores válidos para a política são
ALLOW
, que é o padrão, eDENY
. Veja a seguir um valor de exemplo para este campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE : a distribuição de VMs nas zonas especificadas. Use o campo
locationPolicy
para especificar as zonas. A tabela a seguir mostra os valores válidos para este campo:Valor Descrição ANY_SINGLE_ZONE
Aplica a colocação de VM em uma única zona e prioriza a utilização de reservas não utilizadas. Use isto para evitar saída de rede entre zonas ou para reduzir a latência da rede. Este é o valor padrão. BALANCED
Tentativas de distribuir VMs uniformemente em todas as zonas da região. ANY
Permite a distribuição de VMs em diversas zonas de uma região. Escolhe zonas que possuem recursos disponíveis e que maximizam as reservas zonais não utilizadas. PROJECT_ID : o ID do projeto.
REGION : a região na qual criar as VMs.
NAME_PATTERN : o padrão de nome para as VMs. Especifique isto ou
perInstanceProperties
. Use uma sequência de caracteres hash (#
) para o Compute Engine substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomes comovm-1
evm-2
, até o número de VMs especificado por--count
, que deve ser menor ou igual ao número de VMs que o padrão de nome permite.Ao usar um padrão de nome, o Compute Engine tenta evitar conflitos de nome verificando os nomes das VMs existentes criadas a partir de solicitações anteriores.
PREDEFINED_NAME_1 , PREDEFINED_NAME_2 , ...: uma lista de nomes predefinidos para as VMs criarem. Especifique this ou
namePattern
. Se estiver usando esse sinalizador e especificandoCOUNT
,COUNT
deverá ser igual ao número de nomes fornecidos.HOSTNAME_1 , HOSTNAME_2 , ...: nomes de host de domínio totalmente qualificados que você deseja atribuir às VMs. Os nomes de host personalizados devem estar em conformidade com os requisitos da RFC 1035 para nomes de host válidos.
Por exemplo, para criar duas VMs
vm-1
evm-2
com nomes de host personalizadosmy-host1234.example.com
etest.example.com
respectivamente, especifique a propriedadehostname
emperInstanceProperties
da seguinte forma:{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT : o número de VMs a serem criadas. Deve ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usandoperInstanceProperties
, você não precisa especificarCOUNT
, mas se o fizer, deverá ser igual ao número de nomes fornecidos.MIN_COUNT : o número mínimo de VMs a serem criadas. A tabela a seguir descreve o comportamento da solicitação dependendo de como você define esse sinalizador:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. SeMIN_COUNT
VMs não puderem ser criadas, a solicitação falhará e nenhuma VM será criada.LOCATION_POLICY : as zonas a serem incluídas ou excluídas em uma região. Use uma lista de pares chave-valor, com a zona como chave e a política como valor. Os valores válidos para a política são
ALLOW
, que é o padrão, eDENY
. Veja a seguir um valor de exemplo para este campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE : a distribuição de VMs nas zonas especificadas. Use o campo
locationPolicy
para especificar as zonas. A tabela a seguir mostra os valores válidos para este campo:Valor Descrição ANY_SINGLE_ZONE
Aplica a colocação de VM em uma única zona e prioriza a utilização de reservas não utilizadas. Use isto para evitar saída de rede entre zonas ou para reduzir a latência da rede. Este é o valor padrão. BALANCED
Tentativas de distribuir VMs uniformemente em todas as zonas da região. ANY
Permite a distribuição de VMs em diversas zonas de uma região. Escolhe zonas que possuem recursos disponíveis e que maximizam as reservas zonais não utilizadas. -
PROJECT_ID
: o ID do projeto no qual você está criando VMs -
REGION
: a região na qual você está criando VMs -
ZONE
: a zona na qual você está criando VMs -
OPERATION_ID
: o ID da operação de inserção em massa -
status
: o status é um dos seguintes:-
CREATING
: A criação da VM está em andamento -
ROLLING_BACK
: a solicitação falhou e está sendo revertida -
DONE
: a criação ou reversão da VM foi concluída com êxito
-
-
targetVmCount
: o número de VMs a serem criadas na zona especificada -
createdVmCount
: o número de VMs já criadas na zona especificada -
failedToCreateVmCount
: o número de VMs que não foram criadas na zona especificada -
deletedVmCount
: o número de VMs que foram excluídas como parte da reversão de uma operação com falha Na
Operation
retornada pela solicitação, obtenha o valor da propriedadeoperationGroupId
.Use a propriedade
operationGroupId
como um filtro com o comandogcloud compute operations list
para pesquisar VMs associadas à solicitação regional ou zonal em todas as operações e todas as zonas do projeto:gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
Obtenha o restante das propriedades da VM seguindo um destes procedimentos:
Na lista de operações,
targetLink
representa o caminho da VM. Use o comandogcloud compute instances describe
com este caminho como o nome da VM para obter as propriedades da VM:gcloud compute instances describe VM_NAME
Use o comando
gcloud compute instances list
com um filtro que inclui os nomes das VMs da lista de operações:gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Use o comando
gcloud compute instances list
para obter as propriedades das VMs de todas as zonas e regiões e filtrar por um rótulo exclusivo para as instâncias ou por seus nomes:gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Na
Operation
retornada pela solicitação, obtenha o valor da propriedadeoperationGroupId
.Use a propriedade
operationGroupId
para obter a lista de operações de VM associadas à solicitação regional ou zonal:Se você enviou uma solicitação regional, para pesquisar todas as operações e todas as zonas do projeto, use o método
globalOperations.aggregatedList
e inclua a propriedadeoperationGroupId
como filtro:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
Se você enviou uma solicitação zonal, para listar as operações nessa zona, use o método
zoneOperations.get
e inclua a propriedadeoperationGroupId
no corpo da solicitação:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
Obtenha o restante das propriedades da VM seguindo um destes procedimentos:
Na lista de operações,
targetLink
representa o caminho da VM. Use o métodoinstances.get
com este caminho como nome da VM para obter todas as propriedades da VM:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
Use o método
instances.get
com um filtro que inclua os nomes das VMs da lista de operações:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Use o método
instances.aggregatedList
para obter as propriedades das VMs de todas as zonas e regiões e filtrar por um rótulo exclusivo para as instâncias ou por seus nomes:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Especifique o número de VMs a serem criadas em uma zona.
nTarget = 1000
Designe as regiões nas quais tentar criar as VMs.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
Itere pelas regiões e tente criar as VMs em cada região até obter sucesso.
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
Especifique o número de VMs a serem criadas e a região na qual criá-las.
nTarget = 1000 region = "us-central1"
Especifique as famílias de máquinas nas quais tentar criar as VMs.
acceptableMachineFamilies = ["n2","c2","e2","n1"]
Itere pelo conjunto de tipos de máquina e tente criar as VMs no tipo de máquina até obter êxito.
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
Especifique o número de VMs a serem criadas, um contador para monitorar o número total de VMs criadas, a região na qual as VMs serão criadas e uma variável para armazenar a zona em que o Compute Engine cria as VMs.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
Emita uma solicitação inicial para criar 5.000 VMs, salve a zona retornada pela solicitação e atualize o contador do número de VMs criadas.
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
Continue emitindo solicitações para criar até 5.000 VMs por vez na zona até que o Compute Engine crie o número especificado de VMs.
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
Especifique o número de VMs a serem criadas, a zona na qual criá-las e uma estrutura de dados para armazenar os nomes.
nTarget = 1000 targetZone = "us-central-1a" names = []
Gere os nomes padronizados para as VMs e adicione-os à estrutura de dados.
for n in range(0, 1000): names.push("instance-%d".format(n))
Crie as VMs e use
perInstanceProperties
para especificar os nomes.call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
Obtenha os detalhes das VMs usando o método
instances.list
com um filtro para os nomes das VMs sobre as quais retornar os detalhes.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
Adicione as VMs a um grupo de instâncias não gerenciadas. Adicionar VMs a um grupo de instâncias não gerenciadas permite usar o Cloud Monitoring . Os grupos de instâncias não gerenciadas não fornecem balanceamento de carga nem gerenciamento do ciclo de vida da VM .
Use rótulos. Os rótulos permitem organizar recursos usando pares de valores-chave .
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções obrigatórias
Para obter as permissões necessárias para criar VMs em massa, peça ao administrador para conceder a você a função do IAM Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) no projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .Esta função predefinida contém as permissões necessárias para criar VMs em massa. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :
Permissões necessárias
As seguintes permissões são necessárias para criar VMs em massa:
Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .
Crie VMs em massa em uma região
Para criar VMs em massa em uma região, use a CLI gcloud ou a API Compute Engine.
Se você especificar um tipo de máquina ou suporte para hardware adicional, como GPU ou SSD local, o Compute Engine colocará as VMs em uma zona dentro da região que oferece suporte ao tipo de máquina e ao hardware adicional.
gcloud
Para criar VMs em massa em uma região, use o seguinte comando
gcloud compute instances bulk create
: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 ]
Substitua o seguinte:
DESCANSAR
Para criar VMs em massa em uma região, use o seguinte método
instances.bulkInsert
: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" ... }
Substitua o seguinte:
Crie VMs em massa em uma zona
Para criar VMs em massa em uma zona, use a CLI gcloud ou a API Compute Engine.
gcloud
Para criar VMs em massa em uma zona específica, use o comando
gcloud compute instances bulk create
seguir.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
Substitua o seguinte:
DESCANSAR
Para criar VMs em massa em uma zona, use o método
instances.bulkInsert
a seguir.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, ... }
Substitua o seguinte:
Crie VMs com nomes de host personalizados em massa
É possível criar VMs com nomes de host personalizados em massa em uma região ou zona usando a CLI gcloud ou a API Compute Engine.
Você deve configurar manualmente o registro DNS para seu nome de host personalizado. Para obter mais informações, consulte limitações .
Se você não especificar um nome de host, o Compute Engine definirá o nome de host para VMs como um dos seguintes:
Para obter mais informações, consulte nomes DNS internos .
gcloud
Para criar VMs em massa com nomes de host personalizados em uma região específica, use o seguinte comando
gcloud beta compute instances bulk create
.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 ]
Substitua o seguinte:
DESCANSAR
Para criar VMs com nomes de host personalizados em massa em uma região específica, use o seguinte método
instances.bulkInsert
: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" ... }
Substitua o seguinte:
Verifique o status de uma solicitação para criar VMs em massa
Quando você cria uma solicitação de mutação, o Compute Engine retorna um recurso
operation
que você pode pesquisar para obter o status da operação. Para obter mais informações, consulte Tratamento de respostas de API .Para obter o status de uma solicitação de inserção em massa, envie uma solicitação HTTP
GET
para o recursooperation
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Para obter o status de uma solicitação de inserção em massa regional, envie a seguinte solicitação:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
Substitua o seguinte:
O objeto
instancesBulkInsertOperationMetadata
na resposta contém os seguintes detalhes da operação:O campo
progress
na resposta representa a porcentagem de conclusão da operação.O status da operação de inserção em massa será
RUNNING
até que o Compute Engine crie pelo menos o número mínimo de VMs e não ocorra mais nenhuma criação de VM ou reversão da solicitação.Quando a operação de inserção em massa estiver em andamento, você verá uma resposta semelhante a esta:
{ "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 } } } }
Neste exemplo, uma instância foi criada com sucesso e a operação está 2% concluída.
A operação retorna o status
DONE
quando o Compute Engine cria pelo menos o número mínimo de VMs especificado porminCount
ou quando o Compute Engine conclui a reversão da solicitação. Após a criação bem-sucedida do número solicitado de VMs, você receberá uma resposta semelhante a esta:{ "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" }
Para obter mais informações, consulte a documentação do objeto
instancesBulkInsertOperationMetadata
.Verifique o status de uma única VM
Para verificar o status de uma única VM criada a partir de uma solicitação de criação de VMs em massa, use a CLI gcloud ou a API Compute Engine.
gcloud
DESCANSAR
Exemplos de pseudocódigo
Os exemplos de pseudocódigo a seguir mostram como personalizar solicitações para criação de VMs em massa.
Crie VMs em massa em uma região a partir de um conjunto de regiões
O pseudocódigo a seguir descreve como criar 1.000 VMs em uma região a partir de um conjunto de regiões. Ao tentar criar VMs em massa numa região a partir de um conjunto de regiões, o pedido primeiro verifica a capacidade. Se não houver capacidade suficiente, a solicitação falha imediatamente e tenta novamente com a próxima região do conjunto.
Criar VMs em massa em uma zona em um tipo de máquina
O pseudocódigo a seguir descreve como criar várias VMs em uma zona em um tipo de máquina especificado. Ao tentar criar VMs em massa no mesmo tipo de máquina, a solicitação primeiro verifica a disponibilidade desses tipos de máquina. Se não houver quantidade suficiente do tipo de máquina disponível, a solicitação falhará imediatamente e tentará novamente com o próximo tipo de máquina.
Crie mais de 5.000 VMs em uma zona
Ao criar VMs em massa, você só pode criar 5.000 VMs com cada solicitação . O pseudocódigo a seguir descreve como criar mais de 5.000 VMs em uma zona emitindo diversas solicitações.
Crie VMs em massa e visualize seu status
O procedimento a seguir mostra como criar um grupo de VMs com nomes predefinidos e, em seguida, visualizar seu status:
O que vem a seguir
Depois de criar VMs em massa, siga um ou ambos os procedimentos a seguir para simplificar o gerenciamento dessas VMs:
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-04-17 UTC.
-