Quando quiser criar um grande número de instâncias de máquinas virtuais (VMs) idênticas e independentes entre si, crie VMs em massa através da Google Cloud CLI ou da API Compute Engine. Pode criar estas VMs em todas as zonas numa região ou distribuídas por determinadas zonas.
Para ver mais detalhes e limitações associadas, consulte o artigo Acerca da criação em massa de VMs. Se quiser criar instâncias com GPUs anexadas, consulte o artigo Crie VMs de GPU em massa.
Antes de começar
- Para VMs e quaisquer recursos relacionados que planeia criar, certifique-se de que tem quota suficiente e as autorizações necessárias.
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
gcloud
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.
Funções necessárias
Para receber as autorizações de que precisa para criar VMs em massa, peça ao seu administrador para lhe conceder a função de IAM Administrador de instâncias do Compute (v1) (
roles/compute.instanceAdmin.v1
) no projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.Esta função predefinida contém as autorizações necessárias para criar VMs em massa. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
As seguintes autorizações são necessárias para criar VMs em massa:
-
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 especificar uma sub-rede para a sua VM:
compute.subnetworks.use
no projeto ou na sub-rede escolhida -
Para especificar um endereço IP estático para a VM:
compute.addresses.use
no projeto -
Para atribuir um endereço IP externo à VM quando usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida -
Para atribuir uma rede antiga à VM:
compute.networks.use
no projeto -
Para atribuir um endereço IP externo à VM quando usar uma rede antiga:
compute.networks.useExternalIp
no projeto -
Para definir os metadados da instância de VM para a VM:
compute.instances.setMetadata
no projeto -
Para definir etiquetas para a VM:
compute.instances.setTags
na VM -
Para definir etiquetas 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 de leitura ou leitura/escrita:
compute.disks.use
no disco -
Para anexar um disco existente no modo de leitura:
compute.disks.useReadOnly
no disco
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Crie VMs em massa numa região
Para criar VMs em massa numa região, use a CLI gcloud ou a API Compute Engine.
Se especificar um tipo de máquina ou suporte para hardware adicional, como uma GPU ou um SSD local, o Compute Engine coloca as VMs numa zona na região que suporta o tipo de máquina e o hardware adicional.
gcloud
Para criar VMs em massa numa região, use o seguinte
gcloud compute instances bulk create
comando: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:
NAME_PATTERN: o padrão de nome para as VMs. Use uma sequência de carateres de cardinal (
#
) 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é ao número de VMs especificado por--count
, que tem de ser inferior ou igual ao número de VMs que o padrão de nome permite.Quando usa um padrão de nome, o Compute Engine tenta evitar conflitos de nomes verificando os nomes das VMs existentes criadas a partir de pedidos anteriores.
PREDEFINED_NAMES: uma lista de nomes predefinidos para as VMs a criar. Se usar esta flag e especificar
COUNT
,COUNT
tem de ser igual ao número de nomes fornecidos.REGION: a região na qual criar as VMs.
COUNT: o número de VMs a criar. Tem de ser inferior ou igual ao número de VMs permitidas por
NAME_PATTERN
. Em alternativa, se usar--predefined-names
, não tem de especificarCOUNT
, mas, se o fizer, tem de ser igual ao número de nomes fornecidos.MIN_COUNT: o número mínimo de VMs a criar. A tabela seguinte descreve o comportamento do pedido consoante a forma como define esta flag:
Valor Descrição Não definido O valor predefinido é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, o pedido falha e não são criadas VMs.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Superior a 1
e inferior aCOUNT
O Compute Engine cria, pelo menos, MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criar VMsMIN_COUNT
, o pedido falha e não são criadas VMs.LOCATION_POLICY: as zonas a incluir ou excluir numa região. Use uma lista de pares de 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 valor predefinido, edeny
. Segue-se um valor de exemplo para esta flag:--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_DISTRIBUTION_SHAPE: a distribuição das VMs nas zonas especificadas. Use a flag
--location-policy
para especificar as zonas. A tabela seguinte mostra os valores válidos para esta flag:Valor Descrição ANY_SINGLE_ZONE
Impõe o posicionamento de VMs numa única zona e dá prioridade à utilização de reservas não usadas. Use esta opção para evitar a saída da rede entre zonas ou para reduzir a latência da rede. Este é o valor predefinido. BALANCED
Tenta distribuir as VMs uniformemente por todas as zonas da região. ANY
Permite a distribuição de VMs em várias zonas numa região. Escolhe zonas com recursos disponíveis e que maximizam as reservas zonais não usadas.
REST
Para criar VMs em massa numa região, use o seguinte
instances.bulkInsert
método: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:
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 esta propriedade ou
perInstanceProperties
. Use uma sequência de carateres de 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é ao número de VMs especificado por--count
, que tem de ser inferior ou igual ao número de VMs que o padrão de nome permite.Quando usa um padrão de nome, o Compute Engine tenta evitar conflitos de nomes verificando os nomes das VMs existentes criadas a partir de pedidos anteriores.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: uma lista de nomes predefinidos para as VMs a criar. Especifique esta propriedade ou
namePattern
. Se usar esta flag e especificarCOUNT
,COUNT
tem de ser igual ao número de nomes fornecidos.COUNT: o número de VMs a criar. Tem de ser inferior ou igual ao número de VMs permitidas por
NAME_PATTERN
. Em alternativa, se usarperInstanceProperties
, não tem de especificarCOUNT
, mas, se o fizer, tem de ser igual ao número de nomes fornecidos.MIN_COUNT: o número mínimo de VMs a criar. A tabela seguinte descreve o comportamento do pedido consoante a forma como define esta flag:
Valor Descrição Não definido O valor predefinido é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, o pedido falha e não são criadas VMs.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Superior a 1
e inferior aCOUNT
O Compute Engine cria, pelo menos, MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criar VMsMIN_COUNT
, o pedido falha e não são criadas VMs.LOCATION_POLICY: as zonas a incluir ou excluir numa região. Use uma lista de pares de 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 valor predefinido, eDENY
. Segue-se 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 seguinte mostra os valores válidos para este campo:Valor Descrição ANY_SINGLE_ZONE
Impõe o posicionamento de VMs numa única zona e dá prioridade à utilização de reservas não usadas. Use esta opção para evitar a saída da rede entre zonas ou para reduzir a latência da rede. Este é o valor predefinido. BALANCED
Tenta distribuir as VMs uniformemente por todas as zonas da região. ANY
Permite a distribuição de VMs em várias zonas numa região. Escolhe zonas com recursos disponíveis e que maximizam as reservas zonais não usadas.
Crie VMs em massa numa zona
Para criar VMs em massa numa zona, use a CLI gcloud ou a API Compute Engine.
gcloud
Para criar VMs em massa numa zona específica, use o seguinte
gcloud compute instances bulk create
comando.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
Substitua o seguinte:
NAME_PATTERN: o padrão de nome para as VMs. Use uma sequência de carateres de cardinal (
#
) 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é ao número de VMs especificado por--count
, que tem de ser inferior ou igual ao número de VMs que o padrão de nome permite.Quando usa um padrão de nome, o Compute Engine tenta evitar conflitos de nomes verificando os nomes das VMs existentes criadas a partir de pedidos anteriores.
PREDEFINED_NAMES: uma lista de nomes predefinidos para as VMs a criar. Se usar esta flag e especificar
COUNT
,COUNT
tem de ser igual ao número de nomes fornecidos.ZONE: a zona na qual criar as VMs.
COUNT: o número de VMs a criar. Tem de ser inferior ou igual ao número de VMs permitidas por
NAME_PATTERN
. Em alternativa, se usar--predefined-names
, não tem de especificarCOUNT
, mas, se o fizer, tem de ser igual ao número de nomes fornecidos.MIN_COUNT: o número mínimo de VMs a criar. A tabela seguinte descreve o comportamento do pedido consoante a forma como define esta flag:
Valor Descrição Não definido O valor predefinido é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, o pedido falha e não são criadas VMs.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Superior a 1
e inferior aCOUNT
O Compute Engine cria, pelo menos, MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criar VMsMIN_COUNT
, o pedido falha e não são criadas VMs.
REST
Para criar VMs em massa numa zona, use o seguinte
instances.bulkInsert
método.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:
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 esta propriedade ou
perInstanceProperties
. Use uma sequência de carateres de 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é ao número de VMs especificado por--count
, que tem de ser inferior ou igual ao número de VMs que o padrão de nome permite.Quando usa um padrão de nome, o Compute Engine tenta evitar conflitos de nomes verificando os nomes das VMs existentes criadas a partir de pedidos anteriores.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: uma lista de nomes predefinidos para as VMs a criar. Especifique esta propriedade ou
namePattern
. Se usar esta flag e especificarCOUNT
,COUNT
tem de ser igual ao número de nomes fornecidos.COUNT: o número de VMs a criar. Tem de ser inferior ou igual ao número de VMs permitidas por
NAME_PATTERN
. Em alternativa, se usarperInstanceProperties
, não tem de especificarCOUNT
, mas, se o fizer, tem de ser igual ao número de nomes fornecidos.MIN_COUNT: o número mínimo de VMs a criar. A tabela seguinte descreve o comportamento do pedido consoante a forma como define esta flag:
Valor Descrição Não definido O valor predefinido é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, o pedido falha e não são criadas VMs.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Superior a 1
e inferior aCOUNT
O Compute Engine cria, pelo menos, MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criar VMsMIN_COUNT
, o pedido falha e não são criadas VMs.
Crie VMs com nomes de anfitrião personalizados em massa
Pode criar VMs com nomes de anfitrião personalizados em massa numa região ou numa zona através da CLI gcloud ou da API Compute Engine.
Tem de configurar manualmente o registo DNS para o nome de anfitrião personalizado. Para mais informações, consulte as limitações.
Se não especificar um nome de anfitrião, o Compute Engine define o nome de anfitrião para as VMs como um dos seguintes:
VM_NAME.c.PROJECT_ID.internal
quando ativa o DNS globalVM_NAME.ZONE.c.PROJECT_ID.internal
quando ativa o DNS zonal
Para mais informações, consulte nomes DNS internos.
gcloud
Para criar VMs em massa com nomes de anfitrião personalizados numa região específica, use o seguinte
gcloud beta compute instances bulk create
comando.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:
NAME_PATTERN: o padrão de nome para as VMs. Use uma sequência de carateres de cardinal (
#
) 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é ao número de VMs especificado por--count
, que tem de ser inferior ou igual ao número de VMs que o padrão de nome permite.Quando usa um padrão de nome, o Compute Engine tenta evitar conflitos de nomes verificando os nomes das VMs existentes criadas a partir de pedidos anteriores.
PREDEFINED_NAMES: uma lista de nomes predefinidos para as VMs a criar. Se usar esta flag e especificar
COUNT
,COUNT
tem de ser igual ao número de nomes fornecidos.[VM_NAME=HOSTNAME, ...]: uma lista de pares de chave-valor de nomes predefinidos para as VMs e nomes de anfitriões de domínio totalmente qualificados que quer atribuir às VMs. Os nomes de anfitrião personalizados têm de estar em conformidade com os requisitos da RFC 1035 para nomes de anfitrião válidos.
REGION: a zona na qual criar as VMs.
COUNT: o número de VMs a criar. Tem de ser inferior ou igual ao número de VMs permitidas por
NAME_PATTERN
. Em alternativa, se usar--predefined-names
, não tem de especificarCOUNT
, mas, se o fizer, tem de ser igual ao número de nomes fornecidos.MIN_COUNT: o número mínimo de VMs a criar. A tabela seguinte descreve o comportamento do pedido consoante a forma como define esta flag:
Valor Descrição Não definido O valor predefinido é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, o pedido falha e não são criadas VMs.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Superior a 1
e inferior aCOUNT
O Compute Engine cria, pelo menos, MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criar VMsMIN_COUNT
, o pedido falha e não são criadas VMs.LOCATION_POLICY: as zonas a incluir ou excluir numa região. Use uma lista de pares de 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 valor predefinido, eDENY
. Segue-se 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 seguinte mostra os valores válidos para este campo:Valor Descrição ANY_SINGLE_ZONE
Impõe o posicionamento de VMs numa única zona e dá prioridade à utilização de reservas não usadas. Use esta opção para evitar a saída da rede entre zonas ou para reduzir a latência da rede. Este é o valor predefinido. BALANCED
Tenta distribuir as VMs uniformemente por todas as zonas da região. ANY
Permite a distribuição de VMs em várias zonas numa região. Escolhe zonas com recursos disponíveis e que maximizam as reservas zonais não usadas.
REST
Para criar VMs com nomes de anfitrião personalizados em massa numa região específica, use o seguinte
instances.bulkInsert
método: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:
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 esta propriedade ou
perInstanceProperties
. Use uma sequência de carateres de 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é ao número de VMs especificado por--count
, que tem de ser inferior ou igual ao número de VMs que o padrão de nome permite.Quando usa um padrão de nome, o Compute Engine tenta evitar conflitos de nomes verificando os nomes das VMs existentes criadas a partir de pedidos anteriores.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: uma lista de nomes predefinidos para as VMs a criar. Especifique esta propriedade ou
namePattern
. Se usar esta flag e especificarCOUNT
,COUNT
tem de ser igual ao número de nomes fornecidos.HOSTNAME_1, HOSTNAME_2, ...: nomes de anfitriões de domínio totalmente qualificados que quer atribuir às VMs. Os nomes de anfitrião personalizados têm de estar em conformidade com os requisitos da RFC 1035 para nomes de anfitrião válidos.
Por exemplo, para criar duas VMs
vm-1
evm-2
com nomes de anfitrião personalizadosmy-host1234.example.com
etest.example.com
, respetivamente, 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 criar. Tem de ser inferior ou igual ao número de VMs permitidas por
NAME_PATTERN
. Em alternativa, se usarperInstanceProperties
, não tem de especificarCOUNT
, mas, se o fizer, tem de ser igual ao número de nomes fornecidos.MIN_COUNT: o número mínimo de VMs a criar. A tabela seguinte descreve o comportamento do pedido consoante a forma como define esta flag:
Valor Descrição Não definido O valor predefinido é COUNT
. Se o Compute Engine não conseguir criar o número de VMs especificado porCOUNT
, o pedido falha e não são criadas VMs.1
O Compute Engine cria o maior número possível de VMs, até COUNT
.Superior a 1
e inferior aCOUNT
O Compute Engine cria, pelo menos, MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criar VMsMIN_COUNT
, o pedido falha e não são criadas VMs.LOCATION_POLICY: as zonas a incluir ou excluir numa região. Use uma lista de pares de 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 valor predefinido, eDENY
. Segue-se 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 seguinte mostra os valores válidos para este campo:Valor Descrição ANY_SINGLE_ZONE
Impõe o posicionamento de VMs numa única zona e dá prioridade à utilização de reservas não usadas. Use esta opção para evitar a saída da rede entre zonas ou para reduzir a latência da rede. Este é o valor predefinido. BALANCED
Tenta distribuir as VMs uniformemente por todas as zonas da região. ANY
Permite a distribuição de VMs em várias zonas numa região. Escolhe zonas com recursos disponíveis e que maximizam as reservas zonais não usadas.
Verifique o estado de um pedido de criação de VMs em massa
Quando cria um pedido de mutação, o Compute Engine devolve um
operation
recurso que pode sondar para obter o estado da operação. Para mais informações, consulte o artigo Processar respostas da API.Para obter o estado de um pedido de inserção em massa, envie um pedido HTTP
GET
para o recursooperation
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Para obter o estado de um pedido de inserção em massa regional, envie o seguinte pedido:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
Substitua o seguinte:
PROJECT_ID
: o ID do projeto no qual está a criar VMsREGION
: a região na qual está a criar VMsZONE
: a zona na qual está a criar VMsOPERATION_ID
: o ID da operação de inserção em massa
O objeto
instancesBulkInsertOperationMetadata
na resposta contém os seguintes detalhes da operação:status
: o estado é um dos seguintes:CREATING
: a criação da VM está em cursoROLLING_BACK
: o pedido falhou e está a ser revertidoDONE
: a criação ou a reversão da VM foi concluída com êxito
targetVmCount
: o número de VMs a criar na zona especificadacreatedVmCount
: o número de VMs já criadas na zona especificadafailedToCreateVmCount
: o número de VMs cuja criação falhou na zona especificadadeletedVmCount
: o número de VMs que foram eliminadas como parte da reversão de uma operação com falha
O campo
progress
na resposta representa a percentagem de conclusão da operação.O estado da operação de inserção em massa é
RUNNING
até que o Compute Engine crie com êxito, pelo menos, o número mínimo de VMs e não ocorra mais criação de VMs nem reversão do pedido.Quando a operação de inserção em massa estiver em curso, deve ver uma resposta semelhante à seguinte:
{ "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, foi criada uma instância com êxito e a operação está 2% concluída.
A operação devolve o estado
DONE
quando o Compute Engine cria com êxito, pelo menos, o número mínimo de VMs especificado porminCount
ou quando o Compute Engine conclui a reversão do pedido. Após a criação bem-sucedida do número pedido de VMs, recebe uma resposta semelhante à seguinte:{ "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 mais informações, consulte a documentação do objeto
instancesBulkInsertOperationMetadata
.Verifique o estado de uma única VM
Para verificar o estado de uma única VM criada a partir de um pedido para criar VMs em massa, use a CLI gcloud ou a API Compute Engine.
gcloud
A partir do
Operation
devolvido pelo pedido, obtenha o valor da propriedadeoperationGroupId
.Use a propriedade
operationGroupId
como filtro com o comandogcloud compute operations list
para pesquisar em todas as operações e todas as zonas no projeto VMs associadas ao pedido regional ou zonal:gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
Obtenha as restantes propriedades da VM através de uma das seguintes opções:
Na lista de operações, o elemento
targetLink
representa o caminho da VM. Use ogcloud compute instances describe
comando 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 inclua os nomes das MV da lista de operações:gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
-
gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
REST
A partir do
Operation
devolvido pelo pedido, obtenha o valor da propriedadeoperationGroupId
.Use a propriedade
operationGroupId
para obter a lista de operações de VM associadas ao pedido regional ou zonal:Se enviou um pedido regional, para pesquisar em todas as operações e todas as zonas no 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 enviou um pedido zonal, para listar as operações nessa zona, use o método
zoneOperations.get
e inclua a propriedadeoperationGroupId
no corpo do pedido:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
Obtenha as restantes propriedades da VM através de uma das seguintes opções:
Na lista de operações, o elemento
targetLink
representa o caminho da VM. Use oinstances.get
método com este caminho como o 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
instances.get
método 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
instances.aggregatedList
método para obter as propriedades das VMs de todas as zonas e regiões, e filtre por uma etiqueta exclusiva das instâncias ou pelos respetivos nomes:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Exemplos de pseudocódigo
Os exemplos de pseudocódigo seguintes mostram como personalizar os pedidos de criação de VMs em massa.
Crie VMs em massa numa região a partir de um conjunto de regiões
O pseudocódigo seguinte descreve como criar 1000 VMs numa região a partir de um conjunto de regiões. Quando tenta criar VMs em massa numa região a partir de um conjunto de regiões, o pedido verifica primeiro a capacidade. Se não houver capacidade suficiente, o pedido falha imediatamente e tenta novamente com a região seguinte no conjunto.
Especifique o número de VMs a criar numa zona.
nTarget = 1000
Designar as regiões nas quais se vai tentar criar as VMs.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
Itere as regiões e tente criar as VMs em cada região até ter êxito.
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
Crie VMs em massa numa zona num tipo de máquina
O pseudocódigo seguinte descreve como criar várias VMs numa zona num tipo de máquina especificado. Quando tenta criar VMs em massa no mesmo tipo de máquina, o pedido verifica primeiro a disponibilidade desses tipos de máquinas. Se não houver máquinas do tipo de máquina suficientes disponíveis, o pedido falha imediatamente e tenta novamente com o tipo de máquina seguinte.
Especifique o número de VMs a criar e a região na qual as criar.
nTarget = 1000 region = "us-central1"
Especifique as famílias de máquinas nas quais tentar criar as VMs.
acceptableMachineFamilies = ["n2","c2","e2","n1"]
Itere o conjunto de tipos de máquinas e tente criar as VMs no tipo de máquina até ter êxito.
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
Crie mais de 5000 VMs numa zona
Quando cria VMs em massa, só pode criar 5000 VMs com cada pedido. O pseudocódigo seguinte descreve como criar mais de 5000 VMs numa zona através do envio de vários pedidos.
Especifique o número de VMs a criar, um contador para acompanhar o número total de VMs criadas, a região na qual criar as VMs e uma variável para armazenar a zona na qual o Compute Engine cria as VMs.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
Emita um pedido inicial para criar 5000 VMs, guarde a zona devolvida pelo pedido 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 a emitir pedidos para criar até 5000 VMs de cada vez na zona até o Compute Engine criar o número especificado de VMs.
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
Crie VMs em massa e veja o respetivo estado
O procedimento seguinte mostra como criar um grupo de VMs com nomes predefinidos e, em seguida, ver o respetivo estado:
Especifique o número de VMs a criar, a zona na qual as criar 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 nomes à 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 através do
instances.list
método com um filtro para os nomes das VMs para devolver os detalhes sobre as mesmas.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
O que se segue?
Depois de criar VMs em massa, faça uma ou ambas as seguintes ações para simplificar a gestão dessas VMs:
Adicione as VMs a um grupo de instâncias não gerido. Adicionar VMs a um grupo de instâncias não gerido permite-lhe usar o Cloud Monitoring. Os grupos de instâncias não geridos não oferecem equilíbrio de carga nem gestão do ciclo de vida da VM.
Use etiquetas. As etiquetas permitem organizar recursos através de pares de chave-valor.
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-09-19 UTC.
-