Puppet
Automatizando e Gerênciando Con!gurações
whoami
‣
Consultor/SysAdmin (LPIC-3) na 4Linux‣
Doze anos de experiência com tecnologias FOSS‣
Blogueiro de TI há 6 anos no site gutocarvalho.net‣
Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS, MPS/DATAPREV, ITI/PR, CEF, MD/SIPAM, DETRAN/DF
‣
Há 2 anos trabalhando com gerência de con!gurações em ambientes virtualizados e clouds privadas em Brasíliawhoami
‣
Consultor/SysAdmin (LPIC-3) na 4Linux‣
Doze anos de experiência com tecnologias FOSS‣
Blogueiro de TI há 6 anos no site gutocarvalho.net‣
Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS, MPS/DATAPREV, ITI/PR, CEF, MD/SIPAM, DETRAN/DF
‣
Há 2 anos trabalhando com gerência de con!gurações em ambientes virtualizados e clouds privadas em BrasíliaAgenda
‣
Administração Manual‣
Gerência de Con!gurações‣
Puppet como ferramenta de GC‣
Puppet Características‣
Puppet Exemplos‣
Cases Puppet‣
Comunidade Puppet‣
Benefícios e GanhosAdministração Manual
‣
Tarefas repetitivas‣
Falta de padrões‣
Falta de procedimentos de!nidos‣
Cada sysadmin faz do seu jeitoProblemas da Administração Manual
‣
Tarefas repetitivas‣
Falta de padrões‣
Maior índice de falhas humanas‣
Equipe sempre sobrecarregada‣
Equipe sempre saindo tarde e trabalhando FDS‣
Falta de procedimentos de!nidos‣
Cada sysadmin faz do seu jeitoTarefas repetitivas
‣
Criação de usuários‣
Elaboração de scripts‣
Con!guração de serviços‣
Con!gurações de monitoramento‣
Criação de imagens de ambientes‣
Con!guração do sistema operacional‣
Instalação, atualização e remoção de pacotes‣
Reinstalação de ambientesExemplo: Pacote
Demanda
Trocar Nagios por Zabbix
Ambiente
450 máquinas
Estimativa
10 minutos por máquina 4.500 minutos ou 75 horas
Exemplo: Usuário
Demanda
Criar usuário em 450 nodes
Ambiente
450 máquinas
Estimativa
3 minutos por máquina 1350 minutos
22.5 horas para criar o usuário
Você vai perceber que...
‣ Fica mais difícil identi!car e corrigir problemas
‣ Fica mais difícil manter ambientes complexos funcionando
‣ Fica mais difícil manter seu parque padronizado
‣ Sua produtividade diminui a media que o ambiente cresce
‣ Sua capacidade de entrega não é mais a mesma
‣ Você nunca chega em casa no mesmo horário
Gerência de Con!gurações
A gerência de configuração oferece um conjunto de recursos
que visa garantir a integridade das configurações de nossos
sistemas, serviços e infraestrutura envolvida, fazendo isto de
Gerência de Con!gurações
‣
Padronização
‣
Automatização
‣
Controle
‣
Integridade
Puppet em poucas palavras
‣
Ferramenta de nova geração que implementa Gerência de Con!gurações‣
Podemos parar de administrar e começar a desenvolver nossa infra‣
Nos permite reaproveitar código para construir con!gurações‣
Oferece linguagem declarativa para expressar nossas con!gurações‣
Possui uma sintaxe simples, prática e natural para sysadmins‣
Oferece suporte a Linux, BSDs, OSX e WindowsPuppet Características
‣
Escrito em Ruby‣
Extensível usando código Ruby‣
Funciona em modo autônomo (roda na máquina localmente)‣
Funciona em modo cliente/servidor (RESTful)‣
Oferece comunicação segura SSL entre cliente/servidorRecursos
‣ Suporte a mais de 19 tipos de sistemas operacionais
‣ RHEL, CentOS, Debian, Scienti!c Linux, Oracle Linux, Ubuntu, Fedora, Suse, Gentoo, Mandriva, Archlinux, FreeBSD, OpenBSB, Mac OS X, Oracle Solaris, AIX, HPUX, Windows 2003, Windows 7
‣ Suporte a 23 tipos de gerenciadores de pacotes
‣ Suporte a 11 tipos de sistemas de inicialização
‣ Puppet é Idempotente
‣ Suporte a tratamento a condicionais em suas con!gurações
‣ Resource Types, Parâmetros, Meta-Parâmetros, Classes, Fatos, Variáveis, Templates e De!nições
‣ Obtém fatos do sistema via FACTER
Exemplo de Con!guração
#
aptitude
install apache2
#
update-rc.d -f
apache2 defaults
#
cp
~/httpd.conf /etc/apache2/
#
invoke-rc.d
apache2 start
Exemplo de Con!guração
package { 'postfix': ensure => present, } service { 'postfix': ensure => running, enable => true, } file { 'main.cf': path => “/etc/postfix/main.cf”,content => template(‘/srv/puppet/templates/main.cf.erb’),
Exemplo de Con!guração
resource type
parameter
title
value
package { 'postfix': ensure => present, } service { 'postfix': ensure => running, enable => true, } file { 'main.cf': path => “/etc/postfix/main.cf”,content => template(‘/srv/puppet/templates/main.cf.erb’),
Exemplo de template
myorigin = <%= hostname %>
mydestination = $myhostname, ..., localhost, <%= fqdn %>
Trecho do template main.cf.erb
myorigin = servidor.dominio
mydestination = $myhostname, ..., localhost, servidor.dominio
Exemplo de de!nição
proxy::squid { 'ProxyFilial' : http_port squid_mode squid_hostname cache_mem maximum_object_size_in_memory maximum_object_size memory_replacement_policy cache_replacement_policy cache_dir cache_mgr cache_e"ective_user cache_e"ective_group dns_nameservers ips_squid } => '3128', => 'transparent', => 'proxy.4linux', => '2 GB', => '6 MB', => '128 MB', => 'heap GDSF', => 'heap LFUDA', => 'aufs /var/spool/squid 1024 16 256', => 'monitora@4linux.com.br', => 'proxy', => 'proxy', => '127.0.0.1 10.61.12.2 172.16.1.1', => '127.0.0.1 192.168.12.3',Cases Puppet BR
‣
EBC
‣
Detran/DF
Comunidade Puppet
‣727 pessoas online no canal #puppet da irc.freenode.net
‣8.500 repositórios no GitHub
‣450 módulos no PuppetForge
‣4457 usuários ativos na lista puppet-users
Quais os ganhos com o Puppet?
‣
Documentação instantânea
‣
Restore de backup e mudanças
‣
Processos bem de!nidos
‣
Ambiente padronizado
Benefícios Reais
‣
Maior produtividade em menor tempo‣
Poucos sysadmins para muitos nodes‣
Diminuição de falhas humanas‣
Maior controle de todo o seu parque‣
Diminuição do tempo gasto em mudanças‣
Diminuição do custo de manutenção‣
Você chegará cedo em casaExemplo real
Ambiente com 450 nodes Ambiente com 450 nodes Ambiente com 450 nodes
modo manual puppet
instalando zabbix 75 horas 10 minutos
Puppet & 4Linux
4Linux & PuppetLabs
‣
1o Parceiro no Brasil
‣
Consultores Especializados
‣
Cases no Governo Federal
‣
Suporte Puppet Enterprise
EOF
José Augusto (Guto) Carvalho
<gutocarvalho@4linux.com.br> @gutocarvalho
twitter@4linuxBR facebook/4linux