Importar 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 utilizado e popular para dispositivos virtuais é o formato OVF . Ao empacotar dispositivos virtuais no formato OVF, 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 um pacote OVF é arquivado em um único arquivo, ele é chamado de arquivo OVA.

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

Antes de começar

Formatos de arquivo suportados

É 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) no mesmo bucket.

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

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

Limitações

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

  • Não é possível importar imagens de máquinas para séries de máquinas de 4ª geração, pois elas não são compatíveis com volumes do Google Cloud Hyperdisk.
  • Não é possível importar imagens de máquinas baseadas na arquitetura Arm.
  • Não é possível criar imagens de máquina a partir de VMs de origem com qualquer um dos seguintes itens:
    • Discos anexados com mais de 200 TB
    • Tipos de máquina A4, A3, C3D, H3 ou Z3

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

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

  1. Preparar um arquivo de imagem de máquina para importação
  2. Escolha um projeto alvo
  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.

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

Para importar uma imagem de máquina para uma imagem de máquina do Compute Engine, primeiro você precisa adicionar o arquivo de imagem de máquina ao Cloud Storage. Para obter mais informações, consulte Fazer upload de objetos de um sistema de arquivos . Para obter melhor desempenho, recomendamos fazer upload do arquivo de imagem de máquina para um bucket no mesmo Google Cloud no qual você deseja criar a imagem da máquina.

Conceda 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
Visualizador de objetos de armazenamento 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 ) a função roles/storage.objectViewer no bucket onde reside a imagem que você deseja importar. Essa permissão permite que o Migrate to Virtual Machines acesse a imagem de origem.
Administrador de migração de VM roles/vmmigration.admin No projeto host, conceda à conta do usuário que você deseja usar para importar a imagem de origem a função roles/vmmigration.admin .
Conta de serviço de migração de VM 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 ) 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 Migrate to Virtual Machines no projeto host, você deverá conceder a essa conta de serviço a função roles/vmmigration.serviceAgent para poder criar a imagem no projeto de destino.

Escolha um projeto alvo

Para hospedar a imagem de máquina, você deve criar ou escolher um projeto de destino. Um projeto de destino define o projeto de destino para uma imagem de máquina. Para obter mais informações sobre como criar ou escolher um projeto de destino, consulte Adicionando 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 comandos da CLI do Google Cloud ou 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. Esses recursos temporários são excluídos quando o processo de importação da imagem da 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 o seguinte:

  • IMAGE_NAME : o nome da imagem da máquina que você deseja criar. Para obter mais informações sobre as regras de nomenclatura, consulte Convenção de nomenclatura .
  • SOURCE_FILE : o arquivo do qual deseja importar a imagem da máquina. Insira o caminho no formato gs://bucket/folder/file . Para obter o caminho de um objeto dentro de um bucket, consulte Visualizar metadados de objetos . Observe que você só pode importar imagens de arquivos .ovf e .ova .
  • REGION_ID : a região na qual você deseja que o processo de importação de imagem de máquina seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada em uma região, certifique-se de que singleRegionStorage esteja definido como verdadeiro. Para obter uma lista de regiões suportadas, consulte Regiões e zonas .
  • HOST_PROJECT_ID : o nome do projeto host do qual você deseja migrar a imagem da máquina.
  • TARGET_PROJECT : o projeto de destino no qual você deseja criar a imagem de máquina. Se você ainda não adicionou um projeto de destino, faça-o usando as instruções fornecidas em Adicionar um projeto de destino .
  • REGION_ID : a região na qual você deseja que o processo de importação de imagem de máquina seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada em uma região, certifique-se de que singleRegionStorage esteja definido como verdadeiro. Para obter uma lista de regiões suportadas, consulte Regiões e zonas .

