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
- Habilite a API de migração de VM em seu projeto.
- Certifique-se de que o disco de inicialização esteja configurado com um sistema operacional compatível .
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:
- Preparar um arquivo de imagem de máquina para importação
- Escolha um projeto alvo
- 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 quesingleRegionStorage
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 quesingleRegionStorage
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.
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 quesingleRegionStorage
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 usarIMPORT_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
oucut-over
, não é possível adicionar ou remover uma interface de rede na instância criada. Você pode repetirtest-clone
oucut-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.
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" } }
-
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 quesingleRegionStorage
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" } }
-
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 quesingleRegionStorage
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 usarIMPORT_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
- Saiba mais sobre nós de locatário individual .
- Saiba mais sobre o BYOL .