Use uma imagem de máquina para armazenar toda a configuração, metadados, permissões e dados de vários discos para uma instância do Compute Engine. A instância usada para criar uma imagem de máquina é chamada de instância de origem.
Para informações sobre quando e como usar imagens de máquina, consulte Imagens de máquina.
Neste documento, descrevemos as etapas para criar uma imagem de máquina com base em uma instância de origem.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Cloud de Confiance para acessar serviços Cloud de Confiance by S3NS e APIs, não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
Limitações e restrições
- É possível criar uma imagem de máquina de uma instância específica no máximo seis vezes a cada 60 minutos.
- É possível proteger uma imagem de máquina usando o Cloud Key Management Service (Cloud KMS) ou uma chave de criptografia fornecida pelo cliente (CSEK, na sigla em inglês). A chave de criptografia protege o conteúdo dos discos. No entanto, os metadados não são protegidos.
- Se você usar uma CSEK para proteger a imagem de máquina, uma cópia completa de todos os dados do disco será armazenada durante a geração dessa imagem. Nos outros casos, os dados do disco são armazenados em cópias diferenciais.
Não é possível criar imagens de máquina de instâncias de origem do Compute Engine que:
- Ter discos anexados com uma capacidade combinada superior a 200 TiB.
- Não há discos anexados.
- Ter volumes do Hyperdisk anexados.
- Use o tipo de máquina Z3, exceto
z3-highmem-192-highlssd-metal. - Use um tipo de máquina C3D, H3 ou A3.
Para instâncias que não oferecem suporte à criação de imagens de máquina, crie uma imagem do SO com base no disco de inicialização da instância, conforme descrito em Criar imagens personalizadas.
Não é possível especificar discos para incluir e excluir ao mesmo tempo.
Propriedades de instância e disco não compatíveis com a imagem de máquina
Quando você cria imagens de máquina a partir de instâncias ou cria instâncias a partir de imagens de máquina, as seguintes propriedades de instância e disco não são preservadas ou restauradas:
disks.architecturedisks.descriptiondisks.labelsdisks.lockeddisks.multiWriterdisks.onUpdateActiondisks.provisionedIopsdisks.shieldedInstanceInitialStatedisks.sourceImagedisks.sourceImageEncryptionKeydisks.sourceInstantSnapshotdisks.sourceSnapshotdisks.sourceSnapshotEncryptionKeyprivateIpv6GoogleAccessresourceManagerTagsresourcePoliciessecure_tagshieldedInstanceConfig
Criar uma imagem de máquina de uma instância
Por padrão, uma imagem de máquina inclui o disco de inicialização e todos os outros discos anexados à instância de origem do Compute Engine. Você pode especificar quais discos que não são de inicialização incluir ou excluir, mas não é possível excluir o disco de inicialização.
Crie uma imagem de máquina de uma instância e inclua todos os discos anexados
É possível criar imagens de máquina usando o console doCloud de Confiance , a Google Cloud CLI ou REST.
Para criar uma imagem de máquina, você precisa das seguintes informações:
- um nome para a imagem de máquina que você quer criar;
- o nome da instância de origem;
- a zona em que a instância de origem está localizada;
- uma descrição opcional;
- um
storageLocation(em inglês) opcional; Se você não especificar um local, o local de armazenamento padrão será o local multirregional do Cloud Storage da instância de origem. - uma chave de criptografia opcional. É possível escolher entre um Google Cloud-powered encryption key, uma chave do Cloud Key Management Service (Cloud KMS) ou uma chave de criptografia fornecida pelo cliente (CSEK). Se nenhuma chave de criptografia for especificada, as imagens de máquina serão criptografadas usando uma Google Cloud-powered encryption key.
Se você quiser usar uma imagem de máquina para clonar e capturar snapshots de uma instância, você precisará remover as informações de SO e do app exclusivas dela antes de gerar a imagem de máquina usando uma instância. Por exemplo, para instâncias de VM do Windows, use
GCESysprepa fim de preparar o sistema para a replicação.
Console
No console do Cloud de Confiance , acesse a página Imagens de máquina.
Clique em Criar imagem de máquina.
Especifique um Nome para sua imagem de máquina.
Opcional: forneça uma Descrição.
Selecione a instância da VM de origem.
Opcional: especifique onde armazenar a imagem de máquina. Escolha entre armazenamento multirregional ou regional. Para mais informações sobre o local, consulte Local de armazenamento de imagens de máquina.
Opcional: selecione um método de Criptografia.
Clique em Criar.
gcloud
Use o comando gcloud compute machine-images create para criar uma imagem de máquina usando uma instância.
gcloud compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME
Substitua:
MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer criar.SOURCE_INSTANCE_NAME: nome da instância de origem de que você quer criar a imagem.
Exemplo
É possível usar o comando gcloud a seguir para criar uma imagem de máquina chamada my-machine-image a partir de uma instância de origem chamada my-instance:
gcloud compute machine-images create my-machine-image \
--source-instance=my-instance
O processo leva alguns minutos. Quando a imagem de máquina é criada, você recebe uma saída semelhante a esta:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image]. NAME STATUS my-machine-image READY
REST
Na API, crie uma solicitação POST para o método machineimages.insert. No corpo da solicitação, inclua esta solicitação POST:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL"
}
Substitua:
PROJECT_ID: ID do projeto.MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer criar.SOURCE_INSTANCE_URL: URL completo ou parcial da instância de origem que você quer usar para criar a imagem de máquina. Por exemplo, se você tiver uma instância de origem chamadamy-instanceem um projeto chamadomyProject. Os seguintes URLs serão válidos:https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instanceprojects/myProject/global/instances/my-instanceglobal/instances/my-instance
Criar uma imagem de máquina e incluir discos específicos (prévia)
É possível usar o backup seletivo de disco para criar uma imagem de máquina que inclua ou exclua discos específicos que não sejam de inicialização.
Com os backups seletivos de disco, é possível realizar as seguintes tarefas ao criar uma imagem de máquina:
Incluir discos específicos que não são de inicialização: é possível criar uma imagem de máquina que faz backup apenas do disco de inicialização e de uma lista específica de discos que não são de inicialização fornecida por você.
Excluir discos específicos que não são de inicialização: é possível criar uma imagem de máquina que faça backup do disco de inicialização e de todos os discos anexados que não são de inicialização, exceto aqueles especificados em uma lista de exclusão.
Práticas recomendadas para instâncias do Linux
Para instâncias do Linux, recomendamos as seguintes práticas recomendadas:
Ao criar uma imagem de máquina que exclui discos específicos não de inicialização ou os omite usando uma lista de inclusão, verifique se o arquivo
/etc/fstabnas instâncias de origem do Compute Engine no Linux usa a opçãonofailpara esses discos. Isso evita que a instância restaurada do Compute Engine não seja inicializada se um disco esperado estiver faltando.Durante o processo de inicialização de uma instância do Compute Engine restaurada de uma imagem de máquina, o sistema operacional tenta montar todos os discos listados em
/etc/fstab. Se um disco esperado estiver faltando e a opçãonofailnão for especificada, o processo de inicialização será interrompido, e a instância não poderá ser inicializada. Como solução alternativa para lidar com falhas de inicialização, consulte Soluções alternativas para falhas de inicialização causadas pela exclusão de discos específicos.
Incluir apenas discos específicos
Use as instruções a seguir para criar uma imagem de máquina apenas com discos específicos. É preciso sempre incluir o disco de inicialização. Não é possível criar uma imagem de máquina apenas de discos específicos usando o console do Cloud de Confiance . Use a Google Cloud CLI ou REST.
CLI do Google Cloud
Use o comando gcloud beta compute machine-images create para criar uma imagem de máquina usando apenas discos específicos.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--include-disks=BOOT_DISK,DISK_NAME_1,DISK_NAME_2
Substitua:
MACHINE_IMAGE_NAME: o nome da imagem de máquina que você quer criar.SOURCE_INSTANCE_NAME: o nome da instância de origem que você quer usar para criar a imagem.ZONE: a zona em que a instância de origem está localizada.BOOT_DISK, DISK_NAME_1,DISK_NAME_2: uma lista separada por vírgulas do disco de inicialização e dos discos que não são de inicialização anexados à instância de origem que você quer incluir na imagem de máquina.
Por exemplo, é possível usar o comando gcloud a seguir para criar uma imagem de máquina chamada my-gmi-include a partir de uma instância de origem chamada my-instance localizada em us-central1-a, incluindo apenas data-disk-1 e data-disk-2:
gcloud beta compute machine-images create my-gmi-include \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--include-disks=boot-disk,data-disk-1,data-disk-2
REST
Na API, crie uma solicitação POST para o método machineimages.insert. No corpo da solicitação, inclua esta solicitação POST:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"includedDisks": ["BOOT_DISK", "DISK_NAME_1", "DISK_NAME_2"]
}
}
Substitua:
PROJECT_ID: ID do projeto que contém a imagem da máquina, por exemplo,my-project.MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer criar.SOURCE_INSTANCE_URL: URL completo ou parcial da instância de origem que você quer usar para criar a imagem de máquina.BOOT_DISK, DISK_NAME_1, DISK_NAME_2: lista do disco de inicialização e dos discos que não são de inicialização anexados à instância de origem que você quer incluir na imagem de máquina.
Criar uma imagem de máquina e excluir discos específicos (prévia)
Use as instruções a seguir para criar uma imagem de máquina e excluir discos específicos do backup. Não é possível excluir o disco de inicialização. Não é possível criar uma imagem de máquina e excluir discos específicos usando o console do Cloud de Confiance . É possível usar a Google Cloud CLI ou REST.
gcloud
Use o comando
gcloud beta compute machine-images create
para criar uma imagem de máquina e excluir discos específicos.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--exclude-disks=DISK_NAME_1,DISK_NAME_2
Substitua:
MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer criar.SOURCE_INSTANCE_NAME: nome da instância de origem de que você quer criar a imagem.ZONE: a zona em que a instância de origem está localizada.DISK_NAME_1,DISK_NAME_2: lista separada por vírgulas dos discos que não são de inicialização anexados à instância de origem que você quer excluir da imagem de máquina.
Exemplo
Por exemplo, é possível usar o comando gcloud a seguir para criar uma imagem de máquina chamada my-gmi-exclude a partir de uma instância de origem chamada my-instance localizada em us-central1-a, excluindo temp-disk-1 e scratch-disk:
gcloud beta compute machine-images create my-gmi-exclude \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--exclude-disks=temp-disk-1,scratch-disk
REST
Na API, crie uma solicitação POST para o método machineimages.insert. No corpo da solicitação, inclua esta solicitação POST:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"excludedDisks": ["DISK_NAME_1", "DISK_NAME_2"]
}
}
Substitua:
PROJECT_ID: ID do projeto que contém a imagem de máquina.MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer criar.SOURCE_INSTANCE_URL: URL completo ou parcial da instância de origem que você quer usar para criar a imagem de máquina.DISK_NAME_1, DISK_NAME_2: lista dos discos que não são de inicialização anexados à instância de origem que você quer excluir da imagem de máquina.
Soluções alternativas para falhas de inicialização causadas pela exclusão de discos específicos
Se você criar uma instância de uma imagem de máquina em que um disco excluído causa uma falha de inicialização, recupere a instância usando uma das seguintes soluções alternativas:
Conecte-se ao console serial: ative e conecte-se ao console serial interativo da instância do Compute Engine que não pode ser inicializada. Faça login para resolver o problema e edite o arquivo
/etc/fstabdiretamente para remover a entrada de disco ausente ou adicionar a opçãonofail.Troca de disco: se uma instância do Compute Engine não for inicializada porque um disco foi excluído da imagem de máquina, mas ainda está listado em
/etc/fstabsem a opçãonofail, use as instruções a seguir para corrigir a configuração usando a Google Cloud CLI.Interrompa a instância não inicializável do Compute Engine usando o comando
gcloud compute instances stop:gcloud compute instances stop UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Substitua:
UNBOOTABLE_INSTANCE_NAME: nome da instância do Compute Engine que não pode ser inicializada.ZONE: zona em que as instâncias do Compute Engine estão localizadas.
Remova o disco de inicialização usando o comando
gcloud compute instances detach-disk:gcloud compute instances detach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Substitua:
UNBOOTABLE_INSTANCE_NAME: nome da instância do Compute Engine que não pode ser inicializada.BOOT_DISK_NAME: nome do disco de inicialização anexado à instância não inicializável do Compute Engine.ZONE: zona em que as instâncias do Compute Engine estão localizadas.
Anexe o disco como um disco secundário a outra instância do Compute Engine em funcionamento usando o comando
gcloud compute instances attach-disk:gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Substitua:
SECONDARY_INSTANCE_NAME: nome da instância secundária de trabalho do Compute Engine usada para reparar o disco.BOOT_DISK_NAME: nome do disco de inicialização anexado à instância não inicializável do Compute Engine.ZONE: zona em que as instâncias do Compute Engine estão localizadas.
Monte o disco e edite o arquivo
/etc/fstabpara corrigir a entrada problemática usando a seguinte sequência de instruções:Conecte-se à instância secundária do Compute Engine usando SSH:
gcloud compute ssh SECONDARY_INSTANCE_NAME \ --zone=ZONE
Substitua:
SECONDARY_INSTANCE_NAME: nome da instância secundária de trabalho do Compute Engine usada para reparar o disco.ZONE: zona em que as instâncias do Compute Engine estão localizadas.
Identifique o disco conectado, geralmente
/dev/sdbou semelhante, usandolsblk:lsblk
Crie um ponto de montagem temporário:
sudo mkdir /mnt/repair
Monte a partição raiz:
sudo mount /dev/DEVICE_PARTITION /mnt/repair
Substitua
DEVICE_PARTITIONpelo nome do dispositivo e o número da partição do disco secundário anexado na instância secundária do Compute Engine (por exemplo,sdb1).Abra o arquivo
fstab.sudo nano /mnt/repair/etc/fstab
Adicione a opção
nofailà entrada do disco ausente ou adicione um comentário à linha inteira adicionando um#no início.Salve e saia.
Desconecte o disco:
sudo umount /mnt/repair
Desanexe o disco da instância secundária do Compute Engine usando o comando
gcloud compute instances detach-disk:gcloud compute instances detach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Substitua:
SECONDARY_INSTANCE_NAME: nome da instância secundária de trabalho do Compute Engine usada para reparar o disco.BOOT_DISK_NAME: nome do disco de inicialização anexado à instância não inicializável do Compute Engine.ZONE: zona em que as instâncias do Compute Engine estão localizadas.
Reconecte o disco como o disco de inicialização à instância original do Compute Engine usando o comando
gcloud compute instances attach-disk:gcloud compute instances attach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --boot \ --zone=ZONE
Substitua:
UNBOOTABLE_INSTANCE_NAME: nome da instância do Compute Engine que não pode ser inicializada.BOOT_DISK_NAME: nome do disco de inicialização anexado à instância não inicializável do Compute Engine.ZONE: zona em que as instâncias do Compute Engine estão localizadas.
Inicie a instância reparada do Compute Engine:
gcloud compute instances start UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Substitua:
UNBOOTABLE_INSTANCE_NAME: nome da instância do Compute Engine que não pode ser inicializada.ZONE: zona em que as instâncias do Compute Engine estão localizadas.
A seguir
- Saiba mais sobre imagens de máquinas.
- Criar instâncias com base em imagens de máquina