Como criar, excluir e suspender o uso de imagens personalizadas

Crie imagens personalizadas de discos de inicialização e use essas imagens para criar novas instâncias. 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 novas 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

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 Criar uma imagem do Windows.

Opcionalmente, use também o Gerenciamento de identidade e acesso (IAM, na sigla em inglês) para compartilhar a imagem com outros projetos .

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 desligar 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 seu sistema de arquivos.

    1. Pause 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. Outros aplicativos talvez usem processos semelhantes.
    3. Interrompa a gravação de dados dos seus aplicativos no disco permanente.
    4. Execute sudo sync.

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

Criar a imagem

Você pode criar imagens de disco a partir das seguintes origens:

  • um disco permanente, mesmo que esteja anexado a uma instância
  • um instantâneo de um disco permanente
  • outra imagem no projeto
  • uma imagem compartilhada de outro projeto
  • uma imagem compactada RAW do Google 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 a origem da qual você quer criar uma imagem. Pode ser um disco permanente, um instantâneo, outra imagem ou um arquivo disk.raw no Google Cloud Storage.
  3. Especifique as propriedades da imagem. Por exemplo, especifique um nome de família para ela a fim de incluí-la como parte de uma família de imagens.
  4. 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 enquanto a instância está sendo executada.
  5. Clique em Criar para criar a imagem.

gcloud

Criar uma imagem a partir de um disco permanente:

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

