Oficina Puppet - Aprenda a Gerenciar Configurações

6,097 views

Published on

Aprenda como gerenciar as configurações de seus servidores usando uma moderna ferramenta de automação.

0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,097
On SlideShare
0
From Embeds
0
Number of Embeds
698
Actions
Shares
0
Downloads
234
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide
  • \n
  • Vim aqui compartilhar com vocês algumas boas experiência que tive nos últimos\n2 anos com Gerência de Configurações em Clouds Privadas.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • flexibilidade\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Em matemática e ciência da computação, a idempotência é a propriedade que algumas operações têm de poderem ser aplicadas várias vezes sem que o valor do resultado se altere após a aplicação inicial.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • mudar para template\n
  • mudar para template\n
  • \n
  • Quando eu declaro um node, pode delcarar novas variáveis para ele.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Equipes tranquilas, descansadas, menos estressadas, mais especializadas.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Oficina Puppet - Aprenda a Gerenciar Configurações

    1. 1. Brasília/DF 2012-08-18Oficina PuppetGuto Carvalho
    2. 2. Gerência de ConfiguraçõesPuppet em ambiente Debian José Augusto (Guto) Carvalho gutocarvalho@gmail.com
    3. 3. whoami
    4. 4. whoamiConsultor/SysAdmin (LPIC-3) na 4Linux12 anos de experiência com tecnologias FOSSBlogueiro FOSS há 6 anos no site gutocarvalho.netAtuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS,MPS/DATAPREV, ITI/PR, CEF, MD/SIPAM, DETRAN/DFHá 2 anos trabalhando com gerência de configurações em ambientesvirtualizados e clouds privadas em Brasília
    5. 5. whoamiConsultor/SysAdmin (LPIC-3) na 4Linux12 anos de experiência com tecnologias FOSSBlogueiro FOSS há 6 anos no site gutocarvalho.netAtuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS,MPS/DATAPREV, ITI/PR, CEF, MD/SIPAM, DETRAN/DFHá 2 anos trabalhando com gerência de configurações em ambientesvirtualizados e clouds privadas em Brasília
    6. 6. Plano de Trabalho40 minutos de apresentação40 minutos de Mão na Massa10 minutos para perguntas
    7. 7. AgendaGerência de configuraçõesInfraestrutura como códigoPuppet como solução de gerência de configuraçõesPuppet arquitetura, funcionamento e recursosMão na massaPerguntas
    8. 8. Administração de sistemas e serviços
    9. 9. Virtualização
    10. 10. Cloud Computing
    11. 11. Administração Manual
    12. 12. Administração ManualTarefas repetitivasNão existem padrõesNão existem procedimentos
    13. 13. Cada sysadmin faz do seu jeito
    14. 14. Tarefas Repetitivas Criação de usuáriosElaboração de scriptsConfiguração de serviçosConfigurações de monitoramentoCriação de imagens de ambientesConfiguração do sistema operacionalInstalação, atualização e remoção de pacotes
    15. 15. A medida que o parque aumentaadministrá-lo fica mais complicado
    16. 16. Você vai percerber que...Fica mais difícil identificar e corrigir problemasFica mais difícil manter ambientes complexos funcionandoFica mais difícil manter seu parque padronizadoSua produtividade diminui a media que o ambiente cresceSua capacidade de entrega não é mais a mesmaVocê nunca chega em casa no mesmo horárioVocê trabalha muitos finais de semana e madrugadas
    17. 17. Maior risco de falhas
    18. 18. Maior tempo gasto para executar mudanças
    19. 19. Criação de usuário 450 máquinas 3 minutos por máquina1350 minutos ou 22,5 horas 450 trocas de senhas
    20. 20. Procedimento para criar usuárioAcessar o servidor por sshSe tornar rootCriar usuárioEspecificar senha temporáriaEspecificar permissões no sudoers
    21. 21. Instalação de agente de monitoramento 450 máquinas 10 minutos por máquina4500 minutos ou 75 horas9 dias trabalhando 8 h.p.d
    22. 22. Procedimento para instalar zabbixAcessar servidor via sshAdicionar repositório APTAtualizar índicesInstalar pacoteAjustar arquivo zabbix_agentd.confReiniciar agente zabbixRemover agente antigo (nagios).
    23. 23. Documentação inexistente
    24. 24. Não há rastreamento de mudanças
    25. 25. Você começa a ter a sensação de estar sendo engolido por seu ambiente
    26. 26. Como resolver isto? Como obtenho controle e padronização em meu ambiente ?
    27. 27. Gerência de Configurações
    28. 28. Padronização
    29. 29. Automatização
    30. 30. Controle
    31. 31. Integridade
    32. 32. Agilidade nas mudanças
    33. 33. PuppetFerramenta de nova geraçãoque implementa gerência de configurações para seu ambiente.
    34. 34. Puppet em poucas palavras
    35. 35. Puppet em poucas palavrasNos permite parar de administrar e começar a desenvolver nossa infraNos permite reaproveitar código para construir configuraçõesOferece linguagem declarativa para criar configuraçõesSintaxe simples, prática e natural para sysadminsOferece suporte a Linux, BDBs, OSX e Windows
    36. 36. Sobre a ferramenta
    37. 37. Sobre a ferramentaFerramenta Open Source - Apache LicenseFerramenta mantida pela empresa PuppetlabsEmpresa oferece suporte e versão enterpriseCriado por Luke Kaines (CEO e Fundador Puppetlabs)Cases de uso com gandes players (HP, CISCO, VMWARE...)Recebeu pesados investimentos
    38. 38. Sobre a ferramentaFerramenta Open Source - Apache LicenseFerramenta mantida pela empresa PuppetlabsEmpresa oferece suporte e versão enterpriseCriado por Luke Kaines (CEO e Fundador Puppetlabs)Cases de uso com gandes players (HP, CISCO, VMWARE...)Recebeu pesados investimentos
    39. 39. Feito por um SysAdmin para SysAdmins
    40. 40. Desenhada para uso DevOps
    41. 41. Visão DevOps
    42. 42. Tech Specs
    43. 43. Tech SpecsEscrito em RubyExtensível usando código RubyFunciona em modo autônomo (serverless)Funciona em modo cliente.servidorUsa RESTful APIOferece comunicação segura com uso de certificados digitais
    44. 44. Cases Puppet Enterprise
    45. 45. ArquiteturaComo funciona o Puppet?
    46. 46. Resource Abstraction Layer (RAL)
    47. 47. Resource Abstraction Layer
    48. 48. Resource Abstraction LayerCamada de Abstração de RecursosFale o que você quer que seja feitoNão se preocupe em como será feitoO Puppet sabe como fazer
    49. 49. Instale Pacote X
    50. 50. Remova usuário Z
    51. 51. (Re)inicie serviço Y
    52. 52. Tratamento de InformaçõesO grande diferencial do Puppet é a forma como ele trata as informações de seus nodes
    53. 53. Tratamento de informações
    54. 54. Tratamento de informaçõesNo Puppet tudo é modelado e tratado como ‘dados’O estado atual de um node (servidor) é um dadoUm pacote instalado em um node é um dadoUm usuário em um servidor é um dado
    55. 55. Os dados são inseridos em catálogos pelo masterO catálogo é processado pelo node e as modificações são aplicadas de acordo com o que foi declarado.
    56. 56. Processamento do Catálogo1) Agente Requisita Catálogo1.1) Agente envia Fatos para Master2) Master Processa Fatos e Compara2.1) Master Produz e envia Catálogo3) Node Recebe, Compara e Aplica4) Node informa estado atual ao Master5) Sistema reflete catálogo
    57. 57. Processamento do Catálogo1) Agente Requisita Catálogo1.1) Agente envia Fatos para Master2) Master Processa Fatos e Compara2.1) Master Produz e envia Catálogo3) Node Recebe, Compara e Aplica4) Node informa estado atual ao Master5) Sistema reflete catálogo
    58. 58. Idempotência
    59. 59. Visão ampla do Puppet Puppet ConfiguraçõesMódulos Estáticos Master Voláteis e Dados Camada de Serviços Estruturantes LDAP DNS MONIT SYSLOG Camada de Aplicação JBOSS APACHE MYSQL PGSQL Puppet Agents
    60. 60. Insira o Puppet na imagem de instalação de seus nodes.
    61. 61. Não tenha medo de realizaratualizações, o puppet faz pra você!
    62. 62. Você pode fazer deploy de sua APP Você pode controlar a versão de sua APP
    63. 63. Como funciona o modo cliente/servidor?
    64. 64. Modo Cliente/ServidorO agente gera um certificado digitalO master precisa autorizar o certificadoSem autorização o agente não pode se comunicarToda a comunicação entre agente e master é segura
    65. 65. Puppet Master8140 TCP 8139 TCP Client SSL Serverpuppetd -t puppetrun Puppet Client Puppet Visão em Rede
    66. 66. Fluxo Cliente/ServidorInstalação do node
    67. 67. Fluxo Cliente/ServidorInstalação do Inicialização node do puppet
    68. 68. Fluxo Cliente/ServidorInstalação do Inicialização Geração de node do puppet Certificado
    69. 69. Fluxo Cliente/ServidorInstalação do Inicialização Geração de node do puppet Certificado Envio de Certificado
    70. 70. Fluxo Cliente/ServidorInstalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado Certificado
    71. 71. Fluxo Cliente/ServidorInstalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado Certificado
    72. 72. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado CertificadoModalidades de Assinatura de Certificado Assinatura pode ser manual Assinatura pode ser automática por domínio Assinatura pode ser automática em qualquer requisição
    73. 73. O agente se comunica com o master a cada N minutos
    74. 74. Quais recursos estão disponíveis?
    75. 75. Recursos do PuppetResource TypesParâmetros e Meta-parâmetrosTemplates e DefiniçõesClasses e MódulosFunções e Condicionais
    76. 76. Puppet Resource Types Arquivos e Diretórios Yum Repos Usuários Augeas Alias Hosts Pacotes SSH Serviços CronO puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo.
    77. 77. Resource Type: PackagesSuporte a 23 tipos deprovedores de pacotesFaz a abstração do OSDeclare se o pacote deve estarpresente ou ausenteDeclare se o pacote devesempre estar em sua últimaversão
    78. 78. Resource Type: ServicesSuporta 11 tipos de sistemasINIT para inicializar serviçosDeclare se um serviço deveestar sempre rodandoDeclare se um serviço deve sercarregado no bootDeclare se um serviço dependede um pacote ou arquivo
    79. 79. Resource Type: FileEspecifique permissões eownersDeclare arquivos,diretórios e linksControle de mudançasusando até 15 tipos dechecksums
    80. 80. Exemplos
    81. 81. Instala, Configura e Iniciadebian-way # aptitude install apache2 # update-rc.d -f apache2 defaults # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start
    82. 82. Instala, Configura e Iniciapackage { apache2: ensure => present, } service { apache2: ensure => running, enable => true, }file { httpd.conf: path => “/etc/apache2/httpd.conf”, source => “/etc/puppet/files/httpd.conf”, }
    83. 83. Instala, Configura e Iniciapackage { apache2: ensure => present, } resource type service { apache2: parameter ensure => running, title enable => true, value }file { httpd.conf: path => “/etc/apache2/httpd.conf”, source => “/etc/puppet/files/httpd.conf”, }
    84. 84. Base Classclass linux-server { include sysadmin-utils include zabbix-agent include ntpconf include locales include hosts include users include localmta include vimrc include backup-agent include apt-repos}
    85. 85. Declarando um nodenode “servidor.dominio” { include linux-server include module}node “balancer.dominio” { include linux-server include cyrus::backend include postfix::hub include haproxy::mailproxy}
    86. 86. Variáveis e FatosFatos (facter)domain => hacklab, Variáveisfqdn => puppetmaster.hacklab,hostname => puppetmaster, vimpackage => vim-puppet,interfaces => eth0,eth1,lo,ipaddress_eth0 => 10.0.2.15, apacheservice => apache2,ipaddress_eth1 => 192.168.56.150,ipaddress_lo => 127.0.0.1, ntpconfrhel => ntp.conf.rhel,lsbdistid => debian,lsbdistrelease => 6.0.5,
    87. 87. Condicionaiscase $operatingsystem { CentOS,RedHat: { $package_name = ntp, $service_name = ntpd, $conf_file = ntp.conf.el, } Debian,Ubuntu: { $package_name = ntp, $service_name = ntp, $conf_file = ntp.conf.debian, }}....
    88. 88. Definiçõesproxy::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_effective_user => proxy, cache_effective_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, }
    89. 89. TemplatesTrecho do template postfix/main.cfmyorigin = <%= hostname %>mydestination = $myhostname, ..., localhost, <%= fqdn %>Substituição de variáveis por fatos myorigin = servidor.dominio mydestination = $myhostname, ..., localhost, servidor.dominio
    90. 90. Como acompanho mudanças?
    91. 91. Puppet Dashboard
    92. 92. Posso fazer mudanças em tempo real?
    93. 93. Marionette CollectiveOrquestrador de nodesExecução de Tarefas ParalelasInteração com centenas de nodesInventário descentralizadoLeitura de meta-dados do PuppetSimilar a Fabric e Capistrano
    94. 94. Mão na Massa
    95. 95. Acesse o site abaixohttp://gutocarvalho.net/dokuwikiacesse o link puppet serverless
    96. 96. # aptitude install puppet
    97. 97. ralsh
    98. 98. # ralsh user guto ensure=present
    99. 99. # ralsh package htop ensure=present
    100. 100. # ralsh service ssh ensure=running
    101. 101. describe
    102. 102. # puppet describe package
    103. 103. # puppet describe service
    104. 104. Resource Types
    105. 105. Resource type: Filefile { teste: path => “/tmp/teste”, ensure => present, mode => 644, owner => root, group => root, content => “eu sou um arquivo de teste”,}
    106. 106. # puppet apply file.pp
    107. 107. Resource Type: Packagepackage { htop: ensure => present,}
    108. 108. # puppet apply package.pp
    109. 109. Resource Type: Serviceservice { apache2: ensure => running, enable => true,}
    110. 110. # puppet apply service.pp
    111. 111. Configuração em Trio
    112. 112. package { apache2: ensure => present,} resource type service { apache2: parameter ensure => running, title enable => true, value}file { httpd.conf: path => “/etc/apache2/httpd.conf”, source => “/root/httpd.conf”,}
    113. 113. # puppet apply trio.pp
    114. 114. Demonstração do modo cliente servidor
    115. 115. Qual o resultado concreto?
    116. 116. Documentação Instantânea
    117. 117. Restore e backup de mudanças
    118. 118. Processos bem definidos
    119. 119. Ambiente Padronizado
    120. 120. Tarefas Automatizadas
    121. 121. Benefícios ReaisMaior produtividade em menor tempoPoucos sysadmins para muitos nodesDiminuição de falhas humanasMaior controle de todo o seu parqueDiminuição do tempo gasto em mudançasDiminuição do custo de manutençãoVocê chegará cedo em casa e suas madrugas e finais de semana serão seus
    122. 122. Ambiente com 450 nodes modo manual puppetinstalando zabbix 75 horas 10 minutos criando usuário 22 horas 10 minutos Comparando
    123. 123. Tecnologia trabalhando para você
    124. 124. Boas Práticas
    125. 125. Insira o puppet nos templates de seu hypervisor
    126. 126. Desenvolva sua Infra
    127. 127. Versione suas configurações (git)
    128. 128. Reaproveite Código
    129. 129. GitHub & PuppetForge
    130. 130. Pesquise!
    131. 131. Puppet em números 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 com 7795 tópicos de discussãoDados coletados em 2012-08-06 às 10:34 PM
    132. 132. Puppet Labs
    133. 133. 4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet Master
    134. 134. Puppet na redeSite/Blog Google Groupshttp://www.puppetlabs.com Puppet-camp,http://www.puppetlabs.com/blog/ puppet-users,http://puppet-br.org/ puppet-users-br, puppet-devTwitter@puppetlabs IRC irc.freenode.orgGitHub #puppethttp://www.github.com/puppelabs #puppet-br
    135. 135. Perguntas?
    136. 136. Contato Pessoal Contato ProfissionalTwitter @gutocarvalho gutocarvalho@4linux.com.brgutocarvalho@gmail.com http://www.4linux.com.brslideshare.net/gutocarvalhohttp://gutocarvalho.net Obrigado!

    ×