Importar dispositivos virtuais

Um dispositivo virtual é um pacote que contém imagens de disco e configurações de hardware para uma instância de máquina virtual (VM).

Um formato amplamente utilizado para dispositivos virtuais é o OVF. Quando você empacota dispositivos virtuais nesse formato, você gera um pacote OVF. Um pacote OVF é uma pasta que contém um arquivo descritor .ovf e uma coleção de outros recursos, como discos. Quando esse pacote é arquivado em um único arquivo, ele é chamado de arquivo OVA.

Esta página descreve as etapas para importar uma imagem de máquina de um dispositivo virtual usando o Compute Engine.

Antes de começar

Formatos de arquivo compatíveis

É possível importar arquivos de imagem de máquina nos seguintes formatos usando o Compute Engine:

  • Open Virtualization Format (OVF): um arquivo OVF e arquivos de disco de máquina virtual (VMDK, na sigla em inglês) no mesmo bucket.

  • Open Virtual Appliance (OVA): um arquivo OVA que contém arquivos de disco e um arquivo OVF. O Compute Engine é compatível com a importação de arquivos de imagem de máquina OVA nos seguintes formatos de arquivo de disco (siglas em inglês):

    • Disco de máquina virtual (VMDK)
    • Cópia em gravação do QEMU (QCOW)
    • Cópia em gravação do QEMU 2 (QCOW2)
    • Formato de disco aprimorado QEMU (QED)
    • VPC
    • Imagem do disco virtual (VDI)
    • Disco rígido virtual v2 (VHDX)

Limitações

Ao importar imagens de máquina, as seguintes limitações se aplicam:

Processo de importação de imagens de máquina

Para importar uma imagem de máquina para uma do Compute Engine usando o Compute Engine, siga estas etapas:

  1. Preparar um arquivo de imagem de máquina para importação
  2. Escolher um projeto de destino
  3. Importar uma imagem de máquina para o Compute Engine

Preparar um arquivo de máquina para importação

Para importar uma imagem de máquina para uma imagem do Compute Engine, comece preparando o arquivo de imagem de máquina para importação. As seções a seguir abordam essas tarefas em detalhes.

Adicionar o arquivo de imagem de máquina ao Cloud Storage

Para importar uma imagem de máquina para uma imagem do Compute Engine, comece adicionando o arquivo de imagem de máquina ao Cloud Storage. Para mais informações, consulte Fazer upload de objetos de um sistema de arquivos. Para um melhor desempenho, recomendamos que você faça upload do arquivo de imagem de máquina para um bucket no mesmo Google Cloud em que quer criar a imagem da máquina.

Conceder as permissões necessárias

Para importar uma imagem de máquina para uma imagem de máquina do Compute Engine, conceda permissões conforme descrito na tabela a seguir.

Papel Permissões necessárias Descrição
Leitor de objetos do Storage roles/storage.objectViewer Conceda à conta de serviço padrão do Migrate to Virtual Machines no projeto host (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) o papel roles/storage.objectViewer no bucket em que a imagem que você quer importar está. Essa permissão permite que o Migrate to Virtual Machines acesse a imagem de origem.
Administrador do VM Migration roles/vmmigration.admin No projeto de host, conceda à conta de usuário que você quer usar para importar a imagem de origem o papel roles/vmmigration.admin.
Conta de serviço da VM Migration roles/vmmigration.serviceAgent Conceda à conta de serviço padrão do Migrate to Virtual Machines no projeto host (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) o papel roles/vmmigration.serviceAgent no projeto de destino. Por exemplo, se service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com é a conta de serviço Migrate to Virtual Machines no projeto host, conceda a essa conta de serviço o papel roles/vmmigration.serviceAgent para criar a imagem no projeto de destino

Escolher um projeto de destino

Para hospedar a imagem de máquina, crie ou escolha um projeto de destino. Um projeto de destino define o projeto de destino de uma imagem de máquina. Para mais informações sobre como criar ou escolher um projeto de destino, consulte Como adicionar um projeto de destino.

Importar uma imagem de máquina para o Compute Engine

É possível importar uma imagem de máquina para o Compute Engine usando a Google Cloud CLI ou comandos da API REST.

Quando você importa uma imagem de máquina, o Compute Engine cria alguns recursos temporários, como VMs ou discos, no projeto de destino. Essas recursos temporários são excluídos quando o processo de importação da imagem de máquina é concluído.

gcloud

Para importar uma imagem de máquina para o Compute Engine usando a CLI do Google Cloud, use a solicitação a seguir.

