
Puppet descreve o estado desejado da máquina — pacote instalado, serviço no ar, arquivo com este conteúdo — e o agente converte a diferença em ação. Você não escreve o “como instalar o nginx nesta distro”; escreve que o nginx precisa existir. O catálogo cuida do resto. Em parque grande isso é o que separa um runbook de um contrato.
O que o Puppet faz (e o que não faz)
Criado em 2005 por Luke Kanies, o Puppet é um gerenciador de configuração declarativo, Apache 2.0. Cada recurso (package, file, service, user, cron…) é um fato sobre o nó. O agente compara o fato com a realidade e aplica só o delta. Idempotente: rodar de novo não quebra o que já está certo.
Isso cobre o que o post de 2017 listava — padronizar pacote, serviço e arquivo em milhares de nós, auditar drift, repor arquivo pelo filebucket. Não cobre o que o Ansible cobre melhor: play ad-hoc, orquestração ponta a ponta, “rode este comando agora neste grupo”. São ferramentas vizinhas, não clones. O howto do Ansible no site está em Automatizando servidores Linux com Ansible.
O produto comercial da Perforce continua existindo (Puppet Enterprise). O que sumiu do mapa aberto foi o yum/apt.puppet.com de graça para o parque inteiro. Quem precisa do OSS em 2026 instala OpenVox — a série estável é a 8, e a 9.0.0-rc1 saiu em 4 de setembro de 2026, ainda como candidata.
O ciclo: facts → catálogo → apply → relatório
O desenho não mudou. Mudaram os nomes: o antigo “Puppet Master” é o openvox-server (ex-puppetserver); o agente é o pacote openvox-agent, mas o binário segue se chamando puppet e mora em /opt/puppetlabs / /etc/puppetlabs.
nó (agente)
1. coleta facts (os, memória, IP, discos, custom facts)
2. envia facts ao servidor ──► openvox-server
3. servidor compilou o catálogo deste certname
4. agente recebe o catálogo ◄──
5. aplica recursos (ou --noop, só simula)
6. manda relatório ──► openvoxdb (opcional)
Dois modos, os mesmos de 2017:
puppet apply— manifesto local, sem servidor. Laboratório, bootstrap, máquina única.- Agente / servidor — o nó pede o catálogo de tempos em tempos (systemd timer ou daemon). Parque de verdade.
# simula sem mudar nada
sudo puppet agent --test --noop
# aplica de verdade, verbose, uma vez
sudo puppet agent --test
# só local
sudo puppet apply /etc/puppetlabs/code/environments/production/manifests/site.pp
O diagrama antigo deste post ainda falava de Puppet Explorer e MCollective. Os dois saíram de cena. Console/relatório hoje passam por OpenVoxDB, Foreman ou o próprio relatório do agente.
Um manifesto mínimo
Tudo no Puppet é recurso. O exemplo abaixo instala nginx, garante o serviço e dispara restart se o arquivo mudar — o trio que resolve 80% do “quero este daemon no ar”.
# site.pp (ou um profile)
package { 'nginx':
ensure => installed,
}
file { '/etc/nginx/nginx.conf':
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
source => 'puppet:///modules/perfil/nginx.conf',
require => Package['nginx'],
notify => Service['nginx'],
}
service { 'nginx':
ensure => running,
enable => true,
}
A linguagem é a mesma da apostila da comunidade BR (puppet-br.github.io/apostila-puppet) e dos módulos da Forge: o OpenVox 8.11+ é funcionalmente equivalente ao Puppet 8, então módulo, Puppetfile e livro antigo continuam válidos. O que não continua válido é o repositório de pacote.
Em 2026: instale OpenVox, não apt.puppet.com
No fim de 2024 a Perforce encerrou a publicação pública dos pacotes OSS. A Vox Pupuli (Overlook InfraTech + OSUOSL no mirror) passou a rebuildar e evoluir o código como OpenVox. Em junho de 2026 o agente está em 8.28; o 9 já anda em beta. Red Hat Satellite 6.19 documenta OpenVox Server/Agent 8 e trata Puppet 7 como EOL. O módulo puppet-puppet do Foreman aceita os nomes de pacote novos.
Debian/Ubuntu ainda embarcam puppet-agent 8.10 no arquivo da distro — código sem upstream, bug Debian #1133413 / Ubuntu #2165065. OpenVox está mais de quinze releases à frente. Não misture os dois no mesmo sistema: o pacote OpenVox substitui o Puppet. Antes de migrar, copie /etc/puppetlabs/ inteiro.
# Ubuntu 24.04 / 26.04 — OpenVox 8
wget https://apt.voxpupuli.org/openvox8-release-ubuntu24.04.deb
sudo apt install ./openvox8-release-ubuntu24.04.deb
sudo apt update
sudo apt install openvox-agent
# Debian 12
wget https://apt.voxpupuli.org/openvox8-release-debian12.deb
sudo apt install ./openvox8-release-debian12.deb
sudo apt update
sudo apt install openvox-agent
# EL 9 (RHEL / Alma / Rocky)
sudo dnf install https://yum.voxpupuli.org/openvox8-release-el-9.noarch.rpm
sudo dnf install openvox-agent
Servidor, DB e Bolt têm o mesmo prefixo: openvox-server, openvoxdb, openbolt. Keyring: https://apt.voxpupuli.org/openvox-keyring.gpg. Guia oficial: voxpupuli.org/openvox/install. Docs: docs.openvoxproject.org.
Hiera para o módulo do Foreman, se o repositório OpenVox já estiver no nó:
puppet::client_package: openvox-agent
puppet::server_package: openvox-server
Puppet, Ansible e o pipeline
Regra prática no Linux de 2026:
- Puppet/OpenVox — convergência contínua. O nó volta sozinho ao estado do catálogo, de hora em hora, mesmo se alguém “consertou na mão”.
- Ansible — orquestração e play pontual. Empurra a mudança agora, some. Melhor para bootstrap, patch window e o que não precisa de daemon no alvo.
- CI/CD — testa o manifesto/playbook no Git antes de o parque receber. O vocabulário está em DevOps, o que é CI/CD.
Muita gente usa os dois: Ansible (ou cloud-init) instala o agente; o OpenVox segura o estado dali pra frente.
O que ainda vale da lista de 2017
- Parque grande com equipe pequena — o catálogo é o contrato, não o wiki.
- Filebucket — arquivo que o Puppet substituiu continua recuperável.
--noop— simula o run, gera o relatório, não toca o disco. Use antes de promover módulo novo.- Facts — o catálogo é por nó;
os.familyescolhe o pacote certo semif ubuntuespalhado.
O que não vale: link de puppetlabs.com para download OSS, o grupo “master”, MCollective como bus, e a ideia de que apt install puppet-agent da distro está acompanhando o upstream.
Comunidade BR: apostila em puppet-br.github.io/apostila-puppet e o grupo Telegram puppetbr. Código e issues do fork: github.com/openvoxproject.