Como 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

Ativar a API Cloud Build

A ferramenta de importação do dispositivo virtual usa o Cloud Build.

Na maioria dos casos, gcloud compute images import tenta conceder essas permissões à conta de serviço do Cloud Build. No entanto, é possível concedê-las manualmente para garantir que as permissões necessárias estejam aplicadas.

Console

  1. Ative a API Cloud Build.

    Ativar a API Cloud Build

    Ao ativar a API Cloud Build a partir do Console, o Compute Engine concede à conta de serviço do Cloud Build os papéis a seguir para que o serviço possa importar instâncias para o Compute Engine:

    • roles/iam.serviceAccountTokenCreator
    • roles/compute.admin
    • roles/iam.serviceAccountUser

    A ferramenta de importação também usa a conta de serviço padrão do Compute Engine. Por padrão, a conta de serviço do Compute Engine tem o papel de editor de projetos do Cloud IAM. Se esse papel for removido, o processo de importação poderá falhar. Para adicionar o papel novamente à conta de serviço, consulte Como conceder acesso. Para mais informações sobre a conta de serviço padrão do Compute Engine, consulte a página relacionada.

gcloud

Para configurar o serviço Cloud Build usando a ferramenta de linha de comando gcloud, siga estas etapas:

  1. Ative o Cloud Build.

    gcloud services enable cloudbuild.googleapis.com

    A ferramenta de importação também usa a conta de serviço padrão do Compute Engine. Por padrão, a conta de serviço do Compute Engine tem o papel de editor de projetos do Cloud IAM. Se esse papel for removido, o processo de importação poderá falhar. Para adicionar o papel novamente à conta de serviço, consulte Como conceder acesso. Para mais informações sobre a conta de serviço padrão do Compute Engine, consulte Conta de serviço padrão do Compute Engine.

  2. Adicione o papel compute.admin à conta de serviço da API Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/compute.admin
    
  3. Adicione o papel iam.serviceAccountUser à conta de serviço da API Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountUser
    
  4. Adicione o papel iam.serviceAccountTokenCreator à conta de serviço da API Cloud Build.

    gcloud projects add-iam-policy-binding project-id \
       --member serviceAccount:project-num@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountTokenCreator
    

    Substitua as seguintes informações:

Sistemas operacionais compatíveis

Para que os discos virtuais sejam inicializáveis no Compute Engine, eles precisam executar um dos sistemas operacionais a seguir.

  • Sistemas operacionais Linux:
    • CentOS 6, CentOS 7
    • Debian 8, Debian 9
    • Red Hat Enterprise Linux 6, Red Hat Enterprise Linux 7
    • Ubuntu 14.04 LTS, Ubuntu 16.04 LTS
  • Sistemas operacionais Windows:
    • Windows Server 2008 R2 SP1
    • Windows Server 2012, Windows Server 2012 R2, Windows Server 2012 R2 Core
    • Windows Server 2016, Windows Server 2016 Core
    • Windows Server 2019, Windows Server 2019 Core
    • Windows 7 SP1 (32 e 64 bits, somente para BYOL)
    • Windows 8.1 (32 e 64 bits, somente BYOL)
    • Windows 10, versões 1709, 1803, 1903, 1909 (32 e 64 bits, somente BYOL)

Limitações

Este recurso tem as seguintes limitações:

  • Os discos virtuais do Linux precisam usar grub como carregador de inicialização.
  • Os carregadores de inicialização UEFI não são compatíveis com Windows nem com Linux.
  • Os discos virtuais do Linux precisam atender aos mesmos requisitos das imagens de SO personalizadas, incluindo compatibilidade com dispositivos do controlador de armazenamento Virtio-SCSI.
  • Quando instalados nos discos virtuais do Windows, os softwares de lista de permissões de aplicativos, como o Cb Protection da Carbon Black, podem causar a falha do processo de importação. Talvez seja necessário desinstalá-los antes da importação.
  • Se você estiver importando um disco virtual executando o RHEL, o recurso "Traga sua própria licença" (BYOL, na sigla em inglês) só será aceito se o pacote python-boto (em inglês) estiver instalado no disco virtual antes da importação.
  • Os sistemas operacionais em discos virtuais precisam ser compatíveis com ACPI (em inglês).

Permissões

A ferramenta de importação de imagens realiza várias etapas quando você importa um arquivo de disco virtual, incluindo upload do arquivo para o Cloud Storage, criação de um novo intervalo, download do arquivo para o Compute Engine e criação de uma imagem no Compute Engine a partir do arquivo de disco. Esse processo ocorre automaticamente. Para possibilitar uma experiência perfeita ao usar esse recurso, o Google recomenda que sua conta tenha os seguintes papéis:

  • roles/storage.admin
  • roles/viewer
  • roles/resourcemanager.projectIamAdmin

O processo de importação usa a conta de serviço padrão do Compute Engine como parte do fluxo de trabalho. Por padrão, essa conta tem a permissão roles/editor, que é suficiente para o processo. No entanto, se você tiver modificado os papéis e as permissões padrão da conta de serviço do Compute Engine, verifique se ela ainda tem os seguintes papéis:

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

Como importar discos virtuais

Como 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 possam causar falha no processo de importação ou que impeçam o disco de funcionar corretamente no Compute Engine.

Como importar um disco virtual 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. 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 intervalo 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 intervalo 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. No entanto, é necessário fazer upload do arquivo para um intervalo de armazenamento no mesmo projeto que será usado no processo de importação.

gcloud beta compute images import image-name \
    --source-file source-file \
    --os os

Substitua as seguintes informações:

  • 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 intervalo de armazenamento do projeto usado no processo de importação. Especifique o caminho completo do arquivo no formato gs://bucket-name/object-name.
  • os: o sistema operacional de --source-file. Ele precisa ser uma imagem com licença BYOL ou uma das seguintes formas:

    • centos-6, centos-7
    • debian-8, debian-9
    • rhel-6, rhel-7
    • ubuntu-1404, ubuntu-1604
    • windows-2008r2, windows-2012, windows-2012r2, windows-2016, ou windows-2019

    Compatibilidade com "Traga sua própria licença" (Beta)

    Por padrão, os discos virtuais que utilizam sistemas operacionais Windows Server e Red Hat Enterprise Linux (RHEL) são importados e configurados como imagens premium do SO, sujeitas a cobranças extras.

    • Se você quiser usar suas próprias assinaturas de software para o RHEL, importe os discos para trazer suas próprias licenças de imagem com licença BYOL, especificando um dos seguintes valores de BYOL para a sinalização --os:

      • rhel-6-byol
      • rhel-7-byol
    • Se você quiser trazer sua própria licença para Windows, importe os discos como imagens com licença BYOL, especificando um dos seguintes valores BYOL para a sinalização --os:

      • windows-2008r2-byol
      • windows-2012-byol
      • windows-2012r2-byol
      • windows-2016-byol
      • windows-2019-byol
      • windows-7-x64-byol
      • windows-7-x86-byol
      • windows-8-x64-byol
      • windows-8-x86-byol
      • windows-10-x64-byol
      • windows-10-x86-byol

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.

Comando de amostra

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

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

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 sinalização --no-guest-environment ao comando de importação.

Como 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 seu disco virtual não tiver um sistema operacional inicializável instalado, importe-o usando a sinalização --data-disk no lugar da sinalização --os. 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 as seguintes informações:

  • 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, 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 intervalo de armazenamento do projeto usado no processo de importação. Especifique o caminho completo do arquivo no formato gs://bucket-name/object-name.

Comando de amostra

No exemplo a seguir, importamos um disco virtual denominado my-disk.vmdk armazenado em gs://my-gcs-bucket/.

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

Como 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 devidos drivers ou pacotes de ambiente de convidado do Compute Engine, poderá usar a ferramenta de importação de imagem 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 \
    --os os

Substitua as seguintes informações:

  • image-name: o nome da imagem de destino
  • source-image-name: o nome da imagem de origem
  • os: o sistema operacional de --source-image. Essa precisa ser uma imagem com licença BYOL ou uma das seguintes:
    • centos-6, centos-7
    • debian-8, debian-9
    • rhel-6, rhel-7
    • ubuntu-1404, ubuntu-1604
    • windows-2008r2,windows-2012,windows-2012r2, windows-2016 ou windows-2019

Compatibilidade com "Traga sua própria licença"

  • Se você estiver usando suas próprias assinaturas de software do RHEL, é possível tornar a imagem com licença BYOL inicializável especificando um dos seguintes valores de BYOL para a sinalização --os:

    • rhel-6-byol
    • rhel-7-byol
  • Se você usa uma imagem BYOL do Windows, é possível tornar a imagem com licença BYOL inicializável especificando um dos valores a seguir na sinalização --os:

    • windows-2008r2-byol
    • windows-2012-byol
    • windows-2012r2-byol
    • windows-2016-byol
    • windows-2019-byol
    • windows-7-x64-byol
    • windows-7-x86-byol
    • windows-8-x64-byol
    • windows-8-x86-byol
    • windows-10-x64-byol
    • windows-10-x86-byol

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, o sistema operacional instalado na imagem é o Ubuntu 16.04.

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