Aviso:
Este tutorial foi atualizado para ensinar a montar o ambiente puppet usando o repositório da PuppetLabs para instalar pacotes do Puppet 4.x.
Se você ainda não sabe o que é Puppet, como funciona e para que serve, sugiro parar por aqui e começar a estudar pelo livro que publiquei pela Novatec https://novatec.com.br/livros/puppet/, pelos links que estão nesta página: http://blog.aeciopires.com/primeiros-passos-com-o-puppet/ ou se quiser instalar o Puppet-Server e o Puppet-Agent no CentOS/Red Hat 6 e CentOS/Red Hat 7, sugiro ler este tutorial: http://blog.aeciopires.com/configurando-um-ambiente-puppet-2/
Quando estiver se sentindo seguro no assunto, pode retomar a execução deste tutorial.
Entendendo o ambiente
Continuando… a figura abaixo mostra o ambiente usado para a execução deste tutorial.
O sistema operacional usado nas máquinas foram: Ubuntu Server 14.04, Ubuntu Server 16.04 e Debian 8.x (ambos 64 bits e em inglês). Os comandos mostrados a seguir funcionam nestas duas distribuições GNU/Linux.
Para a implementação do ambiente mostrado acima, foi configurado um servidor DHCP e um servidor DNS. Depois disso, foram criadas três máquinas virtuais para serem usadas pelo Puppet. As configurações de disco, memória e processador para as máquinas virtuais foram:
- Memória: 768 MB
- HD: 20 GB
- Processador: 1 com clock de 2.0 GHz
- 1 placa de rede
Preparando o ambiente
No servidor DHCP da sua rede, configure um IP e associe-o a cada endereço MAC da placa de rede de cada máquina que será usada.
Exemplos de configuração no arquivo do DHCP no GNU/Linux.
host puppetserver { hardware ethernet 08:00:27:e7:09:48; fixed-address 192.168.0.171; }
host puppet1 { hardware ethernet 08:00:27:81:d7:5e; fixed-address 192.168.0.172; }
host puppet2 { hardware ethernet 08:00:27:d0:d9:66; fixed-address 192.168.0.173; }
Exemplos de configuração no arquivo de zona do domínio domain.com.br no Bind9 no GNU/Linux.
puppetserver IN A 192.168.0.171 puppet1 IN A 192.168.0.172 puppet2 IN A 192.168.0.173
Exemplos de configuração no arquivo de zona reversa do domínio domain.com.br no Bind9 no GNU/Linux.
171 IN PTR puppetserver.domain.com.br. 172 IN PTR puppet1.domain.com.br. 173 IN PTR puppet2.domain.com.br.
Em cada máquina, configure os nomes de host e de domínio editando os arquivos /etc/hosts, /etc/hostname e /etc/resolv.conf
Exemplos de configuração para cada arquivo
PuppetServer
/etc/hostname puppetserver
/etc/hosts 127.0.0.1 localhost 192.168.0.171 puppetserver.domain.com.br puppetserver 127.0.0.1 puppetserver.domain.com.br puppetserver
/etc/resolv.conf domain domain.com.br search domain.com.br nameserver IP-DNS-SERVER
/etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Puppet-Agent 1
/etc/hostname puppet1
/etc/hosts 127.0.0.1 localhost 192.168.0.172 puppet1.domain.com.br puppet1 127.0.0.1 puppet1.domain.com.br puppet1
/etc/resolv.conf domain domain.com.br search domain.com.br nameserver IP-DNS-SERVER
/etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Puppet-Agent 2
/etc/hostname puppet2
/etc/hosts 127.0.0.1 localhost 192.168.0.173 puppet2.domain.com.br puppet2 127.0.0.1 puppet2.domain.com.br puppet2
/etc/resolv.conf domain domain.com.br search domain.com.br nameserver IP-DNS-SERVER
/etc/network/interfaces auto lo iface lo inet loopback auto enp0s3 iface enp0s3 inet dhcp
Aviso:
Procure manter a hora do sistema de cada máquina corretamente configurada utilizando NTP, para evitar problemas na assinatura de certificados, entre outros.A porta 8140/TCP do servidor PuppetServer precisa estar acessível para as demais máquinas.
Instalando os pacotes
Adicionando o repositório da PuppetLabs no Debian 8.x:
su -
cd /tmp
wget http://apt.puppetlabs. com/puppetlabs-release-pc1- jessie.deb
dpkg -i puppetlabs-release-pc1- jessie.deb
apt-get update
sudo su
cd /tmp
wget http://apt.puppetlabs. com/puppetlabs-release-pc1- trusty.deb
dpkg -i puppetlabs-release-pc1-trusty. deb
apt-get update
Adicionando o repositório da PuppetLabs no Ubuntu Server 16.04:
sudo su
cd /tmp
wget http://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
dpkg -i puppetlabs-release-pc1-xenial. deb
apt-get update
apt-get install -y puppet-agent puppetserver
export PATH=/opt/puppetlabs/bin:$ PATH
Nas máquinas que terá o Puppet-Agent, instale o pacote abaixo.
apt-get -y install puppet-agent
export PATH=/opt/puppetlabs/bin:$ PATH
Verifique a versão do Puppet com o comando abaixo.
puppet --version
Aviso:
Os binários e libs do Puppet 4.x ficam, por padrão, dentro do diretório /opt/puppetlabs/bin.
Os arquivos de configuração ficam, por padrão, dentro do diretório /etc/puppetlabs/.
Configurando os serviços
No arquivo /etc/puppetlabs/puppet/puppet.conf de cada máquina (Puppet-Agent), adicione as linhas abaixo e mude o intervalo de tempo (em segundos), que o agente se conectará ao server para atualização do catálogo de manifestos.
Exemplo para a máquina puppet1:
[main]
certname = puppet1.domain.com.br
server = puppetserver.domain.com.br
# intervalo em segundos
runinterval = 60
Exemplo para a máquina puppet2:
[main]
certname = puppet2.domain.com.br
server = puppetserver.domain.com.br
# intervalo em segundos
runinterval = 60
No arquivo /etc/puppetlabs/puppet/puppet.conf da máquina (Puppet-Server), adicione as linhas abaixo.
Exemplo para a máquina puppetserver:
[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
[main]
certname = puppetserver.domain.com.br
server = puppetserver.domain.com.br
#intervalo em segundos
runinterval = 60
strict_variables = true
JAVA_ARGS="-Xms256m -Xmx512m"
Gerando certificados e reiniciando os serviços
Na máquina PuppetServer, gere um certificado e reinicie os serviço com os comandos abaixo.
puppet cert generate puppetserver.domain.com.br
puppet resource service puppetserver ensure=running enable=true
Nas máquinas que possuem o puppet-agent, gere uma solicitação de assinatura de certificado com o comando abaixo.
puppet agent -t
No servidor Puppet-Server aparecerá a solicitação de assinatura para cada máquina que tem apenas o Puppet-Agent.
puppet cert list "puppet1.domain.com.br" (SHA256) C7:EC:72:6F:82:56:9E:15:C8:42:2D:A7:07:07:B7:B6:AC:41:45:DC:33:BA:09:B5:1A:3D:2C:14:31:32:D7:D4 "puppet2.domain.com.br" (SHA256) 49:0D:A2:2B:7E:4B:EE:2E:85:CC:B4:16:F9:C1:56:C8:75:63:0C:EF:C4:0E:96:FA:42:4E:09:32:CB:B2:E1:FF
Assine cada certificado usando os comandos abaixo.
puppet cert sign puppet1.domain.com.br
puppet cert sign puppet2.domain.com.br
Avisos:As solicitações de assinatura de certificados no Puppet-Server ficam em: /etc/puppetlabs/puppet/ssl/ca/requests/
No Puppet-Agent, os certificados assinados ficam em: /etc/puppetlabs/puppet/ssl/Se precisar refazer a assinatura de certificados do host puppet-agent é só apagar os arquivos e sub-diretórios que ficam em: /etc/puppetlabs/puppet/ssl/.Se precisar revogar os certificados assinados de um host cliente (puppet1, por exemplo) no Puppet-Server é só usar o comando: puppet cert clean puppet1.domain.com.br (por exemplo).O log do puppetserver fica em /var/log/puppetlabs/puppetserver/puppetserver.log e /var/log/puppetlabs/puppetserver/puppetserver-daemon.logO log do puppet-agent fica em /var/log/syslog e /var/log/puppetlabs/puppet.
Agora execute o comando abaixo, em cada máquina (Puppet-Server e Puppet-Agent). Este comando irá iniciar o puppet-agent e habilitá-lo para ser executado após o boot do sistema operacional.
puppet resource service puppet ensure=running enable=true
Testando o funcionamento do ambiente
No servidor PuppetServer, crie o arquivo /etc/puppetlabs/code/environments/production/manifests/site.pp com o conteúdo abaixo.
node "puppet1.domain.com.br" {
package { 'nmap':
ensure => present,
}
}
node "puppet2.domain.com.br" {
package { 'elinks':
ensure => present,
}
}
node "puppetserver.domain.com.br" {
package { 'tcpdump':
ensure => present,
}
}
Salve o arquivo e execute em todas as máquinas o comando abaixo.
puppet agent -t
Verifique se pacotes foram realmente instalados conforme a configuração especificada no arquivo site.pp.
- Na máquina puppet1 deve ser instalado o pacote “nmap”
- Na máquina puppet2 deve ser instalado o pacote “elinks”
- Na máquina puppetserver deve ser instalado o pacote “tcpdump”.
Pronto! O ambiente está configurado. Agora é só instalar os módulos e manifestos que você precisa.
Bons estudos!
Agradecimento a Guto Carvalho pela revisão e dicas de melhoria do tutorial.
Para aprender mais sobre o Puppet, veja o livro que publiquei pela editora Novatec: https://novatec.com.br/livros/puppet/
Fonte:
http://gutocarvalho.net/octopress/2015/08/18/instalando-puppet-4-agent-and-master/
https://www.snip2code.com/Snippet/565896/Install-Puppet-4-2-on-Ubuntu-14
http://linoxide.com/linux-how-to/install-puppet-ubuntu-15-04/
http://instruct.com.br/static/apostila-puppet.pdf
http://techarena51.com/index.php/a-simple-way-to-install-and-configure-a-puppet-server-on-linux/
https://puppetlabs.com/blog/puppet-server-bringing-soa-to-a-puppet-master-near-you
https://github.com/puppetlabs/puppet-server/blob/master/documentation/install_from_packages.markdown
http://pt.slideshare.net/PuppetLabs/cmc-presentation-44223836
https://docs.puppetlabs.com/puppet/latest/reference/config_file_main.html
https://docs.puppetlabs.com/puppet/4.2/reference/install_pre.html
https://docs.puppetlabs.com/puppetserver/2.1/install_from_packages.html
https://docs.puppetlabs.com/puppetdb/latest/connect_puppet_master.html
https://docs.puppetlabs.com/puppet/4.2/reference/install_linux.html
https://docs.puppetlabs.com/puppetserver/2.1/configuration.html
Excelente Artigo Aecio, Parabéns!
Excelente! Irei tentar adaptar na minha distro.
Parabens Otimo Tutorial