Para um administrador de rede é sempre muito complicado atualizar suas máquinas, sempre é preciso criar scripts para automatizar simples tarefas de instalação e configuração de programas e serviços dos sistemas. Quando a rede utiliza máquinas com sistemas operacionais distintos a situação complica, eis uma solução!

Puppet, esta ferramenta foi desenvolvida para facilitar a manutenção de máquinas com S.O diversos, seu funcionamento é bastante simples. As máquinas que precisam de manutenção, é instalado o cliente puppet, e uma ou mais máquinas é designada à ser o servidor puppet. Bom quando tudo instalado, o cliente fica requerendo ao servidor “comandos de ação”, estes comandos o cliente lê e executa independente da plataforma operacional, assim não é preciso criar uma aplicativo para realizar a manutenção em diversos S.O. A seguir demonstrarei como instalar e configurar o puppet na máquina cliente e no servidor em sistemas baseados no Debian, algumas modificações nestas etapas você deverá considerar ao utilizar um sistema que não seja o Debian 6 – Squeeze.

No Cliente Puppet, execute na linha de comando:

1º Passo

su
deb http://ftp.de.debian.org/debian squeeze main >> /etc/apt/sources.list
apt-get install -y puppet  facter
A opção “-y”, confirma automaticamente todos os pedidos de confirmação de instalação

2º Passo

É aconselhável que configure as chamadas de serviço DNS, em /etc/hosts, edite como root, acrescentando e/ou modificando as seguintes linhas:

127.0.1.1 nomedocliente.nomedarede.dominio nomedocliente
ip.do.servidor nomedoservidor.nomedarede.dominio puppet
Onde “nomedarede”, se não configurado adote qualquer nome.
Onde “dominio”, se não configurado adote qualquer um entre (“.net”,”.com”, entre outros).
Importante: O “nomedarede” e o “dominio” deve ser igual ao adotado na configuração do servidor que será mostrada na configuração do servidor puppet.

3º Passo

Após a instalação dos pacotes edite o arquivo /etc/default/puppet como root, na linha onde estiver START=no, modifique para START=yes , salve o arquivo.

4º Passo

Agora abra este arquivo puppetd.conf como root, no seguinte diretório /etc/puppet , e adicione as seguintes linhas:

[puppetd]
server= endereço do server

No servidor Puppet, execute na linha de comando:

1º Passo

su
deb http://ftp.de.debian.org/debian squeeze main >> /etc/apt/sources.list
apt-get install -y puppet  facter
A opção “-y”, confirma automaticamente todos os pedidos de confirmação de instalação

2º Passo

É aconselhável que configure as chamadas de serviço DNS, em /etc/hosts, edite como root, acrescentando e/ou modificando as seguintes linhas:

127.0.1.1 nomedoservidor.nomedarede.dominio puppet
ip.do.servidor nomedoservidor.nomedarede.dominio puppet
Onde “nomedarede”, se não configurado adote qualquer nome. Onde “dominio”, se não configurado adote qualquer um entre (“.net”,”.com”, entre outros).

3º Passo

No arquivo /etc/puppet/manifests/site.pp (provavelente site.pp não estará criado, crie-o) E escreva o texto a seguir:

# Create “/tmp/testfile” if it doesn’t exist.
class test_class {
    file { “/tmp/testfile”:
    ensure => present,
    mode   => 644,
    owner  => root,
    group  => root
    }
}
# tell puppet on which client to run the class
node pclient {
    include test_class
}

4º Passo

…na linha de comando execute como root

service puppetmaster restart>> Iniciando o sistema Puppet
  • No cliente execute:

    puppetd –server nomedorservidor.nomedarede.dominio –waitforcert 60 –test

    Algumas mensagens como estas, podem aparecer, não se preocupe pois é assim mesmo quando é efetuado o primeiro contato entre um cliente/servidor Puppet.

    err: No certificate; running with reduced functionality. info: Creating a new certificate request for pclient.example.con info: Requesting certificate warning: peer certificate won’t be verified in this SSL session notice: Did not receive certificate
  • No servidor execute:

    puppetca –list

    …deverá aparecer a linha a seguir:

    nomedocliente.nomedarede.dominio

    Ainda no servidor, execute:

    puppetca –sign nomedocliente.nomedarede.dominio

    Algumas mensagens podem ser exibidas, não se preocupe são absolutamente normais,

    info: Requesting certificate warning: peer certificate won’t be verified in this SSL session notice: Ignoring –listen on onetime run info: Caching configuration at /etc/puppet/localconfig.yaml notice: Starting configuration run notice: //pclient/test_class/File[/tmp/testfile]/ensure: created info: Creating state file /var/lib/puppet/state/state.yaml notice: Finished configuration run in 0.11 seconds

5º Passo

Testando se funcionou, procure pelo arquivo /tmp/testfile, na linha de comando é:

ls -l /tmp/testfile
Se este arquivo estiver, na máquina cliente o puppet está configurado, mas é recomendado ler e configurar com mais detalhes o arquivo /etc/puppetd.conf, com os parâmetros sugeridos pelo comando puppet agent –genconfig para a máquina cliente e puppet master –genconfig para o servidor.

Conclusão

O Puppet sincroniza os dados a cada 30 minutos e quando a máquina cliente é ligada, por padrão caso está configuração não o atende leia a documentação em http://docs.puppetlabs.com/. Para alguns esclarescimentos é possível acessar este vídeo, que ensina como configurar o puppet em http://www.youtube.com/watch?v=US8ZpjgEhUg.