Como criar, excluir e suspender o uso de imagens personalizadas

É possível criar imagens personalizadas com base em discos, imagens, snapshots ou imagens de origem armazenados no Cloud Storage. É possível usar essas imagens para criar instâncias de máquina virtual (VM, na sigla em inglês). Isso é ideal para situações em que você criou e modificou um disco de inicialização permanente para determinado estado e precisa salvar esse estado para criar instâncias.

Também é possível usar a ferramenta de importação de disco virtual para importar imagens do disco de inicialização dos sistemas atuais para o Compute Engine e adicioná-las à lista de imagens personalizadas.

Antes de começar

Como criar uma imagem personalizada

Com estas instruções, aprenda a criar uma imagem personalizada em uma instância do Linux. Para instruções sobre como criar uma imagem do Windows, consulte Como criar uma imagem do Windows.

Use as permissões do Cloud Identity and Access Management (Cloud IAM) para compartilhar imagens com outros projetos.

Como selecionar um local de armazenamento de imagens

Ao criar uma imagem personalizada, especifique o local da imagem no Cloud Storage, excluindo os locais birregionais. Ao especificar o local de armazenamento de imagens, você tem como atender aos seus requisitos normativos e de conformidade referentes a localidade de dados, bem como suas necessidades de alta disponibilidade, garantindo redundância entre regiões.

O recurso de local de armazenamento é opcional. Se um local não for selecionado, o Compute Engine armazenará a imagem na multirregião mais próxima da origem da imagem.

Para ver o local onde uma imagem está armazenada, use o comando images describe (em inglês) de gcloud beta compute:

gcloud beta compute images describe [IMAGE_NAME] --project [PROJECT]

⋮
storageLocations:
- us-central1

Todas as imagens que já existiam antes do lançamento desse recurso permanecem onde estão. A única alteração é que o local de todas as imagens pode ser visualizado. Se você tiver uma imagem atual que queira mover, recrie-a no local desejado.

Como preparar sua instância para uma imagem

Crie uma imagem de um disco mesmo com ele anexado a uma instância de VM em execução. No entanto, a imagem torna-se mais confiável se você a coloca em um estado mais fácil para a captura da imagem. Use um dos seguintes processos para preparar o disco de inicialização da imagem:

  • Pare a instância para que ela possa ser encerrada e parar de gravar dados no disco permanente.

  • Se não for possível parar a instância antes de criar a imagem, minimize a quantidade de gravações no disco e sincronize o sistema de arquivos.

    1. Pause os aplicativos ou processos do sistema operacional que gravam dados nesse disco permanente.
    2. Execute uma limpeza de aplicativo no disco, se necessário. Por exemplo, o MySQL tem uma instrução FLUSH (em inglês). Outros aplicativos talvez usem processos semelhantes.
    3. Pare os aplicativos para que não gravem mais dados no disco permanente.
    4. Execute sudo sync.

Depois de preparar a instância, crie a imagem.

Como criar a imagem

Crie imagens de disco com base nas seguintes origens:

  • Um disco permanente, mesmo que esteja anexado a uma instância
  • Um snapshot de um disco permanente
  • Outra imagem no projeto
  • Uma imagem compartilhada de outro projeto
  • Uma imagem RAW compactada no Cloud Storage

Console

  1. No Console do Google Cloud Platform, acesse a página Criar uma imagem.
    Acessar a página "Criar uma imagem"
  2. Especifique o Nome da imagem.
  3. Especifique a Origem da qual você quer criar uma imagem. Pode ser um disco permanente, um snapshot, outra imagem ou um arquivo disk.raw no Google Cloud Storage.
  4. Especifique o Local onde armazenar a imagem. Escolha o local de armazenamento da imagem na lista suspensa Com base na localização do disco de origem (padrão). Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem.
  5. Especifique as propriedades da imagem. Por exemplo, especifique um nome de família para incluí-la como parte de uma família de imagens.
  6. Clique em Criar para criar a imagem.

gcloud

Na ferramenta de linha de comando gcloud, use o comando gcloud compute beta images create (em inglês) para criar uma imagem personalizada. A tag beta é obrigatória para a sinalização --storage-location opcional.

Criar uma imagem de um disco de origem:

gcloud beta compute images create [IMAGE_NAME] \
  --source-disk [SOURCE_DISK] \
  --source-disk-zone [ZONE] \
  --family [IMAGE_FAMILY] \
  --storage-location [LOCATION] \
  --force

em que:

  • [IMAGE_NAME] é um nome para a nova imagem;
  • [SOURCE_DISK] é o disco do qual você quer criar a imagem;
  • [ZONE] é a zona onde o disco está localizado;
  • [IMAGE_FAMILY] é uma sinalização opcional que especifica a que família de imagens essa imagem pertence;
  • [LOCATION] é uma sinalização opcional que permite designar a região ou a multirregião em que a imagem será armazenada. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem;
  • [--force] é uma sinalização opcional que permite criar a imagem de uma instância em execução. Por padrão, não é possível criar imagens de instâncias em execução. Especifique essa sinalização apenas se tiver certeza de que quer criar a imagem enquanto a instância está sendo executada.

