Importando Suas Imagens de Outras Clouds
Migrar cargas de trabalho de outros provedores de nuvem para a Magalu Cloud é um cenário comum. Felizmente, as ferramentas de virtualização e nuvem atuais permitem que você exporte suas imagens de VMs já existentes e as prepare para uso em um novo ambiente, desde que você siga os passos corretos.
De forma geral, o processo segue estes passos:
- Exportar a imagem no provedor de origem.
- Generalizar a imagem para remover dados e configurações específicas.
- Converter para o formato QCOW2.
- Upload para um bucket da Magalu Cloud.
- Gerar URL pré-assinada válida por mais de 12 horas.
- Importar a imagem via CLI para a Magalu Cloud.
Veja mais detalhes de pré-reqs e exemplos de importação aqui.
Fluxo de Exportação por Provedor
Cada provedor de nuvem tem seu próprio método para exportar discos virtuais. Embora as ferramentas sejam diferentes, o objetivo é o mesmo: obter um arquivo de imagem que você possa baixar.
1. Amazon Web Services (AWS):
- 
Use o VM Import/Export ou crie uma AMI (Amazon Machine Image) a partir de uma instância existente. 
- 
Exporte a AMI para um bucket no S3 com o comando: aws ec2 export-image —-image-id <ami-id> —-disk-image-format VMDK —s3-export-location $3
- 
Faça o download da imagem exportada para sua máquina. 
2. Microsoft Azure:
- 
Crie um snapshot do disco gerenciado. 
- 
Gere uma URL SAS temporária para o VHD. 
- 
Baixe o VHD com o AzCopy:azcopy copy “<sas-url>" ./disk.vhd
3. Google Cloud Platform (GCP):
- No GCP, a forma mais comum é exportar um disco virtual a partir de um snapshot. Você pode usar a CLI com o comando gcloud compute images exportpara exportar o disco para um bucket do Google Cloud Storage (GCS), de onde poderá baixá-la.
Exemplo de Migração: GCP -> Magalu Cloud
Neste exemplo, criamos uma VM na GCP com o Ubuntu 24.04 e instalamos o gerenciador de containers Incus nesta imagem (sudo apt install -y incus).
Passo 1: Preparar a imagem
- 
Antes de exportar, generalize a VM para remover dados específicos da GCP que poderiam causar conflitos. Isso garante que a imagem seja "limpa" e se configure corretamente na Magalu Cloud. 
- 
Para generalizar a imagem, é necessário remover chaves SSH do host e do usuário, limpar logs do cloud-init e históricos em geral. AtençãoRemova o arquivo /etc/cloud/cloud.cfg.d/91-gce.cfg, que força ocloud-inita usar apenas metadados da GCP. Sem isso, a VM não inicializará na Magalu Cloud.Os comandos a serem executados para generalizar uma imagem Ubuntu na GCP são: # Remove SSH keys, logs, and temp data.
 $ sudo rm -f /etc/ssh/ssh_host_*
 $ sudo rm -f /root/.ssh/authorized_keys /home/ubuntu/.ssh/authorized_keys
 $ sudo rm -rf /tmp/* /var/tmp/* /var/lib/cloud/seed/nocloud-net/
 # Clean cloud-init logs
 $ sudo cloud-init clean --logs
 # Clean the /etc/machine-id files
 $ sudo sh -c 'echo -n > /etc/machine-id && rm -f /var/lib/dbus/machine-id'
 # Clean apt downloaded packages
 $ sudo apt-get clean
 $ sudo rm -rf /var/lib/apt/lists/*
 # Remove bash history
 $ sudo rm -f /root/.bash_history /home/ubuntu/.bash_history
 # Purge Google Cloud-specific packages (recommended)
 $ sudo rm /etc/cloud/cloud.cfg.d/91-gce.cfg
 $ sudo apt-get purge -y google-guest-agent google-compute-engine
 # Now, power off the VM.
 $ sudo systemctl poweroffImportantePara garantir a integridade da imagem, desligue completamente a máquina virtual antes de iniciar o processo de exportação. Esse processo pode ser feito tanto através dos comandos (como mostrado acima) ou através do Console ou CLI da GCP. 
Passo 2: Exportar a imagem no GCP
Com a sua VM preparada e desligada, você pode usar a ferramenta de linha de comando gcloud ou o Console para exportar a imagem. Nesse exemplo iremos demonstrar o processo através da CLI.
- 
Criar a Imagem gerenciada no GCP a partir do disco da sua VM: gcloud compute images create <image name> --source-disk <vm source disk> --source-disk-zone <zone> --family <family name> --storage-location <region>
 Created
- 
Exporte a Imagem do gerenciamento do GCP para um bucket do Google Cloud Storage (GCS): gcloud compute images export --destination-uri gs://<destination-bucket>/<image-name>.tar.gz --image <image-name>Obs: A imagem exportada virá em formato tar.gz, contendo um arquivo de disco raw.
- 
Baixe o arquivo para sua máquina local: Esse procedimento é necessário pois precisamos exportar a imagem do arquivo .tar.gzpara que possamos converter a imagem para o formatoqcow2.gcloud storage cp gs://<bucket-name>/<image-name>.tar.gz .
Passo 3: Converter e preparar para importação
Uma vez que o arquivo da imagem está em sua máquina local, ele precisa ser convertido e depois transferido para a Magalu Cloud.
- 
O arquivo exportado da GCP está no formato raw.
- 
Em outros Provedores de Cloud o formato pode ser .ova,.vdmk,.vdi, entre outros.
- 
Para a Magalu Cloud, ele precisa ser convertido para .qcow2, que é otimizado para ambientes de virtualização.
- 
Você pode usar a ferramenta qemu-img para isso. 
- 
Primeiro, extraia o arquivo rawdotar.gze depois use o comandoqemu-img convert, especificando o formato de origem (nesse caso-f raw) e o de destino (-O qcow2):tar -xvf <image-name>.tar.gz
 qemu-img convert -f raw -O qcow2 disk.raw disk.qcow2
Passo 4: Upload para a Magalu Cloud
- 
O comando mgc os objects uploadé utilizado para transferir o arquivo local para um bucket no OBJS:mgc os objects upload --dst='<bucekt>/<nome-da-imagem>.qcow2' --src='disk.qcow2' --region <bucket-region>
- 
Gere uma URL pré-assinada válida (>12h) 
- 
Utilize o comando mgc os objects presign, especificando o destino e o tempo de expiração ( --expires-in).AtençãoÉ crucial que a URL tenha um prazo de validade maior que 12 horas para que o processo de importação não expire. mgc os objects presign --dst='<bucket>/<nome-da-imagem>.qcow2' --expires-in="24h" --region <bucket-region>
Passo 5: Importar a imagem
mgc vm images custom create \                                                                        
--name="<image-name>" \
--architecture="x86/64" \
--license="unlicensed" \
--platform="linux" \
--url="https://<region>.magaluobjects.com/<bucket>/<image-name>.qcow2?<signature-hashes>"
id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- 
Após iniciar a importação, o status da imagem será importing. 
- 
Você pode monitorar o progresso com o comando mgc vm images custom get.
- 
O processo pode levar alguns minutos, dependendo do tamanho do arquivo. 
- 
Quando o status mudar para active, a imagem estará pronta para uso. Exemplo: mgc vm images custom get <image-id>
 id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 license: unlicensed
 metadata:
 uefi: "false"
 name: <image-name>
 platform: linux
 requirements:
 disk: 10
 ram: 1
 vcpu: 1
 status: active
Passo 6: Criar a instância e validar
- 
A etapa final do processo é o lançamento de uma nova instância utilizando a imagem recém-criada. 
- 
Crie a VM a partir da imagem: mgc vm instances create --name="<vm-name>" --image.id=<image-id>' --machine-type.name="<machine-type>" --ssh-key-name="<keypair-name>"
 id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxDicaNos logs da instância, você deve ver o cloud-initinjetando sua chave SSH (como no exemplo abaixo). Isso confirma que a migração foi bem-sucedida, conforme imagem abaixo.  
Para garantir que sua imagem esteja compatível com a plataforma revise os Pré-requisitos obrigatórios de importação. Para otimizar desempenho, segurança e manutenção das suas imagens, consulte também o Guia de Boas Práticas de Imagens Customizadas.