Administracao de sistemas_com_puppet

26
Automação e gerenciamento de servidores com puppet Pedro Filho Ramon Mota

description

Palestra apresentada no fisl12 (02/07/2011) na PUCRS - POA - RS.

Transcript of Administracao de sistemas_com_puppet

Page 1: Administracao de sistemas_com_puppet

Automação e gerenciamento de servidores com puppet

Pedro FilhoRamon Mota

Page 2: Administracao de sistemas_com_puppet

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 !

Page 3: Administracao de sistemas_com_puppet

Porque não trabalhar com outras ferramentas semelhantes?

 

Quais os problemas que queremos resolver?

Page 4: Administracao de sistemas_com_puppet

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

Page 5: Administracao de sistemas_com_puppet

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...

Page 6: Administracao de sistemas_com_puppet

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...

Page 7: Administracao de sistemas_com_puppet

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)

Page 8: Administracao de sistemas_com_puppet

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

Page 9: Administracao de sistemas_com_puppet

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)

Page 10: Administracao de sistemas_com_puppet

Afinal, como o puppet trabalha?

Page 11: Administracao de sistemas_com_puppet

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

Page 12: Administracao de sistemas_com_puppet

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]

Page 13: Administracao de sistemas_com_puppet

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

Page 14: Administracao de sistemas_com_puppet

Variaveis e Condicionais

case $operatingsystem { centos, redhat: { $service_name = 'ntpd', } debian, ubuntu: { $service_name = 'ntp', }}

Page 15: Administracao de sistemas_com_puppet

#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,}

Page 16: Administracao de sistemas_com_puppet

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',

}}

Page 17: Administracao de sistemas_com_puppet

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

Page 18: Administracao de sistemas_com_puppet

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

Page 19: Administracao de sistemas_com_puppet

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

Page 20: Administracao de sistemas_com_puppet

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/

Page 21: Administracao de sistemas_com_puppet

Um pouco mais de Puppet...Puppet Scalability

• Integração com o Apache para gerenciamento de SSL

Page 22: Administracao de sistemas_com_puppet

Um pouco mais de Puppet...Modules

• Coleção de Resources, Arquivos, Classes e Templates

• Organização

• Comunidade ativa no desenvolvimento de módulos

Page 23: Administracao de sistemas_com_puppet

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

Page 24: Administracao de sistemas_com_puppet

Um pouco mais de Puppet...Reports

Centralizados no puppetmaster

Por padrão são enviados no formato Yaml

Report Processors• tagmail• rrdgraph• log

Page 25: Administracao de sistemas_com_puppet

Um pouco mais de Puppet...Puppet Dashboard

Page 26: Administracao de sistemas_com_puppet

Por onde iniciar / referências

Documentação disponível em, http://docs.puppetlabs.com/

Perguntas?

[email protected]@gmail.com