Administracao de sistemas_com_puppet

Post on 12-Jan-2015

1.517 views 0 download

description

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

Transcript of Administracao de sistemas_com_puppet

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?

ramonmsf@gmail.compedro.filho.jp@gmail.com