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
- Ative a API VM Migration no projeto.
- Verifique se o disco de inicialização está configurado com um sistema operacional compatível.
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:
- Só é possível importar imagens de máquina para regiões compatíveis com as famílias de instâncias N2.
- Não é possível importar imagens de máquina para séries de máquinas de quarta geração. Para saber mais, confira as limitações e restrições de importação de imagens de máquina.
- Não é possível importar imagens de máquina baseadas na arquitetura Arm.
- Não é possível criar imagens de máquina de VMs de origem com nenhum dos seguintes:
- Discos anexados com mais de 200 TB
- Tipos de máquina A4, A3, C3D, H3 ou Z3
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:
- Preparar um arquivo de imagem de máquina para importação
- Escolher um projeto de destino
- 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.ovfe.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 sesingleRegionStorageestá 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 sesingleRegionStorageestá 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.
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 sesingleRegionStorageestá 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.ovae.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 oIMPORT_NAMEpara 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 cloudStorageUriO 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.ovfe.ova.machineImageTargetDefaults.targetProjectO 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_nameO 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.labelsPara organizar o projeto, adicione rótulos como pares de chave-valor aos seus recursos. Consulte Como rotular recursos. machineImageTargetDefaults.tagsAdicione 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_accountEspecifique 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.singleRegionStorageDefina essa flag como "true" se quiser que a imagem de máquina storageLocationsseja uma região. Se você definir essa flag como "false", a multirregião mais próxima será selecionada.machineImageTargetDefaults.skip_os_adaptationDefina 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.licenseTypeO 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_interfacesCom 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-cloneoucut-over, não será possível adicionar ou remover uma interface de rede da instância criada. É possível repetirtest-cloneoucut-overcom 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.
machineImageTargetDefaults.osAdaptationParameters.generalizeDefina 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.encryptionO 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" } }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 sesingleRegionStorageestá 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" } }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 sesingleRegionStorageestá 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 oIMPORT_NAMEpara 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
- Saiba mais sobre nós de locatário individual.
- Saiba mais sobre BYOL.