2. Motivações
o Estudar alternativas para gerenciamento de servidores
Requisitos
o Gerir grandes quantidade de máquinas
o Minimizar a repetição de tarefas
o Trabalhar com diferentes distros e S.Os
O puppet demonstrou ser uma boa alternativa !
3. Porque não trabalhar com outras ferramentas
semelhantes?
Quais os problemas que queremos resolver?
4. Atividades repetitivas...
o Criar e manter um usuário ativo em um grupo de servidores
o Manter os pacotes do serviço NTP sempre instalados e o serviço
rodando
o Manter o firewall local dos servidores sempre ativos com as
corretas regras de filtragem de pacotes
5. Atividades repetitivas...
Normalmente
o Entrar em cada um dos servidores
o Adicionar o usuário, senha ou par de chaves
o Verificar se os pacotes estão instalados
#rpm -q ntp
#dpkg -l ntp
o Verificar se as regras de iptables foram ativadas e se estão corretamente
aplicadas
#iptables -nvL
Problemas
o realizar estas ações em cada servidor - retrabalho
o distros ou S.Os diferentes - diferentes abordagens
o outros admins podem cometer erros - padronização
6. Atividades repetitivas...
Com puppet
o Associar um cliente ao servidor master
o Criar um manifest específico para este cliente ou grupo de
clientes
o Atualizar o manifest quando necessário
Vantagens
o uma única vez
criar ou editar o manifest
o abstração de distros (redhat, debian, etc)
o outros admins não vão alterar as confs aleatoriamente
7. Porque usar o puppet?
• Para reduzir o tempo gasto com atividades repetitivas
• Para manter arquivos de configuração padronizados
• Para gerenciar diferentes distros e S.Os
• Porque o puppet fornece um poderoso framework que
simplifica uma série de tarefas (linhas de comando)
8. O puppet
• ferramenta que proporciona a automação das atividades
• baseado em Ruby
• fornece uma abstração entre os administradores e os
sistemas gerenciados
• linguagem simples que se baseia na especificação de
elementos do S.O, como:
o usuários
o pacotes
o serviços
o arquivos
9. Quem suporta puppet?
Linux BSD
• CentOS • FreeBSD 4.7 and later
• Debian 3.1 and later • OpenBSD 4.1 and later
• Fedora Core 2-6 Other Unix
• Fedora 7 and later • Macintosh OS X
• Gentoo Linux • Sun Solaris 2.6
• Mandriva Corporate Server 4 • Sun Solaris 7 and later
• RHEL 3 and later • AIX
• Oracle Linux • HP-UX
• SuSE Linux 8 and later
• Ubuntu 7.04 and later Windows
• ArchLinux • Windows (version 2.6.0 and
later)
11. Manifests
São arquivos de configuração do puppet usados na gerência
de seus clientes, estes contém:
o Variados tipos de resources;
o Variáveis;
o Expressões de condição;
o Importação de outros manifests;
o Definição de classes;
Arquivo.pp
12. Resource
• Conjunto funções ou objetos que definem as ações à serem
tomadas;
• RAL (Resource Abstraction Layer) é responsável pela
interoperabilidade entre sistemas
Tipos: user { 'user_fisl':
User ensure => present,
Package uid => '507',
File gid => 'admin',
shell => '/bin/bash',
Service home => '/home/fisl',
Cron }
Exec
Group
# puppet describe [nome_resource]
13. Facter
• Desenvolvido pelo PuppetLabs
• Lib do puppet para buscar informações de Hardware e SO
• Auxilia o desenvolvimento dos Resources
#facter
virtual: vmware
memorysize: 250.33 MB
is_virtual: true
kernelversion: 2.6.26
...
operatingsystem: Debian
16. Como aplicar o manifest ao cliente?
# vim /etc/puppet/manifests/site.pp
node 'cliente.exemplo.com' {
import 'ntp.pp'
include ssh
user { 'user_fisl':
ensure => present,
uid => '507',
gid => 'admin',
shell => '/bin/bash',
home => '/home/fisl',
}
}
17. Instalação
• Através de tarball ou RubyGems
• Via gerenciamento de pacotes
• Pré-requisito:
o Instalação do ruby e openssl
ruby
libshadow-ruby
libopenssl-ruby
openssl
o Instalação do fact;
biblioteca desenvolvido pelo puppet labs
18. Configurando
• Definições DNS:
o puppet.exemplo.com = Puppet Master (Server)
• Gerando o arquivo de configuração:
#puppetmaster --genconfig (Para o puppet master)
#puppet --genconfig (Para o puppet client)
• Arquivos de certificados e usuário do daemon do puppet
#puppet master --mkusers
19. Adicionando um puppet
agent no puppet master
• No cliente:
#puppet agent --server puppet.exemplo.com --waitforcert 60
--test
• No server:
#puppet cert --list
#puppet cert --sing cliente01.exemplo.com
20. Retirando o puppet agent
• Exclui o certificado do client no server.
#rm -f /etc/puppet/ssl/ca/signed/cliente01.exemplo.com
• Para reassinar o cliente:
#rm -rf /etc/puppet/ssl/
21. Um pouco mais de Puppet...
Puppet Scalability
• Integração com o Apache para gerenciamento de SSL
22. Um pouco mais de Puppet...
Modules
• Coleção de Resources, Arquivos, Classes e Templates
• Organização
• Comunidade ativa no desenvolvimento de módulos
23. Um pouco mais de Puppet...
Marionette MCollective
Exemplos:
• Quais servidores tem 32 GB de memória?
• Quantos servidores estão on-line?
• Permite realizar um deploy nos clients em tempo real
24. Um pouco mais de Puppet...
Reports
Centralizados no puppetmaster
Por padrão são enviados no formato Yaml
Report Processors
• tagmail
• rrdgraph
• log