em que:

  • [IMAGE_NAME] é um nome para a nova imagem;
  • [SOURCE_DISK] é o disco com que você quer criar a nova imagem;
  • [ZONE] é a zona em que o disco está localizado;
  • [IMAGE_FAMILY] é uma sinalização opcional que especifica a que família de imagens essa imagem pertence;
  • [--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 que quer criar a imagem enquanto a instância está sendo executada.

Criar uma imagem de outra imagem:

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

em que:

  • [IMAGE_NAME] é um nome para a nova imagem;
  • [SOURCE_IMAGE] é a imagem com que você quer criar a nova imagem;
  • [IMAGE_PROJECT] é um parâmetro opcional que especifica em qual projeto a imagem de origem está localizada. Use esse parâmetro se quiser copiar uma imagem de outro projeto;
  • [IMAGE_FAMILY] é uma sinalização opcional que especifica a que família de imagens a nova imagem pertence.

Criar uma imagem com um instantâneo:

gcloud compute images create [IMAGE_NAME] \
  --source-snapshot [SOURCE_SNAPSHOT]

em que:

  • [IMAGE_NAME] é um nome para a nova imagem;
  • [SOURCE_SNAPSHOT] é o instantâneo com que você quer criar a imagem.

API

Faça uma solicitação POST ao método images().insert, incluindo um URL no corpo da solicitação que aponta para o objeto de origem de criação da imagem. Especifique URLs para seus recursos usando seu próprio código de projeto e nomes de recursos.

Criar uma imagem a partir de um disco permanente:

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

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

em que:

  • [SOURCE_DISK] é o disco cuja imagem você quer criar;
  • [ZONE] é a zona onde o disco está localizado;
  • [PROJECT_ID] é o projeto a que a imagem pertence;
  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [ZONE] é a zona a que o disco pertence;
  • [FORCE_CREATE] é um parâmetro opcional que permite criar a imagem a partir 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://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

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

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 com que você quer criar a imagem.

Criar uma imagem com um instantâneo:

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

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

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 instantâneo com que você quer criar a imagem;
  • [SOURCE_PROJECT_ID] é uma variável opcional que especifica em qual projeto o instantâneo está localizado. É necessário ter permissão para acessar o recurso de instantâneo nesse projeto.

Para saber mais sobre como adicionar imagens, consulte a referência de imagens.

Suspender o uso de uma imagem

Suspenda o uso de uma imagem personalizada no Google Compute Engine definindo o status de suspensão de uso para essa imagem. 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.

Para definir o status de suspensão de uso de uma imagem, execute o seguinte comando:

gcloud compute images deprecate [IMAGE] --state [STATE] --replacement [REPLACEMENT]

em que [IMAGE] é o nome da imagem que você quer tornar obsoleta.

O estado de suspensão de uso pode ser:

  • DEPRECATED - O uso dessa imagem é considerado suspenso. Quando os usuários tentam usá-la, a solicitação é atendida, mas um aviso é retornado no Google Compute Engine. 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 - Essa imagem é obsoleta e os novos usuários não podem usá-la. Quando eles tentam usá-la nas solicitações, um erro é retornado no Google Compute Engine. Links existentes para essa imagem ainda são permitidos.
  • DELETED - Esta imagem foi excluída e os usuários não podem usá-la. Quando os usuários tentam usá-la, um erro é retornado no Google Compute Engine.

Como excluir uma imagem

Só é possível excluir imagens personalizadas que você ou alguém com acesso ao projeto tenham adicionado. Para excluir uma imagem, execute o seguinte comando:

gcloud compute images delete [IMAGE]

em que [IMAGE] é o nome da imagem que você quer excluir.

Definir versões de imagem 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 o rollback para uma versão anterior da imagem for necessário, suspenda o uso da imagem mais recente da família.

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

gcloud

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

A imagem apontada nessa família é a 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 para o método images().insert. Especifique a família de imagens no corpo da solicitação.

Criar imagem com uma família

POST https://www.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 imagem apontada é a image-v2 porque foi a última a ser adicionada a essa família. Para ver qual imagem é apontada na família, execute o comando gcloud compute images describe-from-family. Por exemplo:

gcloud

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

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://www.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://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/family

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

Se a reversão for necessária para que a image-v2 não seja mais apontada, suspenda o uso da image-v2 para que a image-v1 seja novamente apontada na família de imagens.

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

Verifique se a imagem apontada na família de imagens direciona para image-v1 novamente:

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

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://www.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

Você pode definir o parâmetro guestOsFeatures ao criar uma imagem personalizada. Esse parâmetro ativa um ou mais recursos para as instâncias de VM que usam a imagem em 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: permite ativar a inicialização segura do UEFI, que restringe a inicialização ou o carregamento de software ou 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 do UEFI, que é um método alternativo de inicialização do sistema. A maioria das imagens públicas usa o carregador de inicialização GRUB como método de inicialização principal.
  • VIRTIO_SCSI_MULTIQUEUE: ativa as funcionalidades de filas múltiplas SCSI para dispositivos SSD locais. Essa opção é uma alternativa ao NVMe.
    • Para as imagens do Linux, é possível ativar VIRTIO_SCSI_MULTIQUEUE nas imagens com versão do kernel 3.17 e posterior.
    • Para imagens do Windows, é possível ativar VIRTIO_SCSI_MULTIQUEUE nas imagens com versão do driver 1.2.0.1621 ou superior.
  • 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 em imagens personalizadas.

gcloud

Crie uma imagem personalizada de uma de suas imagens personalizadas existentes, mas também inclua o sinalizador --guest-os-features.

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

em que:

  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [SOURCE_IMAGE] é a imagem com que você quer criar a nova imagem;
  • [IMAGE_PROJECT] é um parâmetro opcional que especifica em qual projeto a imagem de origem está localizada. Use esse parâmetro se quiser copiar uma imagem de outro projeto;
  • [FEATURE_ID] é o código de um dos recursos disponíveis do SO convidado. Você pode especificar vários recursos como uma lista separada por vírgulas.

API

Faça uma solicitação POST ao método images().insert, incluindo um URL no corpo da solicitação que aponta para o objeto de origem de criação da imagem. Substitua o projeto e a zona pelo código do projeto e a zona do disco permanente:

Criar uma imagem a partir de um disco permanente:

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

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

em que:

  • [IMAGE_NAME] é o nome da nova imagem que você quer criar;
  • [SOURCE_IMAGE] é a imagem com que você quer criar a nova imagem;
  • [IMAGE_PROJECT] é um parâmetro que especifica o projeto onde a imagem de origem está localizada;
  • [FEATURE_ID] é o código de um dos recursos disponíveis do SO convidado. Você pode especificar vários recursos como uma lista separada por vírgulas.

Para saber mais sobre como adicionar imagens, consulte a referência de imagens.

A seguir

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

Enviar comentários sobre…

Documentação do Compute Engine