gcloud alpha migration vms machine-image-imports create IMAGE_NAME \
--source-file=SOURCE_FILE \
--location=REGION_ID \
--target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT

Substitua:

  • IMAGE_NAME: o nome da imagem de máquina que você quer criar. Para mais informações sobre as regras de nomenclatura, consulte a Convenção de nomenclatura.
  • SOURCE_FILE: o arquivo de onde você quer importar a imagem de máquina. Insira o caminho no formato gs://bucket/folder/file. Para receber o caminho de um objeto dentro de um bucket, consulte Visualizar metadados do objeto. Observe que só é possível importar imagens de arquivos .ovf e .ova.
  • REGION_ID: a região em que você quer que o processo de importação da imagem seja executado. Ela será criada na multirregião mais próxima. Se quiser que a imagem seja criada em uma região, verifique se singleRegionStorage está definido como "true". Para conferir uma lista de regiões compatíveis, consulte as Regiões e zonas.
  • HOST_PROJECT_ID: o nome do projeto host de onde você quer migrar a imagem de máquina.
  • TARGET_PROJECT: o projeto de destino onde você quer criar a imagem. Se você ainda não adicionou um projeto de destino, siga as instruções em Adicionar um projeto de destino.
  • REGION_ID: a região em que você quer que o processo de importação da imagem seja executado. Ela será criada na multirregião mais próxima. Se quiser que a imagem seja criada em uma região, verifique se singleRegionStorage está definido como "true". Para conferir uma lista de regiões compatíveis, consulte as Regiões e zonas.

Veja mais informações em gcloud compute migration machine-image-imports.

API REST

