Skip to main content

Automação com Packer na Magalu Cloud

Objetivo

Este guia demonstra como automatizar a criação de imagens de máquina na Magalu Cloud (MGC) utilizando o Packer, uma ferramenta de Infrastructure as Code (IaC). Você aprenderá a configurar um template HCL para criar snapshots personalizados e reproduzíveis.

Atenção: O plugin Magalu Cloud estende o Packer com suporte nativo à infraestrutura da MGC. Certifique-se de ter as permissões necessárias na sua chave de API para executar as operações descritas neste guia.

Pré-requisitos

  • Uma conta ativa na Magalu Cloud.
  • Uma chave de API (API Key) com permissões adequadas para criar instâncias, snapshots e gerenciar recursos na MGC.
  • O Packer instalado em sua estação de trabalho. Consulte a documentação oficial do Packer para instruções de instalação.
  • Conhecimento básico sobre o formato HCL (HashiCorp Configuration Language).

Como fazer

  1. Abra um terminal em sua estação de trabalho.

  2. Navegue até o diretório onde você salvará o arquivo template.pkr.hcl:

cd ~/packer_example/
  1. Inicialize o plugin Magalu Cloud (este passo é necessário apenas na primeira execução):
packer init template.pkr.hcl
  1. Execute o build, passando a chave de API MGC como variável de ambiente ou diretamente no comando:
packer build -var=api_key=<sua_chave_de_api> template.pkr.hcl

Ou defina a variável de ambiente MGC_API_KEY antes de executar o comando:

export MGC_API_KEY=<sua_chave_de_api>
packer build template.pkr.hcl

Ao final do processo, o Packer exibirá uma mensagem de confirmação com o ID do snapshot gerado. Este snapshot estará disponível no catálogo da sua conta na Magalu Cloud.

Detalhes técnicos

Parâmetros do Source magalucloud

ParâmetroObrigatórioDescrição
api_keySimChave de API MGC com as permissões necessárias.
regionSimRegião MGC onde a instância será criada (ex.: br-se1, br-ne1).
availability_zoneSimZona de disponibilidade (ex.: br-se1-b).
source_imageSimNome da imagem base disponível na MGC.
machine_typeSimTipo de máquina a ser usada durante o build (ex.: BV1-1-10).
ssh_usernameSimUsuário SSH da imagem base (ex.: ubuntu).

Exemplo Completo – Template HCL

O exemplo abaixo demonstra como criar um snapshot Ubuntu 24.04 com o Redis instalado, incluindo etapas de sanitização ao final:

packer {
required_plugins {
magalucloud = {
source = "github.com/MagaluCloud/magalucloud"
version = ">= 0.3.0"
}
}
}

variable "api_key" {
type = string
default = env("MGC_API_KEY")
sensitive = true
}

source "magalucloud" "example" {
api_key = var.api_key
region = "br-se1"
availability_zone = "br-se1-b"
source_image = "cloud-ubuntu-24.04 LTS"
machine_type = "BV1-1-10"
ssh_username = "ubuntu"
}

build {
name = "example"
sources = ["source.magalucloud.example"]

# Bloco 1: instalação de software
provisioner "shell" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y redis-server",
"sudo systemctl enable --now redis-server",
]
}

# Bloco 2: sanitização da imagem
provisioner "shell" {
inline = [
"sudo apt-get clean",
"sudo apt-get autoremove -y",
"sudo cloud-init clean --logs --machine-id --seed",
"sudo rm -rf /tmp/*",
"sudo rm -f /etc/ssh/ssh_host_*",
"sudo rm -f /root/.ssh/authorized_keys",
"sudo rm -f /home/ubuntu/.ssh/authorized_keys",
"unset HISTFILE",
"sudo rm -f /root/.bash_history",
"sudo rm -f /home/ubuntu/.bash_history",
]
}
}

Perguntas frequentes

O que é o Packer?

O Packer é uma ferramenta de Infrastructure as Code (IaC) que automatiza a criação de imagens de máquina idênticas para múltiplas plataformas.

Qual o propósito do plugin Magalu Cloud para Packer?

O plugin estende o Packer com suporte nativo à infraestrutura da Magalu Cloud, permitindo criar e importar imagens customizadas diretamente para sua conta MGC.

Como posso fornecer a chave de API ao Packer?

Você pode passar a chave de API como uma variável de ambiente (MGC_API_KEY) ou explicitamente no comando packer build usando a flag -var.

Próximos passos

  • Explore as opções de configuração do plugin Magalu Cloud para personalizar ainda mais o processo de criação de imagens.
  • Integre o Packer em seu pipeline de CI/CD para automatizar a criação e atualização de imagens de máquina.
  • Consulte a documentação oficial do Packer e do plugin Magalu Cloud: https://github.com/MagaluCloud/packer-plugin-magalucloud.