Templates e cloud-init no Proxmox: provisionar VM em minutos, não em horas

Como montar templates de VM com cloud-init no Proxmox para provisionar em segundos, de forma repetível — e os detalhes que fazem clones nascerem com defeito.

Equipe Solvefy 7 min de leitura

Instalar sistema operacional manualmente a cada VM nova é um trabalho que ninguém deveria mais estar fazendo. Não é só o tempo perdido — é a inconsistência. Dez VMs instaladas à mão em três meses são dez ambientes ligeiramente diferentes, com pacotes de versões distintas, ajustes que alguém fez e não anotou e uma VM que ninguém entende por que se comporta diferente. Template com cloud-init resolve os dois problemas: velocidade e uniformidade.

O que muda com template e cloud-init

A ideia é simples e tem duas partes. O template é uma imagem-base pronta, com o sistema instalado e ajustado do jeito que a sua operação exige. Clonar essa imagem leva segundos, especialmente em clone ligado.

O cloud-init é o que personaliza cada clone na primeira inicialização. Ele lê a configuração que o Proxmox entrega — nome da máquina, endereço de rede, usuário, chave SSH, pacotes a instalar — e aplica antes de a VM ficar disponível. É o mecanismo padrão de personalização de imagem em nuvem, e o Proxmox tem suporte nativo a ele.

Juntos, transformam "provisionar uma VM" de um procedimento de trinta minutos com dez decisões manuais em uma operação de um minuto, sem decisão nenhuma.

Montando o template, passo a passo

O caminho mais direto usa as imagens de nuvem que as distribuições já publicam — elas vêm com cloud-init instalado e enxuto por padrão. O roteiro:

  1. Baixe a imagem de nuvem oficial da distribuição, não a ISO de instalação. Ela já vem preparada para cloud-init.
  2. Crie uma VM sem instalar nada e importe a imagem como disco dela.
  3. Adicione o dispositivo de cloud-init, que é como o Proxmox entrega a configuração à VM na inicialização.
  4. Ajuste o hardware base: controlador de disco moderno, placa de rede virtio, agente de convidado habilitado e console serial — as imagens de nuvem esperam console serial.
  5. Ligue a VM uma vez, se for personalizar, instale o que a sua operação sempre precisa e faça a limpeza descrita na próxima seção. Se não vai personalizar nada, pule esta etapa e mantenha a imagem intacta.
  6. Converta em template. A partir daí, ela vira somente leitura e serve de base para clones.

Manter o template mínimo é uma decisão que se paga. Coloque nele só o que toda VM precisa: agente de convidado, cliente de monitoramento, ajustes de segurança da casa, fuso horário. O resto é papel do cloud-init ou da ferramenta de configuração.

A limpeza que evita clones defeituosos

Este é o ponto que mais gera problema, e o sintoma nunca aponta para a causa. Se você ligou a VM antes de convertê-la em template, ela acumulou identidade própria — e essa identidade vai ser copiada para todos os clones.

O que precisa ser zerado antes de virar template:

  • O `machine-id`. Ele identifica a instalação. Clones com o mesmo machine-id causam comportamento errático em DHCP e em qualquer sistema que use essa identidade. Precisa ser esvaziado, não apagado, para ser regenerado na próxima inicialização.
  • As chaves de host do SSH. Se todos os clones nascem com a mesma chave, qualquer um deles pode se passar por outro. Remova para que sejam geradas por VM.
  • O estado do cloud-init. Ele guarda a marca de "já executei". Sem limpar, o clone não personaliza nada e nasce com o nome e o endereço do template.
  • Logs, cache de pacotes e histórico de shell, que só inflam a imagem.
  • Regras persistentes de nomeação de rede, quando existirem, para a interface não nascer com nome fixado ao hardware antigo.

Esquecer o estado do cloud-init é o erro mais comum. O sintoma é claro e confunde: o clone sobe com o hostname do template e ignora a configuração de rede, e a suspeita recai sobre a configuração — que está correta.

O que o cloud-init resolve por VM

No Proxmox, cada VM clonada tem uma aba própria de cloud-init, onde você define o que a personaliza:

  • Usuário e chave SSH. Use chave, não senha. É o mínimo, e o cloud-init torna trivial.
  • Configuração de rede. Endereço fixo com gateway, ou DHCP. Definir aqui evita o passo manual de configurar rede dentro do sistema.
  • Nome da máquina, que o Proxmox deriva do nome da VM.
  • Servidores de DNS e domínio de busca.