Criar uma imagem de uma imagem de origem:

gcloud beta compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --family [IMAGE_FAMILY] \
  --storage-location [LOCATION]

em que:

  • [IMAGE_NAME] é um nome para a nova imagem;
  • [SOURCE_IMAGE] é a imagem da qual você quer criar a nova imagem;
  • [IMAGE_PROJECT] é um parâmetro opcional que especifica em que projeto a imagem de origem está localizada. Use esse parâmetro para copiar uma imagem de outro projeto;
  • [IMAGE_FAMILY] é uma sinalização opcional que especifica a que família de imagens a nova imagem pertence;
  • [LOCATION] é uma sinalização opcional que permite designar a região ou a multirregião em que a imagem será armazenada. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem.

Criar uma imagem de um snapshot:

gcloud beta compute images create [IMAGE_NAME] \
  --source-snapshot [SOURCE_SNAPSHOT] \
  --storage-location [LOCATION]

em que:

  • [IMAGE_NAME] é um nome para a nova imagem;
  • [SOURCE_SNAPSHOT] é o snapshot do qual você quer criar a imagem;
  • [LOCATION] é uma sinalização opcional que permite designar a região ou a multirregião em que a imagem será armazenada. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem.

Ver o local de uma imagem:

Use o comando gcloud beta compute images describe (em inglês) para ver o local de uma imagem. A tag beta é obrigatória para ver o local de armazenamento da imagem.

gcloud beta compute images describe [IMAGE_NAME]

em que [IMAGE_NAME] é o nome da imagem que você quer descrever.

API

Faça uma solicitação POST para o método images().insert (em inglês), um URL no corpo da solicitação que aponta para o objeto de origem do qual você quer criar a imagem. Especifique URLs para seus recursos usando o próprio ID do projeto e nomes de recursos. Use a versão beta desse método para especificar o parâmetro storageLocations.

Criar uma imagem de um disco permanente:

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceDisk": "/zones/[ZONE]/disks/[SOURCE_DISK]",
  "storageLocations": "[LOCATION]",
  "forceCreate": "[FORCE_CREATE]"
}

em que:

  • [PROJECT_ID] é o projeto a que a imagem pertence;
  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [ZONE] é a zona onde o disco de origem está localizado;
  • [SOURCE_DISK] é o disco do qual você quer criar a imagem;
  • [LOCATION] é um parâmetro opcional que permite selecionar o local de armazenamento da imagem. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem;
  • [FORCE_CREATE] é um parâmetro opcional que permite criar a imagem de uma instância em execução. Especifique TRUE apenas se tiver certeza de que quer criar a imagem de uma instância em execução. O valor padrão se você não especificar esse parâmetro é FALSE.

Criar uma imagem de outra imagem:

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceImage": "/global/images/[SOURCE_IMAGE]",
  "storageLocations": "[LOCATION]"
}

em que:

  • [PROJECT_ID] é o projeto a que a imagem pertence;
  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [SOURCE_IMAGE] é a imagem da qual você quer criar a imagem;
  • [LOCATION] é um parâmetro opcional que permite selecionar o local de armazenamento da imagem. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem.

Criar uma imagem de um snapshot:

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceSnapshot": "/[SOURCE_PROJECT_ID]/global/snapshots/[SOURCE_SNAPSHOT]",
  "storageLocations": "[LOCATION]"
}

em que:

  • [PROJECT_ID] é o projeto a que a imagem pertence;
  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [SOURCE_SNAPSHOT] é o snapshot do qual você quer criar a imagem;
  • [SOURCE_PROJECT_ID] é uma variável opcional que especifica em que projeto o snapshot está localizado. É necessário ter permissão para acessar o recurso de snapshot nesse projeto;
  • [LOCATION] é um parâmetro opcional que permite selecionar o local de armazenamento da imagem. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem.

Para mais informações sobre como adicionar imagens, consulte a referência de imagens (em inglês).

Como suspender o uso de uma imagem

O Compute Engine permite suspender o uso de uma imagem personalizada de sua propriedade definindo o status de suspensão de uso dela. Cada status de suspensão de uso gera uma resposta diferente do servidor, o que facilita a transição dos usuários das imagens não compatíveis de uma maneira gerenciável. Use o console, o comando gcloud ou o método da API Compute Engine para suspender o uso de uma imagem.

