Skip to main content

Criando Imagens Customizadas na Magalu Cloud

Objetivo

Este guia detalha os fluxos para criar imagens customizadas na Magalu Cloud (MGC) a partir de snapshots internos ou imagens externas. Você aprenderá como preparar, construir e importar suas imagens para utilizar em instâncias virtuais, garantindo um ambiente padronizado e seguro.

Atenção: A chave SSH deve estar cadastrada no mesmo tenant onde a VM será criada. Se o Packer e o Terraform usarem tenants diferentes, cadastre a chave em ambos usando:

mgc profile ssh-keys create --name "nome-chave" --key "$(cat ~/.ssh/id_ed25519.pub)"

Pré-requisitos

Antes de começar, certifique-se de que você possui os seguintes itens:

Ferramentas

  • Packer instalado (versão 1.8+). Instruções disponíveis na documentação oficial da HashiCorp.
  • Terraform instalado (versão 1.5+) para criação de VMs a partir da imagem customizada.
  • qemu-img instalado, para conversão de imagens de outros formatos para QCOW2 (no Fluxo B).
  • CLI MGC instalada e configurada para importação e gerenciamento de imagens.

Exemplo de instalação do Packer no Linux (Ubuntu/Debian):

wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install packer

packer version # Esperado: Packer v1.x.x

Conta e Acessos

  • Conta Magalu Cloud ativa.
  • Chave de API MGC com permissões para:
    • Criar e consultar chaves SSH
    • Gerenciar componentes de rede (Security Groups, IPs públicos)
    • Criar e gerenciar máquinas virtuais
    • Criar e acessar buckets no Object Storage

Para saber como gerar uma chave de API, consulte a documentação oficial da MGC.

Variáveis de Ambiente

# Configure sua chave de API como variável de ambiente
export MGC_API_KEY="SUA_CHAVE_DE_API"

Como fazer

Você pode criar imagens customizadas seguindo um dos dois fluxos descritos abaixo, dependendo da origem da imagem base.

Fluxo A – Snapshot de VM Interna (Tenant MGC)

Este fluxo utiliza o Packer com o Plugin Magalu Cloud para criar um snapshot a partir de uma imagem base disponível na MGC. O Packer provisiona uma instância efêmera, executa os scripts de configuração definidos no template, realiza o graceful shutdown e captura o snapshot final.

  1. Configure o template HCL do Packer conforme o exemplo da Seção 5.
  2. Inclua nos provisioners os scripts de sanitização e configuração da imagem (Seção 4).
  3. Execute o build com o Packer. Ao final, o snapshot estará disponível no catálogo do tenant.
  4. Utilize a imagem para criar VMs com Terraform (Seção 7).
  5. Registre a imagem no catálogo do tenant via CLI MGC (Seção 6).

Fluxo B – Imagem Externa (Outra Cloud ou On-Premise)

Este fluxo permite que você utilize uma imagem criada fora da MGC (ex.: AMI da AWS, imagem do GCP, ISO on-premise) e a converta para o formato QCOW2 antes de importá-la.

  1. Exporte a imagem do ambiente de origem no formato disponível (vmdk, vhd, raw, etc.).
  2. Converta para QCOW2 usando o qemu-img (Seção 4).
  3. Valide os requisitos de configuração da imagem: cloud-init, SSH, rede via DHCP (Seção 4).
  4. Faça o upload do arquivo .qcow2 para um bucket MGC e gere uma URL pré-assinada.

Detalhes técnicos

A escolha entre os fluxos A e B dependerá da sua necessidade e infraestrutura existente. O Fluxo A é mais simples se você já possui imagens base na MGC, enquanto o Fluxo B oferece flexibilidade para utilizar imagens de outros ambientes.

Perguntas frequentes

Preciso configurar o cloud-init em ambos os fluxos?

Sim, o cloud-init deve estar configurado na VM base (Fluxo A) ou instalado na imagem (Fluxo B) para garantir a inicialização e configuração corretas da instância.

Onde devo cadastrar minha chave SSH?

A chave SSH deve ser cadastrada no mesmo tenant onde a VM será criada. Se o Packer e o Terraform usarem tenants diferentes, cadastre a chave em ambos usando:

mgc profile ssh-keys create --name "nome-chave" --key "$(cat ~/.ssh/id_ed25519.pub)"

Próximos passos

  • Consulte a documentação oficial da Magalu Cloud para obter informações detalhadas sobre o uso do Packer e Terraform com a MGC.
  • Explore os exemplos de templates HCL disponíveis para personalizar suas imagens customizadas.
  • Automatize o processo de criação de imagens utilizando pipelines CI/CD para garantir consistência e eficiência.