Para além do básico, é possível fornecer um arquivo de configuração completo, guardado num storage de snippets do Proxmox. Aí o cloud-init passa a instalar pacotes, escrever arquivos e rodar comandos na primeira inicialização.

Uma orientação de limite: o cloud-init é ótimo para iniciar a máquina, e ruim como ferramenta de gestão contínua. Ele roda uma vez. Se a sua configuração muda ao longo da vida da VM, isso é trabalho de Ansible ou equivalente. Tentar administrar um parque pelo cloud-init termina em configuração que ninguém sabe de onde veio.

Clone ligado ou clone completo

AspectoClone ligadoClone completo
Tempo de criaçãoSegundosProporcional ao tamanho do disco
Espaço inicialQuase zeroCópia integral
Dependência do templatePermanente: não se pode apagar o templateNenhuma após a criação
PerformanceBoa, com leitura na base comumIndependente
Migração entre storagesExige conversãoDireta
Melhor paraAmbientes de teste, escala rápida, muitos clones iguaisProdução, VM de cliente, ciclo de vida longo

A regra prática: clone ligado para o que é descartável e numeroso; clone completo para o que é de produção ou de cliente. A dependência permanente do template é o fator decisivo — um template que não pode ser apagado nem substituído porque dezenas de VMs de produção dependem dele vira uma amarra que só incomoda quando você precisa atualizar a base.

Automatizando de verdade

Com template pronto, o passo seguinte é parar de clonar pelo painel. A API do Proxmox expõe clonagem e configuração de cloud-init, e isso abre dois caminhos:

  • Terraform, para quem quer descrever o parque em código e aplicar mudanças de forma controlada. A VM passa a ser um recurso versionado, não um clique.
  • Ansible ou scripts, para quem prefere orquestrar a criação junto da configuração pós-inicialização.

Para provedor de cloud, esse é o ponto em que a coisa muda de patamar: um cliente que compra um plano no portal aciona um fluxo que clona o template, aplica o cloud-init com os dados dele e devolve o acesso — sem ninguém do time tocar em nada. É o que separa uma operação que escala de uma que contrata gente na mesma proporção em que vende.

Mantendo o template vivo

Template é um artefato que envelhece. Três meses depois, cada VM nova nasce com dezenas de atualizações pendentes, e o cloud-init gasta minutos aplicando pacotes na primeira inicialização.

Estabeleça um ritmo de reconstrução — mensal é um bom começo — e trate o template como algo que se constrói, não que se edita. Reconstruir a partir da imagem oficial, com uma lista conhecida de ajustes, é reprodutível. Ligar o template antigo, atualizar e reconvertê-lo acumula estado que ninguém rastreia.

Versione o nome — com a data da construção, por exemplo — e mantenha o anterior por um ciclo. Assim, se um clone novo apresentar comportamento estranho, você compara com a versão anterior em vez de adivinhar.

Erros comuns

  • Não limpar o estado do cloud-init, gerando clone com o hostname do template.
  • machine-id idêntico em todos os clones, com efeitos estranhos em DHCP.
  • Chaves de host do SSH copiadas para todas as VMs.
  • Template pesado, cheio de coisa que só algumas VMs usam.
  • Clone ligado em produção, prendendo o template para sempre.
  • Usar ISO de instalação em vez da imagem de nuvem, e depois instalar cloud-init na mão.
  • Template sem console serial, com a imagem de nuvem sem saída visível.
  • Template esquecido por meses, empurrando toda a atualização para a primeira inicialização.

Onde a Solvefy/Cloud entra

Padronizar provisionamento é parte do que entregamos em projeto e no onboarding da plataforma E-CLOUD: montamos os templates da sua operação, definimos o que fica na imagem e o que fica no cloud-init, documentamos o processo de reconstrução e integramos a criação de VM ao fluxo de venda, para que o provisionamento aconteça sem intervenção humana. Como parceiros oficiais Proxmox, fazemos isso com o que a plataforma já oferece, sem camada proprietária no meio.

Quer provisionar VM em segundos, de forma repetível? Fazemos um diagnóstico gratuito da infraestrutura, sem compromisso, em solvefy.cloud.

Solvefy/Cloud — Infraestrutura que cresce com você.

Faça agora o seu diagnóstico e orçamento

Inicie com um diagnóstico gratuito da sua infraestrutura e receba uma proposta personalizada — com escopo, cronograma e valores.