Console

  1. No Console do Google Cloud Platform, acesse a página "Criar uma imagem".
    Acessar a página "Criar uma imagem"
  2. Marque a caixa à esquerda da imagem que você quer suspender o uso.
  3. Clique em Suspender o uso na parte superior da página. O uso da imagem será suspenso.

gcloud

Use o comando gcloud compute images deprecate para definir o status de suspensão de uso de uma imagem.

gcloud compute images deprecate [IMAGE_NAME] \
    --state [STATE] \
    --replacement [REPLACEMENT]

em que [IMAGE_NAME] é o nome da imagem em questão.

O estado da suspensão de uso pode ser:

  • DEPRECATED: o uso desta imagem é considerado suspenso. Quando os usuários tentam usá-la, a solicitação é feita, mas o Compute Engine também retorna um aviso. Novos links para essa imagem ainda são permitidos. As famílias de imagens não apontam mais para essa imagem, mesmo que ela seja a mais recente da família.
  • OBSOLETE: o uso desta imagem foi suspenso e os novos usuários não podem usá-la. O Compute Engine retornará um erro se os usuários tentarem usar a imagem nas solicitações. Links atuais para essa imagem ainda são permitidos.
  • DELETED: esta imagem foi excluída e os usuários não podem usá-la. O Compute Engine retornará um erro se os usuários tentarem usá-la.

API

Faça uma solicitação POST ao método images().deprecate. Especifique o nome da imagem que você quer suspender o uso.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[RESOURCE_ID]/deprecate

{
  "deprecated": "[IMAGE_NAME]",
  "replacement": "[REPLACEMENT]"
}

em que:

  • [PROJECT_ID] é o projeto a que a imagem pertence;
  • [IMAGE_NAME] é a imagem que você está suspendendo o uso;
  • [REPLACEMENT] a imagem para substituir a que teve o uso suspenso.

Como excluir uma imagem

Somente é possível excluir imagens personalizadas que foram adicionadas por você ou alguém que tenha acesso ao projeto. Use o console, o comando gcloud ou o método da API Compute Engine para excluir a imagem.

Console

  1. No Console do Google Cloud Platform, acesse a página "Criar uma imagem".
    Acessar a página "Criar uma imagem"
  2. Marque a caixa à esquerda da imagem que você quer excluir.
  3. Clique em Excluir na parte superior da página. A imagem será excluída.

gcloud

Use o comando gcloud compute images delete (em inglês) para excluir uma imagem.

gcloud compute images delete [IMAGE_NAME]

em que [IMAGE_NAME] é o nome da imagem a ser excluída.

API

Faça uma solicitação POST para o método images().delete (em inglês). Especifique o nome da imagem que você quer excluir.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[RESOURCE_ID]

em que:

  • [PROJECT_ID] é o projeto a que a imagem pertence;
  • [RESOURCE_ID] é um nome da imagem que você quer excluir.

Como definir versões em uma família de imagens

Use as famílias de imagens para simplificar a criação de versões de imagens. Adicione uma imagem a uma família para defini-la como a versão mais recente. Se você determinar que é preciso reverter a família para uma versão anterior da imagem, suspenda o uso da imagem mais recente da família.

Se preferir, especifique o local de armazenamento da imagem, usando o console, o comando gcloud beta compute images create (em inglês) com a sinalização --storageLocation ou o método da API betaimages().insert.

Por exemplo, crie uma imagem chamada image-v1 como parte de uma família.

Console

  1. No Console do Google Cloud Platform, acesse a página "Criar uma imagem".
    Acessar a página "Criar uma imagem"
  2. Especifique o Nome da imagem.
  3. Especifique a origem da qual você quer criar uma imagem. Pode ser um disco permanente, um snapshot, outra imagem ou um arquivo disk.raw no Google Cloud Storage.
  4. Especifique o local em que você armazenará sua imagem. Escolha o local de armazenamento da imagem no menu suspenso Com base na localização do disco de origem (padrão). Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem.

  5. Especifique as propriedades da imagem. Por exemplo, é possível especificar o nome da família my-image-family para que sua imagem organize essa imagem como parte de uma família de imagens.

  6. Se você está criando uma imagem de um disco anexado a uma imagem em execução, marque "Forçar criação de instâncias em execução" para confirmar que quer criar a imagem durante a execução da instância.

  7. Clique em Criar para criar a imagem.

gcloud

gcloud compute images create image-v1 \
    --source-disk disk-1 \
    --source-disk-zone us-central1-f \
    --family my-image-family \

A família de imagens aponta para image-v1. Adicione uma segunda imagem à família:

gcloud compute images create image-v2 \
    --source-disk disk-2 \
    --source-disk-zone us-central1-f \
    --family my-image-family \

API

Faça uma solicitação POST ao método images().insert. Especifique a família de imagens no corpo da solicitação.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "image-v2",
  "sourceDisk": "/zones/us-central1-f/disks/disk-2",
  "family":"my-image-family",

}

