Depois de criar uma imagem de máquina, use-a para fazer cópias da instância de VM de origem. Para mais informações sobre o uso de imagens de máquina, consulte Quando usar uma imagem de máquina.
Uma imagem de máquina contém a maioria das informações e dados necessários para clonar uma instância.
Uma imagem de máquina não pode ser alterada. No entanto, é possível modificar quase todas as propriedades da imagem de máquina ao criar uma instância com base nela.
É possível criar instâncias com base em imagens de máquina usando o console do Google Cloud, a CLI do Google Cloud ou a REST.
Antes de começar
-
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:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
É possível criar no máximo seis VMs de uma imagem de máquina de origem em 60 minutos. Se você exceder esse limite, a operação de criação da instância falhará e retornará um erro semelhante ao seguinte:
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
Para criar mais VMs do que o limite definido (6 VMs em 60 minutos), crie mais imagens de máquina a partir da VM de origem ou crie imagens de máquina de curta duração usando as novas VMs. Em seguida, será possível criar o número necessário de VMs a partir das novas imagens de máquina.
Não é possível criar VMs a partir de imagens de máquina com discos permanentes regionais anexados usando o console do Google Cloud. Use a Google Cloud CLI ou a REST e especifique os parâmetros
replicaZones
edeviceName
para cada disco permanente regional anexado. Para mais informações, consulte Criar uma VM a partir de uma imagem de máquina com modificações de propriedades.No console do Google Cloud, acesse a página Criar uma instância.
Clique em Nova instância de VM a partir da imagem de máquina.
Selecione a imagem de máquina e clique em Continuar.
Opcional: personalize os detalhes da VM.
Clique em Criar.
VM_NAME
: o nome da VM a ser criada.ZONE
: a zona para a VM.SOURCE_MACHINE_IMAGE_NAME
: a imagem de máquina a partir da qual a VM será criada.PROJECT_ID
: o ID do projeto.ZONE
: a zona para a VM.VM_NAME
: o nome da VM a ser criada.SOURCE_MACHINE_IMAGE_URL
: o URL completo ou parcial da imagem de máquina que você quer usar para criar a VM. Por exemplo, se você tiver uma imagem de máquina chamadamy-machine-image
em um projeto chamadomyProject
. Os seguintes URLs serão válidos:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- Não é possível substituir nenhuma propriedade do disco anexado que não seja o nome dele ao criar uma VM a partir da imagem de máquina.
Especifique o parâmetro
replicaZones
para cada disco permanente regional anexado com odeviceName
do disco regional a partir da imagem de máquina.Se a VM de origem usada para gerar a imagem de máquina e a nova VM pertencer ao mesmo projeto e à mesma região, o seguinte será aplicado:
- A maioria das propriedades da instância de origem e da nova VM será igual. As propriedades diferentes serão aquelas como os endereços IP temporários que são atribuídos automaticamente.
- Se a instância da VM de origem ainda existir quando você criar uma nova VM, essa nova VM não poderá usar o mesmo nome e a mesma zona que a instância de origem.
Se a VM de origem usada para gerar a imagem de máquina e a nova VM pertencerem ao mesmo projeto, mas a regiões diferentes, as seguintes condições serão aplicáveis:
- Você precisará substituir todos os recursos zonais e regionais da nova VM. Por exemplo, se você criar uma instância de VM com base em uma imagem de máquina, e a instância de origem dessa imagem pertencer a uma região diferente, será necessário modificar recursos regionais, como sub-rede e regras de firewall regionais. No entanto, recursos globais como balanceadores de carga e contas de serviço não precisam de modificação, a menos que você queira modificá-los.
No console do Google Cloud, acesse a página Criar uma instância.
Clique em Nova instância de VM a partir da imagem de máquina.
Selecione a imagem de máquina e clique em Continuar.
Opcional: personalize os detalhes da VM.
Clique em Criar.
Para mais detalhes sobre configuração, consulte Criar uma instância de VM a partir de uma imagem.
PROJECT_ID
: o ID do projeto.ZONE
: a zona para a VM.VM_NAME
: o nome da VM a ser criada.NEW_MACHINE_TYPE
: o tipo de máquina que você quer usar para a VM.SOURCE_MACHINE_IMAGE_URL
: o URL completo ou parcial da imagem de máquina que você quer usar para criar a instância. Por exemplo, se você tiver uma imagem de máquina chamadamy-machine-image
em um projeto chamadomyProject
. Os seguintes URLs serão válidos:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- Se você modificar um campo básico, o campo básico correspondente na imagem da máquina será substituído pelo valor de campo básico na solicitação. Os campos básicos incluem parâmetros como
machineType
ename
. - Se você modificar um campo repetido, todos os valores repetidos para essa propriedade serão substituídos pelos valores correspondentes fornecidos na solicitação.
Geralmente, campos repetidos são propriedades do tipo
list
. Por exemplo,disks
enetworkInterfaces
são campos repetidos. - Se você substituir um
nested object
, o objeto na imagem da máquina será mesclado com a especificação do objeto correspondente na solicitação. Se um objeto aninhado estiver em um campo repetido, o campo será tratado de acordo com as regras de campos repetidos. Os rótulos são uma exceção a essa regra e são tratados como um campo repetido, mesmo que sejam do tipoobject
. Conceda acesso às imagens de máquina armazenadas em um projeto diferente.
As permissões podem ser concedidas no projeto de origem ou na imagem da máquina. Use o comando
gcloud compute machine-images add-iam-policy-binding
para conceder as permissões na imagem de máquina.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
Substitua:
MACHINE_IMAGE_PROJECT
: o ID do projeto que contém a imagem de máquina de origem.MACHINE_IMAGE_NAME
: o nome da imagem de máquina a que você quer adicionar a vinculação de permissão.ACCOUNT_EMAIL
: o endereço de e-mail deserviceAccount
ouuser
que está criando a VM. Verifique se o e-mail está formatado para incluir o prefixo necessário. O prefixo precisa ser um dos seguintes:user:
especifique isso se o endereço de e-mail estiver associado a uma conta de usuário. Por exemplo,user:user@example.com
.serviceAccount:
especifique isso se o endereço de e-mail estiver associado a uma conta de serviço. Por exemplo,serviceAccount:123456789000-compute@developer.gserviceaccount.com
.
Exemplo
Por exemplo, para adicionar uma vinculação
compute.admin
à imagem de máquina chamadamy-machine-image
ao e-mail da conta de serviço123456789000-compute@developer.gserviceaccount.com
, use o seguinte comando dagcloud
:gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
Conceda ao usuário que executa o comando
gcloud compute instances create
o papel "Usuário da conta de serviço" (roles/iam.serviceAccountUser
) na conta de serviço associada à imagem da máquina.Use o comando
gcloud compute instances create
para criar uma VM a partir de uma imagem de máquina.gcloud compute instances create VM_NAME \ --project=VM_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
Substitua:
VM_PROJECT_ID
: o ID do projeto em que a VM será criada.VM_NAME
: o nome da VM a ser criadaZONE
: a zona para a VMMACHINE_IMAGE_PROJECT
: o ID do projeto em que a imagem da máquina está localizadaMACHINE_IMAGE_NAME
: a imagem de máquina a partir da qual a VM será criadaSERVICE_ACCOUNT_EMAIL
: o endereço de e-mail da conta de serviço que você quer anexar à VMSUBNET
: se a sub-rede e a instância estiverem no mesmo projeto, substitua SUBNET pelo nome de uma sub-rede que esteja na mesma região da instânciaPara especificar uma sub-rede em uma rede VPC compartilhada, substitua
SUBNET
por uma string no seguinte formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Substitua:
HOST_PROJECT_ID
: o ID do projeto do projeto host da VPC compartilhadaREGION
: a região da sub-redeSUBNET_NAME
: o nome da sub-rede
Exemplo
Por exemplo, o comando a seguir cria uma VM chamada
my-instance
emvm-project
, na zonaus-east1-b
, de uma imagem de máquina chamadamy-machine-image
.A sinalização
--service-account
especifica a conta de serviço que você quer anexar à VM recém-criada. Se você não fornecer essa sinalização, a conta de serviço de origem não poderá ser compartilhada entre os projetos e a operação falhará.gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
Após a criação da VM, a saída será assim:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
- Saiba mais sobre imagens de máquinas.
- Saiba mais sobre Como criar instâncias de VMs.
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.
Restrições
As restrições a seguir se aplicam quando você cria VMs a partir de imagens de máquina:
Criar uma VM a partir de uma imagem de máquina (sem substituição)
Se você quiser criar uma VM totalmente baseada na imagem de máquina, sem alterações nas propriedades, use este método.
Console
gcloud
Use o comando
gcloud compute instances create
para criar uma instância a partir de uma imagem de máquina.gcloud compute instances create VM_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Substitua:
Exemplo
Por exemplo, é possível usar o seguinte comando
gcloud
para criar uma VM chamadamy-instance
na zonaus-east1-b
a partir de uma imagem de máquina chamadamy-machine-image
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Após a criação da VM, a saída será assim:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
Na API, crie uma solicitação
POST
para o métodoinstances.insert
. No corpo da solicitação, inclua os parâmetros a seguir:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Substitua:
Criar uma VM a partir de uma imagem de máquina com substituições de propriedades
Se você quiser criar uma VM baseada principalmente na imagem de máquina, mas com algumas alterações, será possível usar o comportamento de substituição. Para usar esse comportamento, você especifica atributos para modificar as propriedades atuais da imagem de máquina ao criar a instância.
Ao usar o recurso de modificação, considere as observações a seguir:
Console
gcloud
Use o comando
gcloud compute instances create
para criar uma instância a partir de uma imagem de máquina e adicionar as propriedades que você quer substituir.Por exemplo, é possível usar o seguinte comando
gcloud
para criar uma VM chamadamy-instance
na zonaus-east1-b
a partir de uma imagem de máquina chamadamy-machine-image
. Neste exemplo, as modificações são aplicadas para alterar o tipo de máquina, interromper a política de manutenção do host e configurar um disco permanente regional com o nomeregional-disk-0
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
Para substituir as propriedades da imagem de máquina durante a criação da VM, use a API
instances.insert()
e forneça os campos que você quer substituir no corpo da solicitação.Na API, crie uma solicitação
POST
para o métodoinstances.insert
. No corpo da solicitação, inclua o parâmetrosourceMachineImage
e todas as modificações necessárias. É possível adicionar qualquer propriedade que você costuma definir durante a criação da instância. Por exemplo, para alterar o tipo de máquina, sua chamada de API incluirá o parâmetromachineType
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Substitua:
Comportamento de modificação
O comportamento de modificação na API segue as regras de patch de mesclagem JSON descritas na RFC 7396 (em inglês). Resumidamente, são aplicáveis as seguintes regras:
Por exemplo, se você quiser criar uma VM a partir de uma imagem de máquina e criar discos permanentes regionais com a VM, use uma modificação para os discos para que você possa especificar a opção
replicaZones
. Como o campodisks
é um campo repetido, é preciso especificar a configuração do disco para todos os discos anexados e o disco de inicialização, não apenas os discos regionais.POST /compute/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
Criar uma VM usando uma imagem de máquina de um projeto diferente
Ao criar uma VM usando uma imagem de máquina de um projeto diferente, talvez você não tenha acesso à conta de serviço anexada a esse projeto de origem. Se você quiser criar uma VM de uma imagem de máquina localizada em um projeto diferente, será necessário garantir que você tenha acesso à imagem da máquina e modificar a propriedade da conta de serviço na nova VM.
Se você compartilhar uma imagem de máquina em projetos que usam uma rede VPC compartilhada, especifique explicitamente os detalhes da VPC compartilhada ao criar uma VM com base na imagem de máquina. Por exemplo, ao criar uma VM em um projeto que não é host, forneça os detalhes da VPC compartilhada do projeto host usando as opções
--network
,--subnet
ou--network-interface
.As seções a seguir descrevem como criar uma VM a partir de uma imagem de máquina localizada em um projeto diferente usando a CLI do Google Cloud.
A seguir
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-11-24 UTC.
-