SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
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,                                resource type
}
                                                      parameter
service { 'postfix':
  ensure => running,
  enable => true,
                                                         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                       => '3128',
    squid_mode                      => 'transparent',
    squid_hostname                  => 'proxy.4linux',
    cache_mem                       => '2 GB',
    maximum_object_size_in_memory   => '6 MB',
    maximum_object_size             => '128 MB',
    memory_replacement_policy       => 'heap GDSF',
    cache_replacement_policy        => 'heap LFUDA',
    cache_dir                       => 'aufs /var/spool/squid 1024 16 256',
    cache_mgr                       => 'monitora@4linux.com.br',
    cache_e"ective_user             => 'proxy',
    cache_e"ective_group            => 'proxy',
    dns_nameservers                 => '127.0.0.1 10.61.12.2 172.16.1.1',
    ips_squid                       => '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
Automatizando Configurações com Puppet

Mais conteúdo relacionado

Mais procurados

(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...Samuel Sampaio
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGiljefesrodrigues
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppetElton Simões
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetRoberto Scudeller
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Gustavo Pereira
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...tdc-globalcode
 
Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!Iuri Andreazza
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet 4LinuxCursos
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátilWanderlei Silva do Carmo
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvPedro Fernandes Vieira
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 
Linux - Inicialização e Gerenciamento de Processos
Linux - Inicialização e Gerenciamento de ProcessosLinux - Inicialização e Gerenciamento de Processos
Linux - Inicialização e Gerenciamento de ProcessosFrederico Madeira
 

Mais procurados (20)

Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
 
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGil
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - Puppet
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
 
Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!Hotspot Green and Blue Label - Switching the labels!
Hotspot Green and Blue Label - Switching the labels!
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
 
Vagrant uma ferramenta realmente útil e versátil
Vagrant   uma ferramenta realmente útil e versátilVagrant   uma ferramenta realmente útil e versátil
Vagrant uma ferramenta realmente útil e versátil
 
Python na Web
Python na WebPython na Web
Python na Web
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
Drupal + Rex
Drupal + RexDrupal + Rex
Drupal + Rex
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
Linux - Inicialização e Gerenciamento de Processos
Linux - Inicialização e Gerenciamento de ProcessosLinux - Inicialização e Gerenciamento de Processos
Linux - Inicialização e Gerenciamento de Processos
 

Semelhante a Automatizando Configurações com Puppet

Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppetRamon Mota
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Um novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governoUm novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governoinstructbr
 
BeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOpsBeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOps4LinuxCursos
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web ServicesDorneles Treméa
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxMarcelo Sabadini
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppetDaniel Sobral
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filtertdc-globalcode
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppetpericles_junior
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeIgor Nicoli
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Fabrízio Mello
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuningDell Technologies
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 

Semelhante a Automatizando Configurações com Puppet (20)

Administracao de sistemas_com_puppet
Administracao de sistemas_com_puppetAdministracao de sistemas_com_puppet
Administracao de sistemas_com_puppet
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Um novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governoUm novo modelo de implantação do SEI no governo
Um novo modelo de implantação do SEI no governo
 
BeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOpsBeavOps : Como o Python ajudou a integrar o mundo DevOps
BeavOps : Como o Python ajudou a integrar o mundo DevOps
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
Apresentacao_Puppet
Apresentacao_PuppetApresentacao_Puppet
Apresentacao_Puppet
 
Automação de Data Center
Automação de Data CenterAutomação de Data Center
Automação de Data Center
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Como migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para LinuxComo migrar seu ambiente de desenvolvimento para Linux
Como migrar seu ambiente de desenvolvimento para Linux
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppet
 
Vagrant + Puppet
Vagrant + PuppetVagrant + Puppet
Vagrant + Puppet
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppet
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuning
 
Cygwin
CygwinCygwin
Cygwin
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 

Mais de Jose Augusto Carvalho

Mais de Jose Augusto Carvalho (9)

Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
Conhecendo o Wordpress
Conhecendo o WordpressConhecendo o Wordpress
Conhecendo o Wordpress
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
 
Palestra Puppet Hora Livre
Palestra Puppet Hora LivrePalestra Puppet Hora Livre
Palestra Puppet Hora Livre
 
Oficina Puppet latinoware
Oficina Puppet latinowareOficina Puppet latinoware
Oficina Puppet latinoware
 
Puppet Cloud IaaS
Puppet Cloud IaaSPuppet Cloud IaaS
Puppet Cloud IaaS
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)
 

Automatizando Configurações com Puppet

  • 1.
  • 2. Puppet Automatizando e Gerênciando Con!gurações <Guto Carvalho>
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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?
  • 11. 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
  • 13. 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.
  • 15. 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.
  • 16. 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
  • 20. 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...
  • 21. 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
  • 22. 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’), }
  • 23. Exemplo de Con!guração package { 'postfix': ensure => present, resource type }   parameter service { 'postfix': ensure => running, enable => true, title } value file { 'main.cf': path => “/etc/postfix/main.cf”, content => template(‘/srv/puppet/templates/main.cf.erb’), }
  • 24. 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
  • 25. Exemplo de de!nição proxy::squid { 'ProxyFilial' : http_port => '3128', squid_mode => 'transparent', squid_hostname => 'proxy.4linux', cache_mem => '2 GB', maximum_object_size_in_memory => '6 MB', maximum_object_size => '128 MB', memory_replacement_policy => 'heap GDSF', cache_replacement_policy => 'heap LFUDA', cache_dir => 'aufs /var/spool/squid 1024 16 256', cache_mgr => 'monitora@4linux.com.br', cache_e"ective_user => 'proxy', cache_e"ective_group => 'proxy', dns_nameservers => '127.0.0.1 10.61.12.2 172.16.1.1', ips_squid => '127.0.0.1 192.168.12.3', }
  • 28. 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
  • 29. Quais os ganhos com o Puppet? ‣ Documentação instantânea ‣ Restore de backup e mudanças ‣ Processos bem de!nidos ‣ Ambiente padronizado ‣ Sistemas automatizados
  • 30. 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
  • 31. Exemplo real Ambiente com 450 nodes modo manual puppet instalando zabbix 75 horas 10 minutos criando usuário 22 horas 10 minutos
  • 32. Puppet & 4Linux ‣ 4Linux & PuppetLabs 1o Parceiro no Brasil ‣ Consultores Especializados ‣ Cases no Governo Federal ‣ Suporte Puppet Enterprise ‣ Treinamentos Puppet Master
  • 34. EOF José Augusto (Guto) Carvalho <gutocarvalho@4linux.com.br> @gutocarvalho twitter@4linuxBR facebook/4linux