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/puppetlogdir = /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.

Crie o arquivos abaixo:

# touch /etc/puppet/manifests/site.pp

Com o seguinte conteúdo:

node puppet2 {
package { “httpd.x86_64”: ensure => installed }

file { “/etc/httpd/conf/httpd.conf”:
source => “puppet:///files/httpd_serverx.conf”
}
}

Observem que é definido o node puppet2.

Isso: “package { “httpd.x86_64″: ensure => installed }”, deve instalar o apache no ‘client’.

file { “/etc/httpd/conf/httpd.conf”:
source => “puppet:///files/httpd_serverx.conf”
}

Isso deve manter o arquivo “/ etc/httpd/conf/httpd.conf” igual a arquivos “files/httpd_serverx.conf”.

Para isso você deve também autorizar o ‘client’ acessar esse diretório.

No arquivo “/etc/puppet/fileserver.conf”:

[files]
path /etc/puppet/files
allow 192.168.x.0/24

Neste caso liberei toda a rede.

Vamos agora testar

Arquivo de configuração:

Recarregando configurações:

Criando arquivo de teste:

Testando no ‘client’:

Anúncios