Puppet Automatizando e Gerênciando Con!gurações <Guto Carvalho>
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ília
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ília
Agenda 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 Ganhos Puppet & 4Linux
Administração Manual Tarefas repetitivas Falta de padrões Falta de procedimentos de!nidos Cada sysadmin faz do seu jeito Falta de documentação das mudanças executadas
Problemas 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 jeito Falta de documentação das mudanças executadas
Tarefas 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 ambientes Expansão de ambientes balanceados
Exemplo: Pacote Demanda Trocar Nagios por Zabbix Ambiente 450 máquinas Estimativa 10 minutos por máquina 4.500 minutos ou 75 horas Cerca 9 dias trabalhando 8 h.p.d
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 450 trocas de senha, quem curte?
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 Você trabalha muitos!nais de semana e madrugadas
Como resolvo isto?
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 forma ágil e automatizada.
Gerência de Con!gurações Padronização Automatização Controle Integridade Agilidade nas mudanças
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 Windows Criada por um sysadmin (Luke Kaine) para sysadmins.
Puppet 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/servidor Oferece camada de abstração para criação das con!gurações
Instale pacote X
Crie usuário Y
Inicie serviço Z
Recursos 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 E muito mais...
Exemplo de Con!guração # aptitude install apache2 # update-rc.d -f apache2 defaults # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start debian way
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 package { 'postfix': ensure => present, } service { 'postfix': ensure => running, enable => true, } resource type parameter title value file { 'main.cf': path => /etc/postfix/main.cf, content => template( /srv/puppet/templates/main.cf.erb ), }
Exemplo de template Trecho do template main.cf.erb myorigin = <%= hostname %> mydestination = $myhostname,..., localhost, <%= fqdn %> Substituição de variáveis por fatos 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 Caixa
Cases Puppet
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 Lista puppet-users com 7795 tópicos de discussão
Quais os ganhos com o Puppet? Documentação instantânea Restore de backup e mudanças Processos bem de!nidos Ambiente padronizado Sistemas automatizados
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 casa Suas madrugas e!nais de semana serão seus
Exemplo real Ambiente com 450 nodes modo manual puppet instalando zabbix 75 horas 10 minutos criando usuário 22 horas 10 minutos
Puppet & 4Linux 4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet Master
Perguntas?
EOF José Augusto (Guto) Carvalho <gutocarvalho@4linux.com.br> @gutocarvalho twitter@4linuxbr facebook/4linux