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 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 um disco de máquina virtual. (VMDK) no mesmo bucket.
  • Open Virtual Appliance (OVA): um arquivo OVA que contém um arquivo OVF. VMDK.

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

Para importar uma imagem de máquina para o 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, primeiro você precisa preparar o arquivo de imagem de máquina para importação. As seções a seguir discutem 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, primeiro você precisa adicionar 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 da máquina para um bucket no mesmo Google Cloud em que você quer criar a imagem da máquina.

Conceder as permissões necessárias

Para importar uma imagem de máquina para uma imagem 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/vmmigration.serviceAgent 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 que 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 na qual você quer que o processo de importação da imagem da máquina seja executado. A imagem da máquina é criada na multirregião mais próxima. Se você quiser que a imagem da máquina seja criada em uma região, verifique se singleRegionStorage está definido como verdadeiro. Para conferir uma lista de regiões compatíveis, consulte Regiões e zonas.
  • HOST_PROJECT_ID: o nome do projeto host. do qual você quer migrar a imagem de máquina.
  • TARGET_PROJECT: o projeto de destino em que você quer criar a imagem de máquina. Se você ainda não adicionou um projeto de destino, use as instruções fornecidas em Adicionar um projeto de destino.
  • REGION_ID: a região na qual você quer que o processo de importação da imagem da máquina seja executado. A imagem da máquina é criada na multirregião mais próxima. Se você quiser que a imagem da máquina seja criada em uma região, verifique se singleRegionStorage está definido como verdadeiro. Para conferir uma lista de regiões compatíveis, consulte Regiões e zonas.

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

API REST

Para importar uma imagem de máquina para o Compute Engine usando a API REST, use a 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. do qual você quer migrar a imagem de máquina.
    • REGION_ID: a região em que você quer que o processo de importação de imagem de máquina seja executado. A imagem de máquina é criada na multirregião mais próxima. Se você quiser que a imagem de máquina seja criada em uma região, verifique se singleRegionStorage está definido como verdadeiro. Para conferir uma lista de regiões compatíveis, consulte Regiões e zonas.
    • SOURCE_FILE: o arquivo de que 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áquinas 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 em que você quer criar a imagem de máquina. Se você ainda não adicionou um projeto de destino, use as instruções fornecidas em Adicionar um projeto de destino.

    Neste exemplo, IMPORT_NAME é um ID que representa o recurso de importação de imagem da máquina. Quando você 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 de máquina representa o processo de importação de imagens de máquina. Use IMPORT_NAME para acessar o link para a imagem de máquina que foi 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 imagem da máquina.

    Nome do campo Descrição
    cloudStorageUri O caminho do arquivo que você quer usar para importar a imagem de máquina. Insira o caminho no formato gs://bucket/folder/file. Para ver o caminho de um objeto dentro de um bucket, consulte Visualizar metadados do objeto.
    Só é possível importar imagens de máquinas de arquivos .ovf e .ova.
    machineImageTargetDefaults.targetProject O projeto de destino em que você 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 host. do qual 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 nomenclatura, consulte a convenção de nomenclatura 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 de máquina 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 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 a partir da 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 máquina imagem. Por padrão, nenhuma conta de serviço é atribuída à imagem de máquina.
    Se você criar uma instância do Compute Engine a partir de uma imagem de máquina e planejar a execução de um aplicativo nele, a instância pode precisar de acesso a outros serviços e APIs da gcloud CLI. Criar uma conta de serviço no projeto de destino com as permissões necessárias para acessar essas 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 no projeto de destino conta de serviço.
    machineImageTargetDefaults.shielded_instance_config (Opcional) Ative a VM protegida nesta instância. As VMs protegidas têm aumento da proteção realizado por um conjunto de controles de segurança que ajudam a proteger contra rootkits e bootkits Consulte O que é VM protegida?
    machineImageTargetDefaults.singleRegionStorage Defina essa flag como "true" se quiser que a imagem de máquina storageLocations para ser uma região. Se você definir essa flag como falsa, 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 a partir de imagens de máquinas importadas exigem alterações na configuração. Essas mudanças são chamadas de adaptações do SO. O Compute Engine executa adaptações do SO automaticamente no processo de importação da imagem de máquina. 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 é compatível com licenças de pagamento por utilização (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, você poderá modificar o tipo de licença padrão para especificar explicitamente um tipo de licença PAYG ou BYOL.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces O Compute Engine permite 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 no Google Cloud.
    Antes de adicionar 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 todas as mesmas opções que você faz 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 a partir de uma imagem de máquina, o Windows adiciona algumas informações exclusivas a ela. Generalizar é um processo que remove essas informações para que você possa criar várias instâncias a partir da mesma imagem de máquina.
    machineImageTargetDefaults.encryption A chave de criptografia gerenciada pelo Google 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. Você pode criar e gerenciar suas chaves. Para mais informações, consulte Proteger recursos usando chaves do Cloud KMS.
    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. do qual você está migrando a imagem de máquina.
    • REGION_ID: a região em que você quer que o processo de importação de imagem de máquina seja executado. A imagem de máquina é criada na multirregião mais próxima. Se você quiser que a imagem de máquina seja criada em uma região, verifique se singleRegionStorage está definido como verdadeiro. Para conferir uma lista de regiões compatíveis, consulte 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 de resposta 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. do qual você está migrando a imagem de máquina.
    • REGION_ID: a região em que você quer que o processo de importação de imagem de máquina seja executado. A imagem de máquina é criada na multirregião mais próxima. Se você quiser que a imagem de máquina seja criada em uma região, verifique se singleRegionStorage está definido como verdadeiro. Para conferir uma lista de regiões compatíveis, consulte 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 primeiro um recurso de importação de imagem de máquina. O recurso de importação de imagens de máquina representa o processo de importação de imagens de máquina. Use IMPORT_NAME para acessar o link para a imagem de máquina que foi 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