Automatizando ambientes com Puppet #1

Mascote do LinuxPro na sala de servidores, com quatro racks iguais controlados por fios de marionete e o logo do Puppet Labs na parede

Nota (2026): Texto original de abril de 2017 — introdução ao Puppet ainda no vocabulário Puppet Labs / “master”, com a promessa de um #2 prático que não saiu. Nove anos depois a linguagem declarativa é a mesma, mas o pacote público mudou de dono: a Perforce tirou os binários abertos do ar no fim de 2024 e a comunidade (Vox Pupuli) segue o projeto como OpenVox 8. Comando, path e módulos da Forge continuam; o repositório não.

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.family escolhe o pacote certo sem if ubuntu espalhado.

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.