Entendendo o Puppet
Em um parque de servidores, normalmente tem-se que realizar tarefas repetitivas, como instalar determinado software, criar regras de firewall, e editar arquivos de
configurações.
O
Puppet pode ajudar nestas tarefas, e quando se fala em segurança, ele é usado para centralizar arquivos de configurações para manter as máquinas organizadas e com uma estrutura de configuração fácil de manipular.
- A definição original:
"Puppet, an automated administrative engine for your *nix systems, performs administrative tasks (such as adding users, installing packages, and updating server
configurations) based on a centralized specification.
Puppet can let you focus more on how things should be done and less on doing them. Let computers do what they are good at, precisely perform patterns, so you can focus
on creating solutions. The act of specifying the services will help you clarify the systems you actually need and once your services are modelled using Puppet, your ability to scale and recover from hardware failure could just be plugging in a new blade, setting the hostname and starting puppet.
If your systems aren't going to change or scale you probably don't need Puppet, but your competition might (...)"
Fonte:
No link abaixo tem uma ótima documentação sobre a Puppet language, que é usada para escrever as ações que o servidor enviará para o fantoches:
Nesse outro link possui um comparativo com software da mesma classe:
Bom, vamos iniciar a instalação e configuração com exemplos para ficar mais claro como este software trabalha.
Preparação do ambiente e configuração
- Descrição de ambiente:
Primeira máquina:
- CentOS 6.
- 1024 MB de memória RAM.
- 10 GB de disco.
- Conexão com a internet.
Segunda máquina:
- CentOS 6.
- 1024 MB de memória RAM.
- 10 GB de disco.
- Conexão com a internet.
- Passos a serem realizados no servidor:
# wget http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
# rpm -ivh epel-release-6-5.noarch.rpm
# wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# yum install puppet-server.x86_64
No arquivo "/etc/hosts":
192.168.x.x puppet2 → client
192.168.x.y puppet1 → server
192.168..x.y puppet → server
No hosts, você precisa indicar que o server responde por Puppet e no caso já deixei mapeado o 'client' também.
No arquivo "/etc/puppet/puppetd.conf":
[puppet]
vardir = /var/lib/puppet
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[puppetd]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
[puppetmasterd]
certname=puppet
Feito isso, dê um start no servidor:
# service puppetmaster start
A saída seria:
Starting puppetmaster: [ OK ]
[root@puppet1 ~]#
Se isto aconteceu, parabéns. A primeira etapa esta pronta, agora vamos à configuração do 'client'.
No 'client':
# wget http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
# rpm -ivh epel-release-6-5.noarch.rpm
# wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# yum install puppet.x86_64
Coloque a mesma configuração do arquivos hosts do server.
Agora temos que gerar a chave.
No 'client':
# puppetd -test
No server:
# puppetca -list
Caso aparecer o 'client', vamos autorizar a chave.
# puppetca --sign puppet2
Agora no 'client':
# puppetd -test
A saída agora não deve retornar erro, neste status ele já está sincronizando com o servidor.