Para obter mais informações, consulte gcloud migration vms 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 o seguinte:

    • HOST_PROJECT_ID : o nome do projeto host do qual você deseja migrar a imagem da máquina.
    • REGION_ID : a região na qual você deseja que o processo de importação de imagem de máquina seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada em uma região, certifique-se de que singleRegionStorage esteja definido como verdadeiro. Para obter uma lista de regiões suportadas, consulte Regiões e zonas .
    • SOURCE_FILE : o arquivo do qual deseja importar a imagem da máquina. Insira o caminho no formato gs://bucket/folder/file . Para obter o caminho de um objeto dentro de um bucket, consulte Visualizar metadados de objetos . Observe que você só pode importar imagens de máquina de arquivos .ova e .ovf .
    • IMAGE_NAME : o nome da imagem da máquina que você deseja criar. Para obter mais informações sobre as regras de nomenclatura, consulte Convenção de nomenclatura .
    • TARGET_PROJECT : o projeto de destino no qual você deseja criar a imagem de máquina. Se você ainda não adicionou um projeto de destino, faça-o usando 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 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 imagem de máquina representa o processo de importação de imagem de máquina. Você pode usar IMPORT_NAME para obter o link para a imagem de máquina que foi importada como parte do processo de importação de imagem de máquina.

    Consulte a tabela a seguir para obter a lista completa de campos suportados de campos de solicitação de criação de importação de imagem de máquina.

    Nome do campo Descrição
    cloudStorageUri O caminho do arquivo do qual você deseja importar a imagem da máquina. Insira o caminho no formato gs://bucket/folder/file . Para obter o caminho de um objeto dentro de um bucket, consulte Visualizar metadados de objetos .
    Observe que você só pode importar imagens de máquina de arquivos .ovf e .ova .
    machineImageTargetDefaults.targetProject O projeto de destino no qual você deseja criar a imagem de máquina. Para obter mais informações, consulte 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ê deseja migrar a imagem da máquina.
    • TARGET_PROJECT : o projeto de destino no qual você deseja criar a imagem.
    machineImageTargetDefaults.machine_image_name O nome da imagem da máquina a ser criada. Para obter mais informações sobre as regras de nomenclatura, consulte 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 você não especificar o tipo de máquina, o Compute Engine escolherá um tipo de máquina relevante com base nas informações da imagem da máquina de origem.
    machineImageTargetDefaults.labels Para organizar seu projeto, adicione rótulos como pares de valores-chave aos seus recursos. Consulte Rotulagem de recursos .
    machineImageTargetDefaults.tags Adicione todas as tags que deseja anexar à imagem da máquina. Consulte Gerenciar tags para recursos .
    machineImageTargetDefaults.additionalLicenses Você pode adicionar até 10 licenças adicionais à instância de VM criada a partir da imagem de máquina importada usando um formato de URL válido. Por exemplo, você pode adicionar licenças adicionais 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 da máquina.
    Se você criar uma instância do Compute Engine a partir de uma imagem de máquina e planejar executar um aplicativo nela, a instância poderá precisar de acesso a outros serviços e APIs da CLI gcloud. 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. Em seguida, especifique essa conta de serviço aqui. Para obter mais informações, consulte configurar uma VM para ser executada como uma 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 requer as permissões necessárias. Para obter mais informações, consulte Configurar permissões na conta de serviço do projeto de destino .
    machineImageTargetDefaults.shielded_instance_config (Opcional) Habilite a VM protegida nesta instância. As VMs protegidas são reforçadas por um conjunto de controles de segurança que ajudam na defesa contra rootkits e bootkits. Consulte O que é VM protegida?
    machineImageTargetDefaults.singleRegionStorage Defina esse sinalizador como verdadeiro se desejar que a imagem da máquina storageLocations seja uma região. Se você definir esse sinalizador como falso, a multirregião mais próxima será selecionada.
    machineImageTargetDefaults.skip_os_adaptation Defina este sinalizador como verdadeiro se quiser pular a adaptação do sistema operacional.
    Para funcionar corretamente em Google Cloud, as VMs criadas a partir de imagens de máquinas importadas exigem alterações em sua configuração. Essas mudanças são chamadas de adaptações do sistema operacional . O Compute Engine realiza adaptações do sistema operacional automaticamente no processo de importação de imagens de máquina. Para obter mais informações, consulte Adaptar instâncias de VM para execução Google Cloud .
    machineImageTargetDefaults.osAdaptationParameters.licenseType O tipo de licença que você deseja usar para sua imagem de máquina. O Compute Engine oferece suporte a licenças pré-pagas (PAYG) e traga suas próprias licenças (BYOL) para suas VMs implantadas. O tipo de licença padrão para uma VM migrada é atribuído pelo Compute Engine com base no sistema operacional migrado, conforme descrito em Sistemas operacionais compatíveis .
    Se o seu sistema operacional suportar vários tipos de licença, você poderá substituir o tipo de licença padrão para especificar explicitamente um tipo de licença PAYG ou BYOL.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Opcionalmente, o Compute Engine permite criar imagens de máquina com várias interfaces de rede (NICs). Cada interface é anexada a uma rede VPC diferente, dando a essa imagem de máquina acesso a diferentes redes VPC na CLI gcloud.
    Antes de adicionar interfaces de rede adicionais, esteja ciente das seguintes considerações:
    • Não há suporte para anexar várias interfaces de rede à mesma rede VPC. Embora a configuração possa ser salva, a instanciação da VM falhará.
    • Depois que uma instância do Compute Engine é instanciada a partir de uma imagem de máquina, usando test-clone ou cut-over , não é possível adicionar ou remover uma interface de rede na instância criada. Você 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. Você pode definir todas as mesmas opções da interface de rede inicial.
    Para obter mais informações, consulte Criando instâncias com diversas interfaces de rede .
    machineImageTargetDefaults.osAdaptationParameters.generalize Defina este sinalizador como verdadeiro se desejar generalizar a imagem da máquina.
    Quando você cria uma instância a partir de uma imagem de máquina, o Windows adiciona algumas informações exclusivas à instância. Generalização é 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 O Google-owned and Google-managed encryption key que você deseja usar para criptografar seus dados durante o processo de importação. Para obter mais informações, consulte Criptografia padrão em repouso .

    Use chaves de criptografia gerenciadas pelo cliente (CMEK) para criptografar os dados da imagem da máquina. Essas chaves de criptografia são criadas, gerenciadas e de sua propriedade. Para obter mais informações, consulte Proteger recursos usando chaves do Cloud KMS .
    Ao adicionar uma CMEK, você deve conceder permissões conforme descrito na tabela a seguir.
    Papel Permissões necessárias Descrição
    Conta de serviço de migração de VM na nuvem funções/vmmigration.serviceAgent Conceda essa permissão à conta de serviço do Compute Engine para criptografar dados da imagem de máquina criada durante o processo de importação.
    Agente de serviço do Compute Engine funções/compute.serviceAgent Conceda essa permissão ao agente de serviço do Compute Engine para criptografar os dados durante o processo de importação.

    Você deverá ver 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 trabalho de importação de imagem de máquina foi concluído pesquisando a operação usando o comando a seguir.

    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 host do qual você está migrando a imagem da máquina.
    • REGION_ID : a região na qual você deseja que o processo de importação de imagem de máquina seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada em uma região, certifique-se de que singleRegionStorage esteja definido como verdadeiro. Para obter uma lista de regiões suportadas, consulte Regiões e zonas .
    • OPERATION_ID : o ID da operação do trabalho de migração.

    Você deverá 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 a conclusão do trabalho de importação de imagem de máquina 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 o seguinte:

    • HOST_PROJECT_ID : o nome do projeto host do qual você está migrando a imagem da máquina.
    • REGION_ID : a região na qual você deseja que o processo de importação de imagem de máquina seja executado. A imagem da máquina é criada na multirregião mais próxima. Se quiser que a imagem da máquina seja criada em uma região, certifique-se de que singleRegionStorage esteja definido como verdadeiro. Para obter uma lista de regiões suportadas, 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 imagem de máquina representa o processo de importação de imagem de máquina. Você pode usar IMPORT_NAME para obter o link para a imagem de máquina que foi importada como parte do processo de importação de imagem de máquina.

    Você deverá ver uma resposta de conclusão do trabalho 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"
    }
    

O que vem a seguir