AUTOMATIZANDO TAREFAS COM O PUPPET

Logo-Puppet

Gerenciar vários servidores é sempre complicado, principalmente se você quer fazer da forma correta🙂.

Existem ferramentas comerciais para Windows que, com o devido licenciamento, fazem essas tarefas de forma mais simplificada como:
– Instalação de programas;
– Atualização de sistemas e programas;
– Criação de usuários e grupos;
– Criação de arquivos;
– Configuração de aplicações;
– Gestão de recursos do sistema;
– etc…

O problema é que como o System Center, a maioria dessas ferramentas não é barata e muito menos pode ser usada em Linux/Unix.

Para uma gestão integrada e seguindo padrões como Itil, é preciso mais que ir de servidor em servidor, desktop em desktop para fazer as devidas operações necessárias.

Para resolver esse tipo de problemas utilizamos linguagens de automação como o Puppet. Ele trabalha no modelo Cliente/Servidor e permite que façamos uma gama imensa de funções nos abstraindo de detalhes específicos do sistema operacional.

Vamos ver em uma série de artigos sobre ele e como utilizar suas principais funções e módulos para que possamos tornar o gerenciamento, configuração e deploy de máquinas algo simples e automático.

Existem diversas formas de automatizar tarefas com scripts, são um pouco trabalhosas mas são extremamente configuráveis, o problema é lidar com a interatividade dos sistemas e com as situações adversas ao realizar as operações. O tratamento de erros geralmente fica muito maior que as atividades a realizar.

No Puppet, como em outros programas do mesmo tipo, temos a RAL (Resource Abstraction Layer) que nos fornece a capacidade de dizer ao sistema Linux, por exemplo: instale um determinado pacote, depois de instalar crie um usuário com determinado nome e grupo, depois copie um arquivo de configuração padrão por http, altere algumas variáveis no arquivo e reinicie o serviço.

Isso sem se preocupar se usamos apt-get, yast, zipper, sem se preocupar se vai criar com adduser ou useradd, se vai baixar comwget ou lynx se vai iniciar com service ou outro comando, só quero que ele faça o que eu mando.

Isso torna a criação de scripts de ação para o puppet que pode ser utilizados, com pouca ou nenhuma adaptação em um parque de servidores com diversas distribuições Linux, Unix (e temos Puppet até para Windows :-P).

Vamos ver neste artigo como começara usar o Puppet para tarefas diárias e até com algumas condições para realização das mesmas.

A instalação do cliente e servidor serão feitas no Ubuntu Server 12.04, mas o funcionamento é o mesmo em outras distribuições como CentOS e Suse, bastando apenas a instalação dos pacotes correspondentes.

Vamos lá,

No host que será o servidor, chamaremos de master, faça o seguinte:

# apt-get install puppetmaster

No caso do servidor também instalo o vim-puppet para syntax em arquivos do puppet.

Se você não possuir um DNS corretamente funcionando, edite o /etc/hosts do servidor e adicione a seguinte linha:

192.168.1.253 master.cooperati.local master
192.168.1.252 server1.cooperati.local server1

Onde 192.168.1.253 é o IP do servidor, cooperati.local é o domínio utilizado.

No host que será o cliente, chamaremos de server1, faça o seguinte:

# apt-get install puppet

Edite o /etc/hosts do cliente e adicione a seguinte linha:

192.168.1.253 master.cooperati.local master

Ainda no cliente entre no arquivo /etc/default/puppet para habilitar o serviço:

# vi /etc/default/puppet

Altere de:
START=no

Para:
START=yes

Edite no cliente o arquivo do puppet:

# vi /etc/puppet/puppet.conf

No início do arquivo crie a seção puppetd com a seguinte configuração:

[puppetd]
server=master.cooperati.local

Agora vamos criar a relação de confiança entre cliente e servidor.

No cliente faça:

# puppet --server master.cooperati.local waitforcert 60 test

Assim vamos conectar ao servidor e aguardar o certificado.

No servidor faça:

# puppetca --list

Deve aparecer o nome do cliente que requisitou o certificado.

Vamos assinar e validar o certificado:

# puppetca --sign server1.cooperati.local

Pronto agora estão se comunicando corretamente.

No cliente inicie o agente do puppet com:

# /etc/init.d/puppet restart

Por padrão o agente do puppet verifica a cada meia hora sobre instruções no servidor, mas para diminuir esse tempo altere seu arquivo de configuração com a seguinte linha na seção [main]:

# vi /etc/puppet/puppetd.conf
.
.
.
[main]
.
.
.
runinterval=300

Reinicie o serviço e assim ele executa a checagem a cada 5 minutos.

Vamos criar nossa primeira tarefa, como o puppet tem nomes padrão de arquivos de manifestos, que são os arquivos com comandos de execução do puppet, vamos usar o site.pp com o seguinte conteúdo:

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

package { 'ntp': ensure => 'present' }  exec { 'apt-get update': path => '/usr/bin/:/bin/:/sbin:/usr/sbin/' }  exec { 'apt-get upgrade -y': path => '/usr/bin/:/bin/:/sbin:/usr/sbin/' }  node 'server1' { } 

Assim ele vai executar essas ações em todos os hosts mencionados em node, veja que para instalar o pacote ntp eu não precisei especificar qual comando de instalação, apenas para atualizar o sistema especifiquei o comando.

Se você configurou o intervalo da checagem do agente para 5 minutos (300 segundos) aguarde um pouco para verificar se vai encontrar o arquivo /etc/ntp.conf na máquina e se o sistema estará atualizado.

Nos próximos artigos vou mostrar como fazer a programação das tarefas de forma mais organizada e como especificar para qual distribuição Linux determinada ação deve ser aplicada. Posteriormente veremos deploy de arquivos pré-configurados e edição de configuração de servidores.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: