Importar discos virtuais


Se você tiver discos virtuais no ambiente local com software e configurações necessários (às vezes chamados de discos dourados ou imagens douradas), poderá economizar tempo importando esses discos virtuais no Compute Engine e usar a imagem resultante para criar máquinas virtuais. A ferramenta de importação é compatível com a maioria dos formatos de arquivo de disco virtual, incluindo VMDK e VHD.

Se você exportou o disco do Compute Engine, é possível criar imagens do disco.

Para informações sobre como criar um sistema automatizado para migrar várias máquinas virtuais (VMs, na sigla em inglês), consulte Como migrar VMs para o Compute Engine.

Antes de começar

  • Se houver uma política de imagem confiável definida para o projeto em que a imagem será importada, adicione projects/compute-image-import e projects/compute-image-tools à lista de editores permitidos.
  • Saiba como atender aos requisitos antes de importar imagens em Pré-requisitos para importar e exportar imagens de VM.
  • 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.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. 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 a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Sistemas operacionais compatíveis

É possível importar discos inicializáveis e não inicializáveis. Para que seus discos virtuais sejam inicializáveis no Compute Engine, eles precisam executar um dos sistemas operacionais compatíveis a seguir.

Compatibilidade com BYOL e BYOS

Se preferir usar sua própria licença de software ou assinatura, importe os dispositivos virtuais com as licenças deles. Para informações sobre os sistemas operacionais compatíveis com BYOL ou BYOS, consulte Detalhes do sistema operacional.

É possível importar imagens com licenças atuais usando o comando gcloud compute instances import com a sinalização --byol.

Limitações

Esse recurso tem as seguintes limitações gerais:

Esse recurso tem as seguintes limitações no Linux:

  • Os discos virtuais do Linux precisam usar grub como carregador de inicialização.

  • Os discos virtuais do Linux precisam atender aos mesmos requisitos das imagens personalizadas, incluindo compatibilidade com dispositivos do controlador de armazenamento Virtio-SCSI.

Esse recurso tem as seguintes limitações no Windows:

  • Quando instalado nos discos virtuais do Windows, o software de lista de permissões de aplicativos, como o CB Protection da Carbon Black (em inglês), pode causar uma falha no processo de importação. Talvez seja necessário desinstalar esse software antes da importação.

  • Em VMs baseadas em Windows, o adaptador de loopback do Microsoft KM-TEST impede o acesso de rede ao servidor de metadados. É necessário desativá-lo ou removê-lo antes da importação.

Permissões

Para ativar uma experiência perfeita ao importar imagens, verifique se você concedeu os papéis necessários do IAM à sua conta, à conta de serviço do Cloud Build e à conta de serviço do Compute Engine. Para mais informações, consulte Conceder papéis necessários do IAM.

Verificar a compatibilidade

Antes de tentar importar o disco para sua VM, faça o download da ferramenta de pré-verificação (em inglês) e execute-a dentro da VM. Ela procura quaisquer problemas de compatibilidade (em inglês) que causem falha no processo de importação ou que impeçam o disco de funcionar corretamente no Compute Engine.

Importar discos virtuais

É possível importar discos virtuais usando a Console do Google Cloud, a CLI do Google Cloud ou a API Cloud Build

Importar um disco virtual inicializável

Para discos de inicialização, não é necessário especificar o sistema operacional, porque a ferramenta de importação detecta automaticamente o sistema operacional para determinar quais drivers e pacotes são necessários. No entanto, se você precisar modificar o sistema operacional detectado, especifique a sinalização --os ou o parâmetro -os. Para uma lista de valores compatíveis, consulte a sinalização --os.

Console

  1. No Console do Google Cloud, faça upload do arquivo do disco virtual para o Cloud Storage.
  2. Acesse a página Criar uma imagem.

    Acessar a página "Criar uma imagem"

  3. Especifique um Nome para a imagem.

  4. Em Origem, selecione Disco virtual (VMDK, VHD...).

  5. Navegue até o local de armazenamento do arquivo do Cloud Storage ou insira-o manualmente.

  6. Selecione o sistema operacional disponível no disco importado. Também é possível fazer as alterações a seguir:

    • Instale pacotes de convidado. O Google recomenda que você instale o ambiente de convidado. Para mais informações sobre o ambiente de convidado, clique aqui.

    • Para sistemas operacionais Windows ou Red Hat Enterprise Linux (RHEL), também é possível escolher uma opção de licenciamento. Além disso, é possível trazer sua própria licença ou permitir que o Compute Engine forneça uma. Para mais informações sobre como trazer sua própria licença no Windows, consulte Trazer sua própria licença.

  7. Opcional: especifique mais propriedades para sua imagem. Por exemplo, organize essa imagem como parte de uma família de imagens.

  8. Clique em Criar para importar a imagem.

gcloud

Use o comando gcloud compute images import para criar uma imagem inicializável do Compute Engine. Embora o Compute Engine possa iniciar a maioria das imagens de disco de inicialização, o comando import garante que o disco tenha os drivers necessários e os pacotes de ambiente de convidado mais recentes, que são necessários para iniciar uma instância e se conectar a ela usando SSH ou RDP.

Importe os arquivos do disco virtual de um bucket do Cloud Storage ou da estação de trabalho local.

Se você importar o arquivo do disco virtual da estação de trabalho, a ferramenta de importação fará upload do arquivo para um bucket do Cloud Storage automaticamente.

Se preferir, faça você mesmo o upload do arquivo do disco virtual para o Cloud Storage antes de iniciar o processo de importação. Porém, é necessário fazer o upload do arquivo para um bucket do Cloud Storage no mesmo projeto que será usado no processo.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE

Substitua:

  • IMAGE_NAME: o nome da imagem de destino
  • SOURCE_FILE: o arquivo de disco virtual. Pode ser um arquivo local ou armazenado no Cloud Storage. Se o disco virtual for um arquivo local, forneça um caminho absoluto ou relativo. Se o arquivo de disco virtual já estiver armazenado no Cloud Storage, será preciso que ele exista em um bucket do Cloud Storage do projeto usado no processo de importação. Especifique o caminho completo do arquivo no formato gs://BUCKET_NAME/OBJECT_NAME.

Se você estiver importando uma imagem com uma licença atual, especifique a sinalização --byol da seguinte maneira:

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE --byol

Para conferir instruções sobre como importar imagens com licenças atuais para o Google Cloud, consulte Como trazer suas próprias licenças.

Se você especificar um arquivo local, o upload poderá demorar muito, dependendo do tamanho do disco virtual e da velocidade da conexão de rede. A operação de importação pode demorar bastante para ser executada, dependendo do tamanho do disco.

Exemplo

No exemplo a seguir, importamos um disco virtual denominado my_server.vmdk armazenado em gs://your_gcs_bucket.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_server.vmdk

Parâmetros opcionais

Por padrão, os pacotes de ambiente de convidado são adicionados a todas as imagens de disco de inicialização importadas. Se você não quiser esses pacotes, adicione a flag --no-guest-environment ao comando de importação.

REST

  1. Adicione o disco virtual ao Cloud Storage.

  2. Envie uma solicitação POST para a API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a imagem será importada.
    • IMAGE_NAME: o nome da imagem a ser importada.
    • SOURCE_FILE: o URI da imagem no Cloud Storage, por exemplo, gs://my-bucket/my-image.vmdk.

    Para outros valores args que podem ser fornecidos, consulte a seção de sinalizações opcionais da página do GitHub de importação de imagens de VM (em inglês).

    Exemplo de resposta

    A resposta de amostra a seguir é parecida com a resposta retornada:

    {
     "name": "operations/build/myproject-12345/operation-1578608233418",
     "metadata": {
      "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
      "build": {
       "id": "3a2055bc-ccbd-4101-9434-d376b88b8940",
       "status": "QUEUED",
       "createTime": "2019-09-20T15:55:29.353258929Z",
       "steps": [
        {
         "name": "gcr.io/compute-image-import/gce_vm_image_import:release",
         "env": [
          "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
         ],
         "args": [
          "-timeout=7000s",
          "-image_name=my-image",
          "-client_id=api",
          "-data-disk",
          "-source_file=gs://my-bucket/my-image.vmdk"
         ]
        }
       ],
       "timeout": "7200s",
       "projectId": "myproject-12345",
       "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com",
       "options": {
        "logging": "LEGACY"
       },
       "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456"
      }
    }
    

    Há algumas maneiras de monitorar seu build:

    • Execute uma solicitação projects.builds.get usando o build-id retornado.
    • Revise os registros hospedados no logUrl fornecido.

Importar e anexar uma licença para um disco virtual

Para incluir uma licença ao importar uma imagem, use o seguinte comando gcloud compute images import.

gcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE
  --os=OS

Substitua:

  • IMAGE_NAME: o nome da imagem a ser criada.
  • SOURCE_FILE: um arquivo local ou o URI do Cloud Storage do disco virtual a ser importado.
  • OS: o SO da imagem de disco a ser importada. A licença do SO é inferida a partir do valor dessa sinalização. Não há uma sinalização explícita para fornecer informações de licença durante a importação. Para uma lista de valores compatíveis, consulte a sinalização --os.

Para mais informações sobre como visualizar e anexar licenças, consulte Visualizar e anexar licenças.

Importar um disco virtual não inicializável

Console

  1. No Console do Google Cloud, faça upload do arquivo do disco virtual para o Cloud Storage.
  2. Acesse a página Criar uma imagem.

    Acessar a página "Criar uma imagem"

  3. Especifique um Nome para a imagem.

  4. Em Origem, selecione Disco virtual (VMDK, VHD...).

  5. Navegue até o local de armazenamento do arquivo do Cloud Storage ou insira-o manualmente.

  6. No sistema operacional, selecione Nenhum sistema operacional. Apenas dados.

  7. Opcional: especifique mais propriedades para sua imagem. Por exemplo, organize essa imagem como parte de uma família de imagens.

  8. Clique em Criar para importar a imagem.

gcloud

É possível usar o comando gcloud compute images import para criar uma imagem do Compute Engine que não seja inicializável. Se o disco virtual não tiver um sistema operacional inicializável instalado, especifique a sinalização --data-disk. Esse procedimento ignora a etapa que instala os drivers e os pacotes do ambiente de convidado para tornar a imagem inicializável no Compute Engine.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --data-disk

Substitua:

  • IMAGE_NAME: o nome da imagem de destino
  • SOURCE_FILE: o arquivo de disco virtual. Esse arquivo pode ser local ou armazenado no Cloud Storage. Se o disco virtual for um arquivo local, será possível usar um caminho absoluto ou relativo. Se o arquivo de disco virtual já estiver armazenado no Cloud Storage, será preciso que ele exista em um bucket do Cloud Storage do projeto usado no processo de importação. Especifique o caminho completo do arquivo no formato gs://BUCKET_NAME/OBJECT_NAME.

Exemplo 1: importar um disco virtual não inicializável do Cloud Storage

No exemplo a seguir, importamos um disco virtual chamado my_disk.vmdk armazenado em gs://your_gcs_bucket.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_disk.vmdk
    --data-disk

Exemplo 2: importar um arquivo VMDK grande especificando o valor do tempo limite

O tempo limite padrão do processo de importação é duas horas. Arquivos grandes do VMDK podem levar até 24 horas para serem importados. Se você não especificar a sinalização --timeout ao importar esses arquivos grandes, o processo falhará após duas horas.

No exemplo a seguir, importamos um disco virtual denominado my_disk.vmdk armazenado em gs://your_gcs_bucket. O valor do tempo limite para essa importação é 24 horas.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_disk.vmdk
    --data-disk --timeout=24h

REST

  1. Adicione o disco virtual ao Cloud Storage.

  2. Envie uma solicitação POST para a API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "steps":[
        {
          "args":[
            "-image_name=IMAGE_NAME",
            "-source_file=SOURCE_FILE",
            "-timeout=7000s",
            "-client_id=api",
            "-data_disk"
          ],
          "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "timeout":"7200s",
      "tags":[
        "gce-daisy",
        "gce-daisy-image-import"
      ]
    }
    

    Substitua os seguintes valores args:

    • PROJECT_ID: o ID do projeto em que a imagem será importada.
    • IMAGE_NAME: o nome da imagem a ser importada.
    • SOURCE_FILE: o URI da imagem no Cloud Storage, por exemplo, gs://my-bucket/my-image.vmdk.

Importar discos usando redes que não aceitam endereços IP externos

Para importar discos virtuais usando uma rede que não permite IPs externos, conclua as seguintes etapas:

  1. Adicione o disco virtual ao Cloud Storage.

  2. O processo de importação de imagem requer que os gerenciadores de pacotes sejam instalados no sistema operacional do disco virtual. Esses gerenciadores de pacotes podem precisar fazer solicitações para repositórios de pacote que estão fora do Google Cloud. Para permitir o acesso a essas atualizações, você precisa configurar o Cloud NAT. Para mais informações, consulte Criar uma configuração NAT usando o Cloud Router.

  3. Configure Acesso privado do Google. Para mais informações, consulte Como configurar o acesso particular do Google.

  4. Importe o disco virtual usando a CLI Google Cloud ou REST.

    Quando você importa um disco virtual, VMs temporárias são criadas no projeto. Para garantir que essas VMs temporárias não recebam endereços IP externos, é necessário especificar uma sinalização ou um argumento adicional.

    Para mais informações, clique nas seguintes guias:

gcloud

Use o comando gcloud compute images import com a sinalização --no-address para importar seu disco virtual.

gcloud compute images import IMAGE_NAME \
    --source-file=SOURCE_FILE \
    --zone=ZONE \
    --no-address

Substitua:

  • IMAGE_NAME: o nome da imagem de disco que você quer criar.
  • SOURCE_FILE: o arquivo de disco virtual. Pode ser um arquivo local ou armazenado no Cloud Storage. Se o disco virtual for um arquivo local, forneça um caminho absoluto ou relativo. Se o arquivo de disco virtual já estiver armazenado no Cloud Storage, será preciso que ele exista em um bucket do Cloud Storage do projeto usado no processo de importação. Especifique o caminho completo do arquivo no formato gs://BUCKET_NAME/OBJECT_NAME.
  • ZONE: a zona onde a imagem será criada. Se ficar em branco, a zona padrão do projeto será usada.

REST

Envie uma solicitação POST para a API Cloud Build e especifique o argumento -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
   "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-zone=ZONE",
         "-no_external_ip",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
   ],
   "timeout":"7200s",
   "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
   ]
 }
 

Substitua:

  • PROJECT_ID: o ID do projeto em que a imagem será importada.
  • IMAGE_NAME: o nome da imagem a ser importada.
  • SOURCE_FILE: o URI da imagem no Cloud Storage. Por exemplo, gs://my-bucket/my-image.vmdk. para o comando gcloud compute images import.
  • ZONE: a zona onde a imagem será criada. Se ficar em branco, a zona padrão do projeto será usada.

Importar um disco virtual com o carregador de inicialização UEFI

Para a maioria dos discos virtuais, o Compute Engine pode detectar e importar discos com êxito usando um carregador de inicialização UEFI sem a necessidade de uma sinalização adicional.

No entanto, para cenários como o seguinte, pode ser necessário forçar uma inicialização UEFI durante a importação.

  • Se o processo de importação de imagem não detectar o carregador de inicialização UEFI durante a importação.
  • Se o disco for de inicialização dupla e tiver uma combinação de: hybrid-mbr + UEFI ou protective-mbr + UEFI. Para discos com inicialização dupla, a importação pode adotar como padrão a inicialização não UEFI.

gcloud

É possível usar o comando gcloud compute images import para forçar uma importação a usar a inicialização UEFI.

gcloud compute images import IMAGE_NAME \
    --source-file=SOURCE_FILE \
    --guest-os-features=UEFI_COMPATIBLE

Substitua:

  • IMAGE_NAME: o nome da imagem a ser importada.
  • SOURCE_FILE: o URI da imagem no Cloud Storage, por exemplo, gs://my-bucket/my-image.vmdk.

Exemplo

No exemplo a seguir, importamos um disco virtual denominado my-disk.vmdk armazenado em gs://my-gcs-bucket/ e força o uso da inicialização UEFI.

gcloud compute images import my-imported-image \
    --source-file gs://my-gcs-bucket/my-disk.vmdk \
    --guest-os-features=UEFI_COMPATIBLE

REST

Para forçar uma importação a usar a inicialização UEFI, use a API Cloud Build e especifique o argumento -uefi_compatible. Para isso, siga as seguintes etapas:

  1. Adicione o disco virtual ao Cloud Storage.

  2. Envie uma solicitação POST para a API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-uefi_compatible",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a imagem será importada.
    • IMAGE_NAME: o nome da imagem a ser importada.
    • SOURCE_FILE: o URI da imagem no Cloud Storage, por exemplo, gs://my-bucket/my-image.vmdk.

Importar um disco virtual usando a VPC compartilhada

Antes de importar um disco virtual que usa uma VPC compartilhada, é preciso adicionar o papel compute.networkUser à conta de serviço do Cloud Build. Saiba mais em Conceder os papéis necessários à conta de serviço do Cloud Build.

gcloud

Use o comando gcloud compute images import para importar o disco virtual.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --project SERVICE_PROJECT_ID \
    --zone ZONE \
    --network NETWORK \
    --subnet SUBNET

Substitua:

  • IMAGE_NAME: o nome da imagem a ser importada.
  • SOURCE_FILE: o arquivo de disco virtual. Pode ser um arquivo local ou armazenado no Cloud Storage. Se o disco virtual for um arquivo local, forneça um caminho absoluto ou relativo. Se o arquivo de disco virtual já estiver armazenado no Cloud Storage, será preciso que ele exista em um bucket do Cloud Storage do projeto usado no processo de importação. Especifique o caminho completo do arquivo no formato gs://BUCKET_NAME/OBJECT_NAME.
  • SERVICE_PROJECT_ID: ID do projeto em que a imagem será importada;
  • ZONE: zona para onde quer importar a imagem. Essa zona precisa corresponder à região da sub-rede. Por exemplo, se SUBNET for us-west1. É necessário que a zona de importação seja uma das seguintes opções: us-west1-a, us-west1-b ou us-west1-c.
  • NETWORK: caminho completo de uma rede VPC compartilhada. Por exemplo, projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
  • SUBNET: caminho completo de uma sub-rede VPC compartilhada. Por exemplo, projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

    Comando de amostra

    gcloud compute images import example-image \
     --source-file gs://source-bucket/source-file.vmdk \
     --project my-image-project \
     --zone us-west1-c \
     --network projects/my-vpc-project/global/networks/my-shared-vpc \
     --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
    

REST

  1. Adicione o disco virtual ao Cloud Storage.

  2. Envie uma solicitação POST para a API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-zone=ZONE",
           "-network=NETWORK",
           "-subnet=SUBNET",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Substitua os seguintes valores args:

    • SERVICE_PROJECT_ID: ID do projeto em que a imagem será importada;
    • IMAGE_NAME: o nome da imagem a ser importada.
    • SOURCE_FILE: URI da imagem no Cloud Storage, por exemplo, gs://my-bucket/my-image.vmdk.
    • ZONE: zona para onde quer importar a imagem. Essa zona precisa corresponder à região da sub-rede. Por exemplo, se SUBNET for us-west1. É necessário que a zona de importação seja uma das seguintes opções: us-west1-a, us-west1-b ou us-west1-c.
    • NETWORK: caminho completo de uma rede VPC compartilhada. Por exemplo, projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
    • SUBNET: caminho completo de uma sub-rede VPC compartilhada. Por exemplo, projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

Como importar um disco virtual usando uma conta de serviço personalizada do Compute Engine

Durante uma importação de imagem, as instâncias temporárias de máquina virtual (VM) são criadas no seu projeto. A ferramenta de importação nessas VMs temporárias precisa ser autenticada.

Uma conta de serviço é uma identidade anexada a uma VM. Os tokens de acesso da conta de serviço podem ser acessados pelo servidor de metadados de instância e usados para autenticar a ferramenta de importação de imagens na VM.

Por padrão, o processo de importação usa o Agente de serviço padrão do Compute Engine do projeto. No entanto, se a conta de serviço padrão do Compute Engine estiver desativada no projeto ou se você quiser usar uma conta de serviço personalizada do Compute Engine, será necessário criar uma conta de serviço e especificá-la para o processo de importação.

gcloud

  1. Adicione o disco virtual ao Cloud Storage.

  2. Crie uma conta de serviço e atribua o mínimo de papéis. Para mais informações sobre como criar contas de serviço, consulte Como criar e gerenciar contas de serviço.

    A conta de serviço do Compute Engine especificada precisa ter, no mínimo, os seguintes papéis atribuídos:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Saiba mais em Conceder os papéis necessários à conta de serviço do Compute Engine.

  3. Use o gcloud compute images import para importar a imagem.

    gcloud compute images import IMAGE_NAME \
      --source-file SOURCE_FILE \
      --compute-service-account SERVICE_ACCOUNT_EMAIL
    

    Substitua:

    • IMAGE_NAME: o nome da imagem de destino
    • SOURCE_FILE: o arquivo de disco virtual. Pode ser um arquivo local ou armazenado no Cloud Storage. Se o disco virtual for um arquivo local, forneça um caminho absoluto ou relativo. Se o arquivo de disco virtual já estiver armazenado no Cloud Storage, será preciso que ele exista em um bucket do Cloud Storage do projeto usado no processo de importação. Especifique o caminho completo do arquivo no formato gs://BUCKET_NAME/OBJECT_NAME.
    • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail associado à conta de serviço do Compute Engine criada na etapa anterior.

    Exemplo

    No exemplo a seguir, importamos um disco virtual de inicialização chamado my_server.vmdk armazenado em gs://your_gcs_bucket usando uma conta de serviço com o e-mail image-export-service-account@proj-12345.iam.gserviceaccount.com.

    gcloud compute images import my-imported-image \
      --source-file gs://your_gcs_bucket/my_server.vmdk \
      --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
    

REST

  1. Adicione o disco virtual ao Cloud Storage.

  2. Crie uma conta de serviço e atribua o mínimo de papéis. Para mais informações sobre como criar contas de serviço, consulte Como criar e gerenciar contas de serviço.

    A conta de serviço do Compute Engine especificada precisa ter, no mínimo, os seguintes papéis atribuídos:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Saiba mais em Conceder os papéis necessários à conta de serviço do Compute Engine.

  3. Adicione o disco virtual ao Cloud Storage.

  4. Envie uma solicitação POST para a API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-compute_service_account=SERVICE_ACCOUNT_EMAIL",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
    ],
    "timeout":"7200s",
    "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
    ]
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a imagem será importada.
    • IMAGE_NAME: o nome da imagem a ser importada.
    • SOURCE_FILE: o URI da imagem no Cloud Storage, por exemplo, gs://my-bucket/my-image.vmdk.
    • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail associado à conta de serviço do Compute Engine criada na etapa anterior.

Tornar uma imagem inicializável

Se você tiver uma imagem personalizada do Compute Engine que tenha um sistema operacional inicializável, mas não tenha os drivers ou pacotes de ambiente convidados do Compute Engine, poderá usar a ferramenta de importação de imagens para torná-la inicializável no Compute Engine.

Use a sinalização --source-image para especificar uma imagem personalizada que será inicializável, em vez de usar a sinalização --source-file, que especifica um novo disco para importar.

gcloud compute images import IMAGE_NAME \
    --source-image SOURCE_IMAGE_NAME

Substitua:

  • IMAGE_NAME: o nome da imagem de destino
  • SOURCE_IMAGE_NAME: o nome da imagem de origem.

    Para conferir instruções sobre como importar imagens com licenças atuais para o Google Cloud, consulte Como trazer suas próprias licenças.

Comando de amostra

No exemplo a seguir, transformamos uma imagem do Compute Engine denominada my-image em uma imagem inicializável chamada my-bootable-image. Neste exemplo, --os ubuntu-1604 substitui o sistema operacional detectado.

gcloud compute images import my-bootable-image \
    --source-image my-image \
    --os ubuntu-1604

Limpeza de recursos

Há cobranças para os arquivos armazenados no Cloud Storage e as imagens no Compute Engine. A ferramenta de importação envia o arquivo de disco virtual para o Cloud Storage e cria uma imagem personalizada do Compute Engine.

Depois de verificar se a imagem foi importada e inicializada corretamente como uma instância do Compute Engine, você pode excluir o arquivo de disco virtual do Cloud Storage. A ferramenta imprime o URI do arquivo à medida que o carrega no Cloud Storage. Esse URI tem o seguinte formato: gs://BUCKET_NAME/tmpimage/IMAGE_NAME.

Se você importou uma imagem usando a sinalização --data-disk e executou a ferramenta import uma segunda vez com a sinalização --source-image para tornar essa imagem inicializável, a primeira imagem ainda existirá. Se você não precisar da imagem, pense em excluí-la. Se você especificar o mesmo nome de imagem para as sinalizações --image e --source-image, a imagem será substituída automaticamente, sem necessidade de nenhuma outra limpeza.

A seguir