Para importar uma imagem de máquina para o Compute Engine usando a API REST, siga as etapas a seguir.

  1. Crie um recurso de importação de imagem de máquina usando a solicitação a seguir.

    POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME
    {
    "cloudStorageUri": "SOURCE_FILE",
    "machineImageTargetDefaults": {
    "imageName": "IMAGE_NAME",
    "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT",
    ...
    }
    }
    

    Substitua:

    • HOST_PROJECT_ID: o nome do projeto host de onde você quer migrar a imagem de máquina.
    • REGION_ID: a região em que você quer que o processo de importação da imagem seja executado. Ela será criada na multirregião mais próxima. Se quiser que a imagem seja criada em uma região, verifique se singleRegionStorage está definido como "true". Para conferir uma lista de regiões compatíveis, consulte as Regiões e zonas.
    • SOURCE_FILE: o arquivo de onde você quer importar a imagem de máquina. Insira o caminho no formato gs://bucket/folder/file. Para receber o caminho de um objeto dentro de um bucket, consulte Visualizar metadados do objeto. Só é possível importar imagens de máquina de arquivos .ova e .ovf.
    • IMAGE_NAME: o nome da imagem de máquina que você quer criar. Para mais informações sobre as regras de nomenclatura, consulte a Convenção de nomenclatura.
    • TARGET_PROJECT: o projeto de destino onde você quer criar a imagem. Se você ainda não adicionou um projeto de destino, siga as instruções em Adicionar um projeto de destino.

    Neste exemplo, IMPORT_NAME é um ID que representa o recurso de importação da imagem de máquina. Quando você importa uma imagem de máquina para o Compute Engine, o Migrate to Virtual Machines cria um recurso de importação da imagem. Esse recurso representa o processo de importação da imagem. É possível usar o IMPORT_NAME para acessar o link para a imagem importada como parte do processo de importação.

    Consulte a tabela a seguir para ver a lista completa dos campos compatíveis com a criação de campos de solicitação de importação de imagens de máquina.

    Nome do campo Descrição
    cloudStorageUri O caminho do arquivo de onde você quer importar a imagem de máquina. Insira o caminho no formato gs://bucket/folder/file. Para receber o caminho de um objeto dentro de um bucket, consulte Visualizar metadados do objeto.
    Só é possível importar imagens de máquina de arquivos .ovf e .ova.
    machineImageTargetDefaults.targetProject O projeto de destino onde você quer criar a imagem de máquina. Para mais informações, consulte a referência da API do projeto de destino. Por exemplo:
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    No exemplo, substitua o seguinte:
    • HOST_PROJECT_ID: o nome do projeto host de onde você quer migrar a imagem de máquina.
    • TARGET_PROJECT: o projeto de destino em que você quer criar a imagem.
    machineImageTargetDefaults.machine_image_name O nome da imagem de máquina a ser criada. Para mais informações sobre as regras de nomeação, consulte a convenção de nomeação de recursos.
    machineImageTargetDefaults.description (Opcional) Uma descrição da imagem de máquina.
    machineImageTargetDefaults.machine_type (Opcional) A máquina que será usada para criar a imagem. Se você não especificar o tipo de máquina, o Compute Engine vai escolher um tipo relevante com base nas informações da imagem da máquina de origem.
    machineImageTargetDefaults.labels Para organizar o projeto, adicione rótulos como pares de chave-valor aos seus recursos. Consulte Como rotular recursos.
    machineImageTargetDefaults.tags Adicione as tags que você quer anexar à imagem de máquina. Consulte Gerenciar tags de recursos.
    machineImageTargetDefaults.additionalLicenses É possível adicionar até 10 licenças extras à instância de VM criada com base em imagem de máquina importada usando um formato de URL válido. Por exemplo, é possível adicionar mais licenças usando o seguinte formato de URL:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    machineImageTargetDefaults.service_account Especifique a conta de serviço no projeto de destino usado pela imagem de máquina. Por padrão, nenhuma conta de serviço é atribuída à imagem de máquina.
    Se você criar uma instância do Compute Engine com base em uma imagem de máquina e planejar a execução de um aplicativo nele, a instância poderá precisar de acesso a outros serviços e APIs da gcloud CLI. Crie uma conta de serviço no projeto de destino com as permissões necessárias para acessar esses serviços e APIs antes de criar a instância do Compute Engine. Depois especifique a conta de serviço aqui. Para mais informações, consulte configurar uma VM para ser executada como conta de serviço.
    Para anexar a conta de serviço à instância do Compute Engine, sua conta de usuário no projeto host do Compute Engine precisa das permissões necessárias. Para mais informações, consulte Como configurar permissões na conta de serviço do projeto de destino.
    machineImageTargetDefaults.shielded_instance_config (Opcional) Ative a VM protegida nesta instância. As VMs protegidas têm proteção reforçada por um conjunto de controles de segurança que ajudam a proteger contra rootkits e bootkits. Consulte O que é uma VM protegida?
    machineImageTargetDefaults.singleRegionStorage Defina essa flag como "true" se quiser que a imagem de máquina storageLocations seja uma região. Se você definir essa flag como "false", a multirregião mais próxima será selecionada.
    machineImageTargetDefaults.skip_os_adaptation Defina essa flag como "true" se quiser pular a adaptação do SO.
    Para funcionar corretamente no Google Cloud, as VMs criadas com base em imagens de máquina importadas exigem alterações na configuração. Essas alterações são chamadas de adaptações de SO. O Compute Engine executa automaticamente adaptações do SO no processo de importação da imagem. Para mais informações, consulte Adaptar instâncias de VM para execução no Google Cloud.
    machineImageTargetDefaults.osAdaptationParameters.licenseType O tipo de licença que você quer usar para a imagem de máquina. O Compute Engine oferece suporte a licenças de pagamento por uso (PAYG, na sigla em inglês) e licenças adquiridas pelo usuário (BYOL) para as VMs implantadas. O tipo de licença padrão de uma VM migrada é atribuído pelo Compute Engine com base no sistema operacional migrado, conforme descrito em Sistemas operacionais compatíveis.
    Se seu sistema operacional for compatível com vários tipos de licença, será possível substituir o tipo de licença padrão para especificar explicitamente um tipo de licença PAYG ou BYOL.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Com o Compute Engine, é possível criar imagens de máquina com várias interfaces de rede (NICs). Cada interface é anexada a uma rede VPC diferente, oferecendo a essa imagem de máquina acesso a diferentes redes VPC na gcloud CLI.
    Antes de adicionar novas interfaces de rede, considere as informações a seguir:
    • Não é possível anexar várias interfaces de rede à mesma rede VPC. Embora a configuração possa ser salva, a instanciação da VM vai falhar.
    • Depois que uma instância do Compute Engine é instanciada de uma imagem de máquina, usando test-clone ou cut-over, não será possível adicionar ou remover uma interface de rede da instância criada. É possível repetir test-clone ou cut-over com detalhes de destino diferentes para recriar a instância.
      Para adicionar ou remover uma interface de rede, faça o seguinte:
      • Selecione Adicionar interface de rede para incluir mais uma interface de rede na instância do Compute Engine. É possível definir as mesmas opções que você define com a interface de rede inicial.
    Para mais informações, consulte Como criar instâncias com várias interfaces de rede.
    machineImageTargetDefaults.osAdaptationParameters.generalize Defina essa flag como "true" se quiser generalizar a imagem de máquina.
    Quando você cria uma instância com base em uma imagem, o Windows adiciona algumas informações exclusivas dela. A generalização é um processo que remove essas informações para que você possa criar várias instâncias com base na mesma imagem.
    machineImageTargetDefaults.encryption O Google-owned and Google-managed encryption key que você quer usar para criptografar seus dados durante o processo de importação. Para mais informações, consulte Criptografia padrão em repouso.

    Use chaves de criptografia gerenciadas pelo cliente (CMEK) para criptografar os dados da imagem de máquina. É possível criar e gerenciar suas chaves de criptografia. Para mais informações, consulte Proteger recursos usando chaves do Cloud KMS.

    Observação: a chave de criptografia selecionada para uso durante o processo de importação também será usada para a imagem de saída.

    Ao adicionar uma CMEK, você precisa conceder permissões conforme descrito na tabela a seguir.
    Papel Permissões necessárias Descrição
    Conta de serviço do Cloud VM Migration roles/vmmigration.serviceAgent Conceda essa permissão à conta de serviço do Compute Engine para criptografar os dados da imagem de máquina criada durante o processo de importação.
    Agente de serviço do Compute Engine roles/compute.serviceAgent Conceda essa permissão ao agente de serviço do Compute Engine para criptografar os dados durante o processo de importação.

    Será mostrada uma resposta semelhante ao exemplo de resposta a seguir.

    {
      "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
      "metadata": {
        "createTime": "2023-10-31T09:12:26.94928636Z",
        "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
        "verb": "create",
        "apiVersion": "v1",
        "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
      }
    }
    
  2. Verifique se o job de importação de imagem de máquina foi concluído pesquisando a operação com o comando a seguir.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
    

    Substitua:

    • HOST_PROJECT_ID: o nome do projeto host de onde você está migrando a imagem de máquina.
    • REGION_ID: a região em que você quer que o processo de importação da imagem seja executado. Ela será criada na multirregião mais próxima. Se quiser que a imagem seja criada em uma região, verifique se singleRegionStorage está definido como "true". Para conferir uma lista de regiões compatíveis, consulte as Regiões e zonas.
    • OPERATION_ID: o ID da operação do job de migração.

    Você verá uma resposta de conclusão da operação semelhante ao exemplo a seguir.

      {
        "done": true,
        "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
        "response": {
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport",
          "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "cloudStorageUri": "SOURCE_FILE",
          "createTime": "2023-10-31T09:04:04.413664947Z",
          "machineImageTargetDefaults": {
            "imageName": "IMAGE_NAME",
            "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
          },
          "recentImageImportJobs": [
            {
              "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
              "diskImageTargetDetails": {
               "imageName": "IMAGE_NAME",
               "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
            },
             "state": "PENDING"
           }
          ]
        },
        "metadata": {
          "createTime": "2023-10-31T09:04:04.416740716Z",
          "endTime": "2023-10-31T09:05:36.79987142Z",
          "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "verb": "create",
          "apiVersion": "v1",
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
        }
      }
    
  3. Monitore o job de importação de imagem de máquina até a conclusão usando o comando a seguir.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
    

    Substitua:

    • HOST_PROJECT_ID: o nome do projeto host de onde você está migrando a imagem de máquina.
    • REGION_ID: a região em que você quer que o processo de importação da imagem seja executado. Ela será criada na multirregião mais próxima. Se quiser que a imagem seja criada em uma região, verifique se singleRegionStorage está definido como "true". Para conferir uma lista de regiões compatíveis, consulte as Regiões e zonas.
    • IMPORT_NAME: o ID que representa o recurso de importação de imagem de máquina. Quando você importa uma imagem de máquina para o Compute Engine, o Migrate to Virtual Machines cria um recurso de importação da imagem. Esse recurso representa o processo de importação da imagem. É possível usar o IMPORT_NAME para acessar o link para a imagem importada como parte do processo de importação.

    Você vai ver uma resposta de conclusão de job semelhante ao exemplo de resposta a seguir.

    {
      "createTime":"2023-10-31T09:12:27.053788394Z",
      "createdResources":[
        "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME"
      ],
      "diskImageTargetDetails": {
        "imageName":"IMAGE_NAME",
        "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
      },
      "endTime":"2023-10-31T09:16:50.224865783Z",
      "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
      "state":"SUCCEEDED"
    }
    

A seguir