Quando você quiser criar um grande número de instâncias de máquina virtual (VM) que são idênticas e independentes umas das outras, crie VMs em massa usando a CLI do Google Cloud ou a API Compute Engine. É possível criar essas VMs em todas as zonas de uma região ou distribuídas em determinadas zonas.
Para mais detalhes e limitações associadas, consulte Sobre a criação em massa de VMs.
Antes de começar
- Para VMs e quaisquer recursos relacionados que você planeja criar, verifique se você tem cota suficiente e permissões necessárias.
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
compute.instances.create
no projeto -
Usar uma imagem personalizada a fim de criar a VM:
compute.images.useReadOnly
na imagem -
Usar um snapshot para criar a VM:
compute.snapshots.useReadOnly
no snapshot -
Usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnly
no modelo de instância -
Atribuir uma rede legada à VM:
compute.networks.use
no projeto -
Especificar um endereço IP estático para a VM:
compute.addresses.use
no projeto -
Atribuir um endereço IP externo à VM ao usar uma rede legada:
compute.networks.useExternalIp
no projeto -
Especificar uma sub-rede para a VM:
compute.subnetworks.use
no projeto ou na sub-rede escolhida -
Atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida -
Definir os metadados da instância de VM para a VM:
compute.instances.setMetadata
no projeto -
Definir tags para a VM:
compute.instances.setTags
na VM -
Definir rótulos para a VM:
compute.instances.setLabels
na VM -
Definir uma conta de serviço a ser usada pela VM:
compute.instances.setServiceAccount
na VM -
Criar um disco para a VM:
compute.disks.create
no projeto -
Anexar um disco atual no modo somente leitura ou de leitura e gravação:
compute.disks.use
no disco -
Anexar um disco atual 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 de hash (
#
) no Compute Engine para substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificadas por--count
, que precisa 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 com base nas solicitações anteriores.
PREDEFINED_NAMES: uma lista de nomes predefinidos das VMs a serem criadas. Se estiver usando essa sinalização e especificando
COUNT
,COUNT
precisa ser igual ao número de nomes fornecidos.REGION: a região em que as VMs serão criadas.
COUNT: o número de VMs a serem criadas. Precisa ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usando--predefined-names
, não é necessário especificarCOUNT
, mas se fizer isso, ele precisará 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ê definir essa sinalização:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não puder criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o máximo de VMs possível, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criarMIN_COUNT
VMs, 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 de chave-valor, com a zona como a chave e a política como o valor. Os valores válidos para a política são
allow
, que é o padrão, edeny
. Veja a seguir um exemplo de valor dessa sinalização:--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_SHAPE: a distribuição das VMs entre as zonas especificadas. Use a sinalização
--location-policy
para especificar as zonas. A tabela a seguir mostra os valores válidos para essa sinalização:Valor Descrição any_single_zone
Aplica a colocação de VMs em uma única zona e prioriza o uso de reservas não utilizadas. Use isso para evitar a saída de rede entre zonas ou reduzir a latência da rede. Esse é o valor padrão. balanced
Tenta distribuir VMs de maneira uniforme em todas as zonas da região. any
Permite a distribuição de VMs em várias zonas de uma região. Escolhe zonas que têm recursos disponíveis e que maximizam reservas por zona não utilizadas. PROJECT_ID: o ID do projeto;
REGION: a região em que as VMs serão criadas.
NAME_PATTERN: o padrão de nome para as VMs. Especifique esse ou
perInstanceProperties
. Use uma sequência de caracteres de hash (#
) no Compute Engine para substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificadas por--count
, que precisa 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 com base nas solicitações anteriores.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: uma lista de nomes predefinidos das VMs a serem criadas. Especifique esse ou
namePattern
. Se estiver usando essa sinalização e especificandoCOUNT
,COUNT
precisará ser igual ao número de nomes fornecidos.COUNT: o número de VMs a serem criadas. Precisa ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usandoperInstanceProperties
, não é necessário especificarCOUNT
, mas se fizer isso, ele precisará 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ê definir essa sinalização:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não puder criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o máximo de VMs possível, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criarMIN_COUNT
VMs, 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 de chave-valor, com a zona como a chave e a política como o valor. Os valores válidos para a política são
ALLOW
, que é o padrão, eDENY
. Veja a seguir um exemplo desse valor:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_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 VMs em uma única zona e prioriza o uso de reservas não utilizadas. Use isso para evitar a saída de rede entre zonas ou reduzir a latência da rede. Esse é o valor padrão. BALANCED
Tenta distribuir VMs de maneira uniforme em todas as zonas da região. ANY
Permite a distribuição de VMs em várias zonas de uma região. Escolhe zonas que têm recursos disponíveis e que maximizam reservas por zona não utilizadas. NAME_PATTERN: o padrão de nome para as VMs. Use uma sequência de caracteres de hash (
#
) no Compute Engine para substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificadas por--count
, que precisa 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 com base nas solicitações anteriores.
PREDEFINED_NAMES: uma lista de nomes predefinidos das VMs a serem criadas. Se estiver usando essa sinalização e especificando
COUNT
,COUNT
precisa ser igual ao número de nomes fornecidos.ZONE: zona em que as VMs serão criadas.
COUNT: o número de VMs a serem criadas. Precisa ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usando--predefined-names
, não é necessário especificarCOUNT
, mas se fizer isso, ele precisará 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ê definir essa sinalização:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não puder criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o máximo de VMs possível, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criarMIN_COUNT
VMs, a solicitação falhará e nenhuma VM será criada.PROJECT_ID: o ID do projeto;
ZONE: zona em que as VMs serão criadas.
NAME_PATTERN: o padrão de nome para as VMs. Especifique esse ou
perInstanceProperties
. Use uma sequência de caracteres de hash (#
) no Compute Engine para substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificadas por--count
, que precisa 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 com base nas solicitações anteriores.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: uma lista de nomes predefinidos das VMs a serem criadas. Especifique esse ou
namePattern
. Se estiver usando essa sinalização e especificandoCOUNT
,COUNT
precisará ser igual ao número de nomes fornecidos.COUNT: o número de VMs a serem criadas. Precisa ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usandoperInstanceProperties
, não é necessário especificarCOUNT
, mas se fizer isso, ele precisará 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ê definir essa sinalização:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não puder criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o máximo de VMs possível, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criarMIN_COUNT
VMs, a solicitação falhará e nenhuma VM será criada.VM_NAME.c.PROJECT_ID.internal
quando você ativar o DNS globalVM_NAME.ZONE.c.PROJECT_ID.internal
quando você ativar o DNS zonalNAME_PATTERN: o padrão de nome para as VMs. Use uma sequência de caracteres de hash (
#
) no Compute Engine para substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificadas por--count
, que precisa 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 com base nas solicitações anteriores.
PREDEFINED_NAMES: uma lista de nomes predefinidos das VMs a serem criadas. Se estiver usando essa sinalização e especificando
COUNT
,COUNT
precisa 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 host de domínio totalmente qualificados que você quer atribuir às VMs. Os nomes de host personalizados precisam estar em conformidade com os requisitos do RFC 1035 para nomes de host válidos.
REGION: zona em que as VMs serão criadas.
COUNT: o número de VMs a serem criadas. Precisa ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usando--predefined-names
, não é necessário especificarCOUNT
, mas se fizer isso, ele precisará 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ê definir essa sinalização:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não puder criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o máximo de VMs possível, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criarMIN_COUNT
VMs, 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 de chave-valor, com a zona como a chave e a política como o valor. Os valores válidos para a política são
ALLOW
, que é o padrão, eDENY
. Veja a seguir um exemplo desse valor:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_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 VMs em uma única zona e prioriza o uso de reservas não utilizadas. Use isso para evitar a saída de rede entre zonas ou reduzir a latência da rede. Esse é o valor padrão. BALANCED
Tenta distribuir VMs de maneira uniforme em todas as zonas da região. ANY
Permite a distribuição de VMs em várias zonas de uma região. Escolhe zonas que têm recursos disponíveis e que maximizam reservas por zona não utilizadas. PROJECT_ID: o ID do projeto;
REGION: a região em que as VMs serão criadas.
NAME_PATTERN: o padrão de nome para as VMs. Especifique esse ou
perInstanceProperties
. Use uma sequência de caracteres de hash (#
) no Compute Engine para substituir por uma sequência de números. Por exemplo, usarvm-#
para o padrão de nome gera VMs com nomesvm-1
,vm-2
e assim por diante, até o número de VMs especificadas por--count
, que precisa 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 com base nas solicitações anteriores.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: uma lista de nomes predefinidos das VMs a serem criadas. Especifique esse ou
namePattern
. Se estiver usando essa sinalização e especificandoCOUNT
,COUNT
precisará ser igual ao número de nomes fornecidos.HOSTNAME_1, HOSTNAME_2, ...: nomes de host de domínio totalmente qualificados que você quer atribuir às VMs. Os nomes de host personalizados precisam estar em conformidade com os requisitos do 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 maneira:{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT: o número de VMs a serem criadas. Precisa ser menor ou igual ao número de VMs permitidas por
NAME_PATTERN
. Ou, se estiver usandoperInstanceProperties
, não é necessário especificarCOUNT
, mas se fizer isso, ele precisará 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ê definir essa sinalização:
Valor Descrição Não definido O valor padrão é COUNT
. Se o Compute Engine não puder criar o número de VMs especificado porCOUNT
, a solicitação falhará e nenhuma VM será criada.1
O Compute Engine cria o máximo de VMs possível, até COUNT
.Maior que 1
e menor queCOUNT
O Compute Engine cria pelo menos MIN_COUNT
VMs até um máximo deCOUNT
VMs. Se não for possível criarMIN_COUNT
VMs, 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 de chave-valor, com a zona como a chave e a política como o valor. Os valores válidos para a política são
ALLOW
, que é o padrão, eDENY
. Veja a seguir um exemplo desse valor:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_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 VMs em uma única zona e prioriza o uso de reservas não utilizadas. Use isso para evitar a saída de rede entre zonas ou reduzir a latência da rede. Esse é o valor padrão. BALANCED
Tenta distribuir VMs de maneira uniforme em todas as zonas da região. ANY
Permite a distribuição de VMs em várias zonas de uma região. Escolhe zonas que têm recursos disponíveis e que maximizam reservas por zona não utilizadas. PROJECT_ID
: o ID do projeto em que você está criando VMs.REGION
: a região em que você está criando VMs.ZONE
: a zona em que 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 andamentoROLLING_BACK
: a solicitação falhou, e ela está sendo revertida.DONE
: a criação ou reversão da VM foi concluída.
targetVmCount
: o número de VMs a serem criadas na zona especificadacreatedVmCount
: o número de VMs já criadas na zona especificadafailedToCreateVmCount
: o número de VMs que não foram criadas na zona especificadadeletedVmCount
: o número de VMs que foram excluídas como parte da reversão de uma operação com falhaNa
Operation
retornada pela solicitação, acesse o valor da propriedadeoperationGroupId
.Use a propriedade
operationGroupId
como um filtro com o comandogcloud compute operations list
para pesquisar todas as operações e todas as zonas no projeto para VMs associadas à solicitação regional ou zonal:gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
Consiga o restante das propriedades da VM seguindo um destes procedimentos:
Na lista de operações, o
targetLink
representa o caminho da VM. Use o métodogcloud compute instances describe
com este caminho como o nome da VM para conseguir as propriedades completas da VM:gcloud compute instances describe VM_NAME
Use o método
gcloud compute instances list
com um filtro que inclua 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 acessar as propriedades das VMs de todas as zonas e regiões e filtre por um rótulo exclusivo das 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, acesse o valor da propriedadeoperationGroupId
.Use a propriedade
operationGroupId
como filtro para ver a lista de operações de VM associadas à solicitação regional ou zonal:Se você enviou uma solicitação regional, use o método
globalOperations.aggregatedList
para pesquisar em todas as operações e zonas do projeto:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
Se você enviou uma solicitação zonal, use o método
zoneOperations.get
para listar as operações nessa zona:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert?filter=(operationGroupId=OPERATION_GROUP_ID)
Consiga o restante das propriedades da VM seguindo um destes procedimentos:
Na lista de operações, o
targetLink
representa o caminho da VM. Use o métodoinstances.get
com esse caminho como o nome da VM para acessar 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 acessar as propriedades das VMs de todas as zonas e regiões e filtre por um rótulo exclusivo das 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 para criar dentro de uma zona.
nTarget = 1000
Designe as regiões em que você quer criar as VMs.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
Faça a iteração nas regiões e tente criar as VMs em cada região até ter 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 para criá-las.
nTarget = 1000 region = "us-central1"
Especifique as famílias de máquinas para tentar criar as VMs.
acceptableMachineFamilies = ["n2","c2","e2","n1"]
Faça a iteração pelo conjunto de tipos de máquina e tente criar as VMs no tipo de máquina até ser bem-sucedido.
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 para criar, um contador para rastrear o número total de VMs criadas, a região onde 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, salvar a zona retornada pela solicitação e atualizar 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 enviando 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 para criar, a zona onde criá-las e uma estrutura de dados para armazenar os nomes.
nTarget = 1000 targetZone = "us-central-1a" names = []
Gere os nomes padronizados das 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)
Use o método
instances.list
com um filtro para os nomes das VMs para retornar os detalhes das VMs.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
Adicionar 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. Esses grupos não oferecem balanceamento de carga ou gerenciamento do ciclo de vida da VM.
Usar marcadores. Os rótulos permitem organizar recursos usando pares de chave-valor.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções exigidas
Para receber as permissões necessárias a fim de criar VMs em massa, peça ao administrador para conceder a você o papel do IAM de administrador da instância do Compute (v1) (
roles/compute.instanceAdmin.v1
) no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.Esse papel predefinido contém as permissões necessárias para criar VMs em massa. Para conferir 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:
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Criar 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 uma GPU ou um SSD local, o Compute Engine colocará as VMs em uma zona dentro da região que seja compatível com o tipo de máquina e o hardware extra.
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-shape=TARGET_SHAPE ]
Substitua:
REST
Para criar VMs em massa em uma região, use o seguinte método
instances.bulkInsert
: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" ... }
Substitua:
Criar 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 seguinte comando
gcloud compute instances bulk create
.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
Substitua:
REST
Para criar VMs em massa em uma zona, use o seguinte método
instances.bulkInsert
.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, ... }
Substitua:
Criar 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ê precisa configurar manualmente o registro DNS com o nome de host personalizado. Saiba mais em Limitações.
Se você não especificar um nome do host, o Compute Engine definirá o nome do host para VMs como uma das seguintes opções:
Para 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 comando
gcloud beta compute instances bulk create
a seguir.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-shape=TARGET_SHAPE ]
Substitua:
REST
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://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" ... }
Substitua:
Verificar 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 pode ser pesquisado para receber o status da operação. Para mais informações, consulte Como gerenciar respostas de API.Para ver o status de uma solicitação de inserção em massa, envie uma solicitação
GET
HTTP ao recursooperation
:GET compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Para ver o status de uma solicitação de inserção em massa regional, envie a seguinte solicitação:
GET compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
Substitua:
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 é
RUNNING
até que o Compute Engine crie pelo menos o número mínimo de VMs e não ocorra mais criação 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://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 } } } }
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 com êxito 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 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 mais informações, consulte a documentação do objeto
instancesBulkInsertOperationMetadata
.Verificar o status de uma única VM
Para verificar o status de uma única VM criada com base em uma solicitação de criação em massa, use a CLI gcloud ou a API Compute Engine.
gcloud
REST
Exemplos de pseudocódigo
Nos exemplos de pseudocódigo a seguir, mostramos como personalizar solicitações para criar VMs em massa.
Criar VMs em massa em uma região a partir de um conjunto de regiões
Veja no pseudocódigo a seguir como criar 1.000 VMs em uma região a partir de um conjunto de regiões. Ao tentar criar VMs em massa em uma região de um conjunto de regiões, a solicitação primeiro verifica a capacidade. Se não houver capacidade suficiente, a solicitação falhará imediatamente e será feita de novo com a próxima região do conjunto.
Criar VMs em massa em uma zona em um tipo de máquina
Este pseudocódigo 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. Se não houver uma quantidade suficiente do tipo de máquina disponível, a solicitação falhará imediatamente e tentará de novo com o próximo tipo de máquina.
Criar mais de 5.000 VMs em uma zona
Ao criar VMs em massa, só é possível 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 várias solicitações.
Criar VMs em massa e ver o status delas
No procedimento a seguir, mostramos como criar um grupo de VMs com nomes predefinidos e visualizar o status deles:
A seguir
Depois de criar VMs em massa, realize um ou ambos os procedimentos para simplificar o gerenciamento:
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 2024-09-24 UTC.
-