Importe dispositivos virtuais


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

Um formato amplamente usado e popular para dispositivos virtuais é o formato OVF. Quando cria pacotes de dispositivos virtuais no formato OVF, gera um pacote OVF. Um pacote OVF é uma pasta que contém um .ovfficheiro descritor e uma coleção de outros recursos, como discos. Quando um pacote OVF é arquivado num único ficheiro, é denominado ficheiro OVA.

Esta página descreve os passos que pode usar para importar uma imagem de máquina de um dispositivo virtual através do Compute Engine.

Antes de começar

Formatos de ficheiros suportados

Pode importar ficheiros de imagens de máquinas nos seguintes formatos através do Compute Engine:

  • Formato de virtualização aberto (OVF): um ficheiro OVF e ficheiros de disco da máquina virtual (VMDK) no mesmo contentor.

  • Aparelho virtual aberto (OVA): um ficheiro OVA que contém um ficheiro OVF e ficheiros de disco. O Compute Engine suporta a importação de ficheiros de imagem de máquina OVA nos seguintes formatos de ficheiros de disco:

    • Disco de máquina virtual (VMDK)
    • QEMU copy-on-write (QCOW)
    • QEMU copy-on-write 2 (QCOW2)
    • Formato de disco melhorado QEMU (QED)
    • VPC
    • Imagem de disco virtual (VDI)
    • Disco rígido virtual v2 (VHDX)

Limitações

Quando importa imagens de máquinas, aplicam-se as seguintes limitações:

  • Não pode importar imagens de máquinas para a série de máquinas de 4.ª geração, uma vez que não suportam volumes do Google Cloud Hyperdisk.
  • Não pode importar imagens de máquinas baseadas na arquitetura Arm.
  • Não pode criar imagens da máquina a partir de VMs de origem com qualquer um dos seguintes:
    • Discos anexados com mais de 200 TB
    • Tipos de máquinas A4, A3, C3D, H3 ou Z3

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

Para importar uma imagem da máquina para uma imagem da máquina do Compute Engine através do Compute Engine, siga estes passos:

  1. Prepare um ficheiro de imagem de máquina para importação
  2. Escolha um projeto de destino
  3. Importe uma imagem de máquina para o Compute Engine

Prepare um ficheiro de máquina para importação

Para importar uma imagem de máquina para uma imagem do Compute Engine, primeiro tem de preparar o ficheiro de imagem de máquina para importação. As secções seguintes abordam estas tarefas detalhadamente.

Adicione o ficheiro de imagem da máquina ao Cloud Storage

Para importar uma imagem de máquina para uma imagem de máquina do Compute Engine, primeiro tem de adicionar o ficheiro de imagem de máquina ao Cloud Storage. Para mais informações, consulte o artigo Carregue objetos a partir de um sistema de ficheiros. Para um melhor desempenho, recomendamos que carregue o ficheiro de imagem da máquina para um contentor no mesmo Google Cloud em que quer criar a imagem da máquina.

Conceda as autorizações necessárias

Para importar uma imagem da máquina para uma imagem da máquina do Compute Engine, conceda autorizações conforme descrito na tabela seguinte.

Função Autorizações necessárias Descrição
Storage Object Viewer roles/storage.objectViewer Conceda à conta de serviço predefinida do Migrate to Virtual Machines no projeto anfitrião (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) a função roles/storage.objectViewer no contentor onde reside a imagem que quer importar. Esta autorização permite que o serviço Migrate to Virtual Machines aceda à imagem de origem.
Administrador da VM Migration roles/vmmigration.admin No projeto anfitrião, conceda à conta de utilizador que quer usar para importar a imagem de origem a função roles/vmmigration.admin.
Conta de serviço da VM Migration roles/vmmigration.serviceAgent Conceda à conta de serviço predefinida do Migrate to Virtual Machines no projeto anfitrião (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) a função roles/vmmigration.serviceAgent no projeto de destino. Por exemplo, se service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com for a conta de serviço de migração para máquinas virtuais no projeto anfitrião, tem de conceder a esta conta de serviço a função roles/vmmigration.serviceAgent para poder criar a imagem no projeto de destino.

Escolha um projeto de destino

