Puppet 3 (em 2017)
A vida como ela é
Taciano Tres
Analista de sistemas
Desenvolvedor Java
Administrador de sistemas
Desenvolvedor de infraestrutura
Puppet 3 Fim do suporte: 31/12/2016
Infra atual
Prova de conceito
3 Puppet Master 3.8.4
3 PuppetDB 1.5.2
3 Foreman 1.11
Tamanho do
problema
Quantidade de VMs x86
Windows-Puppet: 1250
GNU/Linux+Puppet: 4000
GNU/Linux-Puppet: 2150
Versões
Agente
Primórdios: 0.23, 0.24, 0.25
v2.x: 2.6, 2.7
v3.x: 3.0, … , 3.4, … , 3.7, 3.8
v4.x: 4.0, … , 4.9
v5.x: Maio/2017
Dependências
Facter
Yum/Zypper/Apt-get
`df -h`
`df -i`
Red Hat
Enterprise Linux
a.k.a. RHEL
RHEL 7
7.{2..3}
Puppet 3.8
Facter 2.4.6
RHEL 6
6.{2..9}
Puppet 3.8
Facter 2.4.6
RHEL 5
5.{9..11}
Puppet 3.4.2
Facter 2.4.6
SuSE Linux
Enterprise Server
a.k.a SLES
SLES 12
SP {0..2}
Puppet 3.8.5
Facter 2.0.2
SLES 11
SP {1..4}
Puppet 3.7
Facter 2.0.2
Outras questões
Módulos
Lista de 'exec'
exec { descompactar':
command => 'unzip instalador.zip',
unless => 'test -d /tmp/dir',
path => '/sbin:/bin:/usr/bin',
}
exec { 'instalar':
command => '/tmp/dir/install.sh',
depends => Exec['exec1'],
path => '/sbin:/bin:/usr/bin',
}
Clone Wars
Uma VM foi clonada. 'n' vezes.
Mesmo 'certname'
Mesmo certificado SSL
Requisita catálogo '2n' vezes por
hora
Nem tudo está
perdido
Considerações
Antes da migração
PuppetDB
Environments
Revisão dos módulos internos
Mudanças no parser
Fatos como tipos (não strings)
Considerações
Antes da migração
PuppetDB: não migrar
Environments
Revisão dos módulos internos
Mudanças no parser
Fatos como tipos (não strings)
Considerações
Antes da migração
PuppetDB: não migrar
Environments
Revisão dos módulos internos
Mudanças no parser
Fatos como tipos (não strings)
Considerações
Antes da migração
PuppetDB: não migrar
Environments
Revisão dos módulos internos
Mudanças no parser
Fatos como tipos (não strings)
Provisionando a
nova infra (com
puppet)
Puppet 4
Nova infra
baseada no PE 2016.5
puppet-agent 1.8.3
8 puppetserver 2.6.0
2 PuppetDB 4.2.5
2 Foreman 1.14
Puppet CA
Configurar novos repositórios
Instalar agente 4.8
puppet module install
--skip-dependencies <nome>.tar.gz
Criar manifesto básico
puppet apply -e 'include
profile::puppet::ca_startup'
puppet agent -t
puppet cert sign
--allow-dns-alt-names puppetca001
Puppet Server
{1..6}
Configurar novos repositórios
Instalar agente 4.8
puppet agent -t --server puppetca
--dns-alt-names puppet
puppet cert sign
--allow-dns-alt-names
puppetsr00{1..6}
PuppetDB
{1..2}
Configurar novos repositórios
Instalar agente 4.8
puppet agent -t --server puppet
--dns-alt-names puppetdb
puppet cert sign
--allow-dns-alt-names
puppetdb00{1..2}
Foreman
{1..2}
Configurar novos repositórios
Instalar agente 4.8
puppet agent -t --server puppet
--dns-alt-names foreman
puppet cert sign
--allow-dns-alt-names
puppetmn00{1..2}
r10k
Automatizando deploy de
módulos
2 control repo no GitLab
1 Puppet Server CA
production
6 Puppet Server
des, hom, piloto, prd
Relações
Puppet Server + CA + r10k
6 Puppet Server - CA + r10k
2 PuppetDB
2 Foreman
* agentes
Novos problemas
Migração
3.x → 4.x
service puppet stop
rm -rf /var/lib/puppet/ssl
yum remove facter puppet
yum install puppet-agent-1.8.3
puppet agent -t --server puppet
--ca_server puppetca
Vantagens
Puppet gerenciando Puppet
Versões atuais dos pacotes
Ferramentas mais performáticas
Módulos testados pela comunidade
Infra com redundância
Obrigado!
Sugestões de
leitura
Contatos:
@tacianot
tacianotres@gmail.com
Upgrading Puppet 3 to Puppet 4:
https://engineering.skroutz.gr/blog/
upgrading-puppet3-to-puppet4/

Puppet 3 em 2017