Upload
ramon-mota
View
1.522
Download
0
Embed Size (px)
DESCRIPTION
Palestra apresentada no fisl12 (02/07/2011) na PUCRS - POA - RS.
Citation preview
Automação e gerenciamento de servidores com puppet
Pedro FilhoRamon Mota
Motivações
o Estudar alternativas para gerenciamento de servidores Requisitos
o Gerir grandes quantidade de máquinaso Minimizar a repetição de tarefaso Trabalhar com diferentes distros e S.Os
O puppet demonstrou ser uma boa alternativa !
Porque não trabalhar com outras ferramentas semelhantes?
Quais os problemas que queremos resolver?
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
Normalmente
o Entrar em cada um dos servidoreso Adicionar o usuário, senha ou par de chaveso 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
Problemaso realizar estas ações em cada servidor - retrabalho o distros ou S.Os diferentes - diferentes abordagenso outros admins podem cometer erros - padronização
Atividades repetitivas...
Com puppet
o Associar um cliente ao servidor mastero Criar um manifest específico para este cliente ou grupo de
clienteso Atualizar o manifest quando necessário
Vantagens
o criar ou editar o manifest uma única vez o abstração de distros (redhat, debian, etc)o outros admins não vão alterar as confs aleatoriamente
Atividades repetitivas...
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)
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árioso pacoteso serviçoso arquivos
Quem suporta puppet?
Linux• CentOS• Debian 3.1 and later• Fedora Core 2-6• Fedora 7 and later• Gentoo Linux• Mandriva Corporate Server 4• RHEL 3 and later• Oracle Linux• SuSE Linux 8 and later• Ubuntu 7.04 and later• ArchLinux
BSD• FreeBSD 4.7 and later• OpenBSD 4.1 and later
Other Unix• Macintosh OS X• Sun Solaris 2.6• Sun Solaris 7 and later• AIX• HP-UX
Windows• Windows (version 2.6.0 and
later)
Afinal, como o puppet trabalha?
ManifestsSã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
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 Package File Service Cron Exec Group
user { 'user_fisl': ensure => present, uid => '507', gid => 'admin', shell => '/bin/bash', home => '/home/fisl',}
# puppet describe [nome_resource]
Facter
#facter
virtual: vmwarememorysize: 250.33 MBis_virtual: truekernelversion: 2.6.26...operatingsystem: Debian
• Desenvolvido pelo PuppetLabs• Lib do puppet para buscar informações de Hardware e SO• Auxilia o desenvolvimento dos Resources
Variaveis e Condicionais
case $operatingsystem { centos, redhat: { $service_name = 'ntpd', } debian, ubuntu: { $service_name = 'ntp', }}
#cat ntp.pp
case $operatingsystem { centos, redhat: { $service_name = 'ntpd' $conf_file = 'ntp.conf.rhel' } debian, ubuntu: { $service_name = 'ntp' $conf_file = 'ntp.conf.debian' }}package { 'ntp': ensure => installed,} file { '/etc/ntp.conf': ensure => file, require => Package['ntp'], source => "puppet:///modules/ntp/$conf_file",}service { '$service_name': ensure => running, enable => true,}
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',
}}
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
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
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
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/
Um pouco mais de Puppet...Puppet Scalability
• Integração com o Apache para gerenciamento de SSL
Um pouco mais de Puppet...Modules
• Coleção de Resources, Arquivos, Classes e Templates
• Organização
• Comunidade ativa no desenvolvimento de módulos
Um pouco mais de Puppet...Marionette MCollectiveExemplos:
• Quais servidores tem 32 GB de memória?
• Quantos servidores estão on-line?
• Permite realizar um deploy nos clients em tempo real
Um pouco mais de Puppet...Reports
Centralizados no puppetmaster
Por padrão são enviados no formato Yaml
Report Processors• tagmail• rrdgraph• log
Um pouco mais de Puppet...Puppet Dashboard
Por onde iniciar / referências
Documentação disponível em, http://docs.puppetlabs.com/
Perguntas?
[email protected]@gmail.com