Para alojar a imagem da máquina, tem de criar ou escolher 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 o artigo Adicionar um projeto de destino.

Importe uma imagem de máquina para o Compute Engine

Pode importar uma imagem de máquina para o Compute Engine através de comandos da CLI Google Cloud ou da API REST.

Quando importa uma imagem de máquina, o Compute Engine cria alguns recursos temporários, como VMs ou discos, no projeto de destino. Estes recursos temporários são eliminados quando o processo de importação de imagens de máquinas estiver concluído.

gcloud

Para importar uma imagem de máquina para o Compute Engine através da Google Cloud CLI, use o seguinte pedido.

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 o seguinte:

  • IMAGE_NAME: o nome da imagem da máquina que quer criar. Para mais informações sobre as regras de nomenclatura, consulte o artigo Convenção de nomenclatura.
  • SOURCE_FILE: o ficheiro a partir do qual quer importar a imagem da máquina. Introduza o caminho no formato gs://bucket/folder/file. Para obter o caminho de um objeto num contentor, consulte o artigo Ver metadados de objetos. Tenha em atenção que só pode importar imagens de ficheiros .ovf e .ova.
  • REGION_ID: a região na qual quer que o processo de importação de imagens de máquinas seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada numa região, verifique se singleRegionStorage está definido como verdadeiro. Para ver uma lista das regiões suportadas, consulte o artigo Regiões e zonas.
  • HOST_PROJECT_ID: o nome do projeto anfitrião a partir do qual quer migrar a imagem da máquina.
  • TARGET_PROJECT: o projeto de destino no qual quer criar a imagem da máquina. Se ainda não adicionou um projeto de destino, faça-o seguindo as instruções fornecidas em Adicione um projeto de destino.
  • REGION_ID: a região na qual quer que o processo de importação de imagens de máquinas seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada numa região, verifique se singleRegionStorage está definido como verdadeiro. Para ver uma lista das regiões suportadas, consulte o artigo Regiões e zonas.

Para mais informações, consulte gcloud compute migration machine-image-imports.

API REST

Para importar uma imagem de máquina para o Compute Engine através da API REST, siga os passos abaixo.

  1. Crie um recurso de importação de imagens de máquinas através do seguinte pedido.

    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 o seguinte:

    • HOST_PROJECT_ID: o nome do projeto anfitrião a partir do qual quer migrar a imagem da máquina.
    • REGION_ID: a região na qual quer que o processo de importação de imagens de máquinas seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada numa região, verifique se singleRegionStorage está definido como verdadeiro. Para ver uma lista das regiões suportadas, consulte o artigo Regiões e zonas.
    • SOURCE_FILE: o ficheiro a partir do qual quer importar a imagem da máquina. Introduza o caminho no formato gs://bucket/folder/file. Para obter o caminho de um objeto num contentor, consulte o artigo Ver metadados de objetos. Tenha em atenção que só pode importar imagens de máquinas a partir de ficheiros .ova e .ovf.
    • IMAGE_NAME: o nome da imagem da máquina que quer criar. Para mais informações sobre as regras de nomenclatura, consulte o artigo Convenção de nomenclatura.
    • TARGET_PROJECT: o projeto de destino no qual quer criar a imagem da máquina. Se ainda não adicionou um projeto de destino, faça-o seguindo as instruções fornecidas em Adicione um projeto de destino.

    Neste exemplo, IMPORT_NAME é um ID que representa o recurso de importação de imagens de máquinas. Quando importa uma imagem de máquina para o Compute Engine, o Migrate to Virtual Machines cria primeiro um recurso de importação de imagem de máquina. O recurso de importação de imagens da máquina representa o processo de importação de imagens da máquina. Pode usar o comando IMPORT_NAME para obter o link para a imagem da máquina que foi importada como parte do processo de importação de imagens da máquina.

    Consulte a tabela seguinte para ver a lista completa dos campos suportados de pedidos de criação de importação de imagens de máquinas.

    Nome do campo Descrição
    cloudStorageUri O caminho do ficheiro a partir do qual quer importar a imagem da máquina. Introduza o caminho no formato gs://bucket/folder/file. Para obter o caminho de um objeto num contentor, consulte o artigo Ver metadados de objetos.
    Tenha em atenção que só pode importar imagens de máquinas a partir de ficheiros .ovf e .ova.
    machineImageTargetDefaults.targetProject O projeto de destino no qual quer criar a imagem da 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 anfitrião a partir do qual quer migrar a imagem da máquina.
    • TARGET_PROJECT: o projeto de destino no qual quer criar a imagem.
    machineImageTargetDefaults.machine_image_name O nome da imagem da máquina a criar. Para mais informações sobre as regras de nomenclatura, consulte a convenção de nomenclatura de recursos.
    machineImageTargetDefaults.description (Opcional) Uma descrição da imagem da máquina.
    machineImageTargetDefaults.machine_type (Opcional) A máquina com a qual criar a imagem da máquina. Se não especificar o tipo de máquina, o Compute Engine escolhe um tipo de máquina relevante com base nas informações da imagem da máquina de origem.
    machineImageTargetDefaults.labels Para organizar o seu projeto, adicione etiquetas como pares de chave-valor aos seus recursos. Consulte os recursos de etiquetagem.
    machineImageTargetDefaults.tags Adicione as etiquetas que quer anexar à imagem de máquina. Consulte o artigo Faça a gestão das etiquetas para recursos.
    machineImageTargetDefaults.additionalLicenses Pode adicionar até 10 licenças adicionais à instância da VM criada a partir da imagem da máquina importada através de um formato de URL válido. Por exemplo, pode adicionar licenças adicionais através do 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 usada pela imagem da máquina. Por predefinição, não é atribuída nenhuma conta de serviço à imagem da máquina.
    Se criar uma instância do Compute Engine a partir de uma imagem da máquina e planear executar uma aplicação na mesma, a instância pode precisar de acesso a outros serviços e APIs da CLI gcloud. Crie uma conta de serviço no projeto de destino com as autorizações necessárias para aceder a estes serviços e APIs antes de criar a instância do Compute Engine. Em seguida, especifique essa conta de serviço aqui. Para mais informações, consulte o artigo configure uma VM para ser executada como uma conta de serviço.
    Para anexar a conta de serviço à instância do Compute Engine, a sua conta de utilizador no projeto anfitrião do Compute Engine requer as autorizações necessárias. Para mais informações, consulte o artigo Configurar autorizaçõ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 são reforçadas por um conjunto de controlos de segurança que ajudam a defender contra rootkits e bootkits. Veja O que é uma VM protegida?
    machineImageTargetDefaults.singleRegionStorage Defina esta flag como verdadeira se quiser que a imagem da máquina storageLocations seja uma região. Se definir esta flag como false, é selecionada a região múltipla mais próxima.
    machineImageTargetDefaults.skip_os_adaptation Defina esta flag como verdadeira se quiser ignorar a adaptação do SO.
    Para funcionar corretamente no Google Cloud, as VMs criadas a partir de imagens de máquinas importadas requerem alterações à respetiva configuração. Estas alterações são denominadas adaptações do SO. O Compute Engine faz adaptações do SO automaticamente no processo de importação de imagens de máquinas. Para mais informações, consulte o artigo Adapte as instâncias de VM para serem executadas em Google Cloud.
    machineImageTargetDefaults.osAdaptationParameters.licenseType O tipo de licença que quer usar para a imagem de máquina. O Compute Engine suporta licenças de pagamento conforme a utilização (PAYG) e licenças próprias (BYOL) para as suas VMs implementadas. O tipo de licença predefinido para uma VM migrada é atribuído pelo Compute Engine com base no sistema operativo migrado, conforme descrito em Sistemas operativos suportados.
    Se o seu sistema operativo suportar vários tipos de licenças, pode substituir o tipo de licença predefinido para especificar explicitamente um tipo de licença de PAYG ou BYOL.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces O Compute Engine permite-lhe criar opcionalmente imagens de máquinas com várias interfaces de rede (NICs). Cada interface está associada a uma rede VPC diferente, o que dá a essa imagem de máquina acesso a diferentes redes VPC na CLI gcloud.
    Antes de adicionar interfaces de rede adicionais, tenha em atenção as seguintes considerações:
    • A associação de várias interfaces de rede à mesma rede VPC não é suportada. Embora a configuração possa ser guardada, a instanciação da VM falha.
    • Depois de uma instância do Compute Engine ser instanciada a partir de uma imagem de máquina, através de test-clone ou cut-over, não pode adicionar nem remover uma interface de rede na instância criada. Pode repetir test-clone ou cut-over com detalhes de destino diferentes para recriar a instância.
      Para adicionar ou remover uma interface de rede:
      • Selecione Adicionar interface de rede para adicionar uma interface de rede adicional à instância do Compute Engine. Pode definir todas as mesmas opções que usa com a interface de rede inicial.
    Para mais informações, consulte o artigo Criar instâncias com várias interfaces de rede.
    machineImageTargetDefaults.osAdaptationParameters.generalize Defina esta flag como verdadeira se quiser generalizar a imagem da máquina.
    Quando cria uma instância a partir de uma imagem da máquina, o Windows adiciona algumas informações únicas à instância. A generalização é um processo que remove estas informações para que possa criar várias instâncias a partir da mesma imagem da máquina.
    machineImageTargetDefaults.encryption A Google-owned and Google-managed encryption key que quer usar para encriptar os seus dados durante o processo de importação. Para mais informações, consulte o artigo Encriptação predefinida em repouso.

    Use chaves de encriptação geridas pelo cliente (CMEK) para encriptar os dados da imagem da máquina. Estas chaves de encriptação são criadas, geridas e detidas por si. Para mais informações, consulte o artigo Proteja os recursos com chaves do Cloud KMS.

    Nota: a chave de encriptação que selecionar para utilização durante o processo de importação também vai ser usada para a imagem de saída.

    Quando adiciona uma CMEK, tem de conceder autorizações conforme descrito na tabela seguinte.
    Função Autorizações necessárias Descrição
    Conta de serviço de migração de VMs na nuvem roles/vmmigration.serviceAgent Conceda esta autorização à conta de serviço do Compute Engine para encriptar os dados da imagem da máquina criada durante o processo de importação.
    Agente do serviço do Compute Engine roles/compute.serviceAgent Conceda esta autorização ao agente do serviço Compute Engine para encriptar os dados durante o processo de importação.

    Deverá ver uma resposta semelhante à seguinte resposta de exemplo.

    {
      "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 a tarefa de importação de imagens de máquinas está concluída sondando a operação com o seguinte comando.

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

    Substitua o seguinte:

    • HOST_PROJECT_ID: o nome do projeto anfitrião a partir do qual está a migrar a imagem da máquina.
    • REGION_ID: a região na qual quer que o processo de importação de imagens de máquinas seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada numa região, verifique se singleRegionStorage está definido como verdadeiro. Para ver uma lista das regiões suportadas, consulte o artigo Regiões e zonas.
    • OPERATION_ID: o ID da operação da tarefa de migração.

    Deverá ver uma resposta de conclusão da operação semelhante à seguinte resposta de exemplo.

      {
        "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. Monitorize a tarefa de importação de imagens de máquinas para ver se foi concluída através do seguinte comando.

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

    Substitua o seguinte:

    • HOST_PROJECT_ID: o nome do projeto anfitrião a partir do qual está a migrar a imagem da máquina.
    • REGION_ID: a região na qual quer que o processo de importação de imagens de máquinas seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada numa região, verifique se singleRegionStorage está definido como verdadeiro. Para ver uma lista das regiões suportadas, consulte o artigo Regiões e zonas.
    • IMPORT_NAME: o ID que representa o recurso de importação de imagens da máquina. Quando importa uma imagem de máquina para o Compute Engine, o Migrate to Virtual Machines cria primeiro um recurso de importação de imagem de máquina. O recurso de importação de imagens da máquina representa o processo de importação de imagens da máquina. Pode usar o comando IMPORT_NAME para obter o link para a imagem da máquina que foi importada como parte do processo de importação de imagens da máquina.

    Deve ver uma resposta de conclusão da tarefa semelhante à seguinte resposta de exemplo.

    {
      "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"
    }
    

O que se segue?