A família de imagens aponta para image-v2 porque é a imagem mais recente que você adicionou à família.

gcloud

Execute o comando gcloud compute images describe-from-family (em inglês) para ver a que imagem uma família aponta.

Por exemplo:

gcloud beta compute images describe-from-family my-image-family

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v2
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

API

Faça uma solicitação GET ao método images().getFromFamily. Especifique a família de imagens no corpo da solicitação.

GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/family

{
  "resourceId":"my-image-family",

}

Se você determinar que precisa reverter a família de imagens para que ela não aponte mais para image-v2, suspenda o uso de . Desse modo, a família apontará novamente para image-v1.

gcloud compute images deprecate image-v2 \
    --state DEPRECATED \
    --replacement image-v1

Verifique se a família de imagens está apontando para image-v1.

gcloud beta compute images describe-from-family my-image-family

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v1
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

Como ativar os recursos do sistema operacional convidado nas imagens personalizadas

É possível definir o parâmetro guestOsFeatures ao criar uma imagem personalizada. Esse parâmetro ativa um ou mais recursos nas instâncias de VM que usam a imagem para os discos de inicialização. Os recursos a seguir estão disponíveis:

  • MULTI_IP_SUBNET: para configurar interfaces com uma máscara de rede diferente de /32.
  • SECURE_BOOT: ativa a opção de inicialização segura UEFI, que impede a inicialização de software não assinado ou o carregamento de drivers não assinados na instância de VM. Depois de definir esse parâmetro, ative o recurso de inicialização segura durante a criação da instância de VM.
  • UEFI_COMPATIBLE: ativa a inicialização com o firmware UEFI.
  • VIRTIO_SCSI_MULTIQUEUE: ativa os recursos de SCSI multifilas para dispositivos SSD locais. Essa opção é uma alternativa ao NVMe.
    • Para imagens do Linux, é possível ativar VIRTIO_SCSI_MULTIQUEUE nas imagens com versões de kernel 3.17 e posteriores.
    • Para imagens do Windows, é possível ativar VIRTIO_SCSI_MULTIQUEUE nas imagens com versão do driver 1.2.0.1621 (em inglês) ou posterior.
  • WINDOWS: necessário para imagens do Windows Server. As imagens públicas mais recentes do Windows Server incluem o parâmetro WINDOWS para indicar que se trata de uma imagem do Windows.

Use a ferramenta de linha de comando gcloud ou a API para ativar os recursos do sistema operacional convidado nas imagens personalizadas.

gcloud

Use o comando gcloud compute images create para criar uma imagem personalizada com base em uma das suas imagens personalizadas atuais, mas também inclua a sinalização --guest-os-features. Use o comando gcloud compute beta images create para incluir a sinalização --storage-location opcional.

gcloud beta compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --guest-os-features="[FEATURE_ID],..." \
  --storage-location [LOCATION]

em que:

  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [SOURCE_IMAGE] é a imagem da qual você quer criar a imagem;
  • [IMAGE_PROJECT] é um parâmetro opcional que especifica em que projeto a imagem de origem está localizada. Use esse parâmetro para copiar uma imagem de outro projeto;
  • [FEATURE_ID] é o ID de um dos recursos disponíveis do SO convidado. É possível especificar vários recursos como uma lista separada por vírgulas;
  • [LOCATION] é uma sinalização opcional que permite designar a região ou a multirregião em que a imagem será armazenada. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem.

API

Faça uma solicitação POST para o método images().insert (em inglês), um URL no corpo da solicitação que aponta para o objeto de origem do qual você quer criar a imagem. Substitua o projeto e a zona pelo seu próprio ID do projeto e pela zona do disco permanente. Use o método da API beta com essa solicitação para ver o parâmetro storageLocations.

Criar uma imagem de um disco permanente:

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
 "name": "[IMAGE_NAME]",
 "sourceImage": "projects/[IMAGE_PROJECT]/global/images/[SOURCE_IMAGE]",
 "storageLocations": "[LOCATION]",
 "guestOsFeatures": [
  {
   "type": "[FEATURE_ID]"
  }
 ]
}

em que:

  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [SOURCE_IMAGE] é a imagem da qual você quer criar a imagem;
  • [IMAGE_PROJECT] é um parâmetro que especifica o projeto em que a imagem de origem está localizada;
  • [LOCATION] é um parâmetro opcional que permite selecionar o local de armazenamento da imagem. Por exemplo, especifique us para armazenar a imagem na multirregião us ou us-central1 para armazená-la na região us-central1. Se você não fizer uma seleção, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem da imagem;
  • [FEATURE_ID] é o ID de um dos recursos disponíveis do SO convidado. É possível especificar vários recursos como uma lista separada por vírgulas.

Para mais informações sobre como adicionar imagens, consulte a referência de imagens (em inglês).

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine