Importar imagens de máquina de dispositivos virtuais


Use uma imagem de máquina para armazenar toda a configuração, metadados, permissões e dados de um ou mais discos para uma instância de VM em exibição no Compute Engine. Para informações sobre quando e como usar imagens de máquina, consulte Imagens de máquina.

Neste documento, descrevemos os passos para importar uma imagem de máquina de um dispositivo virtual.

Antes de começar

  • Se o projeto em que você quer importar a imagem de máquina tiver uma política de imagem confiável definida, adicione projects/compute-image-import e projects/compute-image-toolsà lista de editores permitidos.
  • Se você estiver importando um dispositivo virtual de um projeto diferente, consulte Como importar entre projetos.
  • Veja os requisitos de arquivo de VM de origem e OVF no guia de importação de dispositivos virtuais do Compute Engine.
  • Saiba como atender aos requisitos antes de importar imagens de máquina 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:

    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

Limitações e restrições

  • É possível compartilhar uma imagem de máquina entre projetos. No entanto, redes VPC compartilhadas não são compatíveis.
  • Esse recurso não é compatível com projetos protegidos com o VPC Service Controls.
  • Não é possível criar imagens de máquina com base em VMs de origem com mais de 200 TB de discos anexados.

Sistemas operacionais compatíveis

Para suporte ao sistema operacional, consulte Detalhes do sistema operacional.

Importar imagens de máquina

É possível importar imagens de máquina de dispositivos virtuais usando a Google Cloud CLI ou o REST (link em inglês).

gcloud

Use o comando gcloud compute machine-images import para importar uma imagem de máquina usando dispositivos virtuais.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

Substitua:

  • MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer importar;
  • SOURCE_URI: caminho para o arquivo OVA ou OVF no Cloud Storage;
  • OS: sistema operacional do arquivo OVA. Essa sinalização é opcional por padrão, mas pode ser necessária em alguns casos. Recomendamos que você a forneça.

Exemplo

Por exemplo, é possível usar o seguinte comando gcloud para importar uma imagem de máquina chamada my-machine-image a partir de um arquivo OVA de origem chamado my-ova que está armazenado no diretório gs://my-bucket e executa centos-7:

gcloud compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

REST

  1. Faça upload do dispositivo virtual para o Cloud Storage.

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

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    Substitua:

    • PROJECT_ID: ID do projeto em que você quer importar o arquivo OVA;
    • MACHINE_IMAGE_NAME: nome da imagem de máquina a ser importada; Por exemplo, my-machine-image.
    • SOURCE_URI: URI do arquivo OVA ou um diretório que contém pacotes OVF armazenados no Cloud Storage. Por exemplo, gs://my-bucket/my-instance.ova.
    • OS: sistema operacional do arquivo OVA. Por exemplo, ubuntu-1604. Essa sinalização é opcional por padrão, mas pode ser necessária em alguns casos. Recomendamos que você a forneça.

    Para ver outros valores de args que podem ser fornecidos, consulte a seção de sinalizações opcionais na página do GitHub sobre importação do OVF do Compute Engine (em inglês).

Importar imagens de máquina com modificações de OVF

CPU e memória personalizadas

gcloud

Para substituir a configuração de CPU ou memória especificada no arquivo OVF, siga as etapas da Google Cloud CLI para importar uma imagem de máquina e especifique o --custom-cpu e --custom-memory.

Exemplo

Uma imagem de máquina chamada my-machine-image tem as seguintes substituições aplicadas às configurações no arquivo OVF:

  • Sistema operacional: Ubuntu 1404
  • CPU: 2 CPUs
  • Memória: 2048 MB

Para importar my-machine-image com essas substituições, execute o seguinte comando:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

Para substituir a configuração de CPU ou memória especificada no arquivo OVF, siga as etapas da API Compute Engine para importar uma imagem de máquina e especifique o argumento -machine-type. Esse -machine-type representa um tipo de máquina predefinido ou um tipo personalizado a ser usado.

Exemplo

Uma imagem de máquina chamada my-machine-image tem as seguintes substituições aplicadas às configurações no arquivo OVF:

  • Sistema operacional: Ubuntu 1404
  • CPU: 2 CPUs
  • Memória: 2048 MB

Para importar my-machine-image com essas substituições, faça a seguinte solicitação para a API Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Substitua PROJECT_ID pela ID do seu projeto.

Redes personalizadas

gcloud

Para configurar uma rede personalizada, siga as etapas da Google Cloud CLI para importar uma imagem de máquina e especifique uma sinalização --network. Se a rede estiver configurada com um modo de sub-rede personalizado, especifique também as sinalizações --subnet e --zone.

Exemplo

Uma imagem de máquina chamada my-machine-image tem as seguintes substituições aplicadas às configurações no arquivo OVF:

  • Sistema operacional: Ubuntu 1404
  • Rede: custom-vpc-network
  • Sub-rede company-vpc-us-east1-c
  • Zona: us-east1-c

Para importar my-machine-image com essas substituições, execute o seguinte comando de exemplo:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network=custom-vpc-network \
    --subnet=company-vpc-us-east1-c \
    --zone=us-east1-c

REST

Para usar uma rede personalizada, siga as etapas da API Compute Engine para importar uma imagem de máquina e especificar um argumento -network. Se a rede estiver configurada com um modo de sub-rede personalizado, você precisará especificar também os argumentos -subnet e -zone.

Exemplo

Uma imagem de máquina chamada my-machine-image tem as seguintes substituições aplicadas às configurações no arquivo OVF:

  • Sistema operacional: Ubuntu 1404
  • Rede: custom-vpc-network
  • Sub-rede company-vpc-us-east1-c
  • Zona: us-central1-c

Para importar my-machine-image com essas substituições, faça a seguinte solicitação para a API Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Substitua PROJECT_ID pela ID do seu projeto.

Importar uma imagem de máquina em uma rede que não permite IP externo

Para importar uma imagem de máquina usando uma rede que não permite endereços IP externos, siga estas etapas:

  1. Adicione o dispositivo virtual ao Cloud Storage.

  2. O processo de importação requer que os gerenciadores de pacotes sejam instalados no sistema operacional da imagem da máquina. 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 a imagem de máquina usando a Google Cloud CLI ou a API Cloud Build.

    Quando você importa uma imagem de máquina de um dispositivo virtual, VMs temporárias são criadas no seu projeto. Para garantir que essas VMs temporárias não recebam endereços IP externos, é preciso especificar uma sinalização ou um argumento adicional.

    Para mais informações sobre a sinalização ou o argumento obrigatório, clique nas seguintes guias:

gcloud

Use o comando gcloud compute machine-images import com a sinalização --no-address.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

Substitua:

  • MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer importar;
  • SOURCE_URI: URI do arquivo OVA ou OVF no Cloud Storage. Por exemplo, gs://my-bucket/Ubuntu.ova.
  • OS: sistema operacional do arquivo OVA. Essa sinalização é opcional por padrão, mas pode ser necessária em alguns casos. Recomendamos que você a forneça. Para ver uma lista de valores compatíveis, consulte as opções de sinalização --os no comando gcloud compute machine-images import.
  • ZONE: a zona na qual a imagem da máquina será importada. Se ficar em branco, a zona padrão do projeto será usada.

REST

Use a API Cloud Build e especifique o argumento -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Substitua:

  • PROJECT_ID: o ID do projeto em que a imagem de máquina será importada;
  • MACHINE_IMAGE_NAME: o nome da imagem de máquina a ser importada. Por exemplo, my-machine-image.
  • SOURCE_URI: o URI do arquivo OVA armazenado no Cloud Storage. Por exemplo, gs://my-bucket/my-machine.ova.
  • OS: o sistema operacional do arquivo OVA. Por exemplo, ubuntu-1604. Essa sinalização é opcional por padrão, mas pode ser necessária em alguns casos. Recomendamos que você a forneça. Para ver uma lista de valores compatíveis, consulte as opções de sinalização --os no comando gcloud compute instances import.
  • ZONE: a zona na qual a imagem da máquina será importada.

Importar uma imagem de máquina usando contas de serviço personalizadas

Durante uma importação de imagem de máquina, as instâncias de máquina virtual (VM, na sigla em inglês) temporárias são criadas no 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 VM e usados para autenticar a ferramenta de importação de imagens na VM.

Por padrão, o processo de importação usa a conta de serviço padrão do Compute Engine. 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 dispositivo 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

    Esses papéis mínimos são necessários para a conta de serviço especificada para a sinalização --compute-service-account. Saiba mais em Conceder os papéis necessários à conta de serviço do Compute Engine.

  3. Use o comando gcloud compute machine-images import para importar uma imagem de máquina a partir de dispositivos virtuais.

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    Substitua:

    • MACHINE_IMAGE_NAME: nome da imagem de máquina que você quer importar;
    • SOURCE_URI: caminho para o arquivo OVA ou OVF no Cloud Storage;
    • OS: sistema operacional do arquivo OVA. Essa sinalização é opcional por padrão, mas pode ser necessária em alguns casos. Recomendamos que você a forneça.
    • TEMP_SERVICE_ACCOUNT_EMAIL: o endereço de e-mail associado à conta de serviço personalizada criada na etapa anterior. Essa conta de serviço é usada pelas VMs temporárias. Se não for especificada, a VM usará a conta de serviço padrão do Compute Engine.
    • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail associado à conta de serviço personalizada que será anexada a qualquer VM criada a partir dessa imagem de máquina. Não há restrições de permissão para essa conta de serviço. É possível personalizá-la conforme necessário. Se não for especificada, a conta de serviço padrão do Compute Engine será anexada à VM.
    • SCOPES: especifique o nível de acesso da opção --service-account. Se não for especificado, os escopos padrão serão usados. Para mais informações, consulte a sinalização --scopes.

REST

  1. Adicione o dispositivo 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

    Esses papéis mínimos são necessários para a conta de serviço especificada para o argumento -compute-service-account. Saiba mais em Conceder os papéis necessários à conta de serviço do Compute Engine.

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

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "timeout":"7200s",
    "steps":[
      {
        "args":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que a imagem de máquina será importada;
    • MACHINE_IMAGE_NAME: o nome da imagem de máquina a ser importada. Por exemplo, my-machine-image.
    • SOURCE_URI: o URI do arquivo OVA armazenado no Cloud Storage. Por exemplo, gs://my-bucket/my-machine.ova.
    • OS: o sistema operacional do arquivo OVA. Por exemplo, ubuntu-1604. Essa sinalização é opcional por padrão, mas pode ser necessária em alguns casos. Recomendamos que você a forneça. Para ver uma lista de valores compatíveis, consulte as opções de sinalização --os no comando gcloud compute instances import.
    • ZONE: a zona na qual a imagem da máquina será importada.
    • TEMP_SERVICE_ACCOUNT_EMAIL: o endereço de e-mail associado à conta de serviço personalizada criada na etapa anterior. Essa conta de serviço é usada pelas VMs temporárias. Se não for especificada, a VM usará a conta de serviço padrão do Compute Engine.
    • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail associado à conta de serviço personalizada que será anexada a qualquer VM criada a partir dessa imagem de máquina. Não há restrições de permissão para essa conta de serviço. É possível personalizá-la conforme necessário. Se não for especificada, a conta de serviço padrão do Compute Engine será anexada à VM.
    • SCOPES: especifique o nível de acesso da opção --service-account. Se não for especificado, os escopos padrão serão usados. Para mais informações, consulte a sinalização --scopes.

A seguir