O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Oficina Puppet - Aprenda a Gerenciar Configurações

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 137 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (19)

Anúncio

Semelhante a Oficina Puppet - Aprenda a Gerenciar Configurações (20)

Anúncio

Oficina Puppet - Aprenda a Gerenciar Configurações

  1. 1. Brasília/DF 2012-08-18 Oficina Puppet Guto Carvalho
  2. 2. Gerência de Configurações Puppet em ambiente Debian José Augusto (Guto) Carvalho gutocarvalho@gmail.com
  3. 3. whoami
  4. 4. whoami Consultor/SysAdmin (LPIC-3) na 4Linux 12 anos de experiência com tecnologias FOSS Blogueiro FOSS 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 configurações em ambientes virtualizados e clouds privadas em Brasília
  5. 5. whoami Consultor/SysAdmin (LPIC-3) na 4Linux 12 anos de experiência com tecnologias FOSS Blogueiro FOSS 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 configurações em ambientes virtualizados e clouds privadas em Brasília
  6. 6. Plano de Trabalho 40 minutos de apresentação 40 minutos de Mão na Massa 10 minutos para perguntas
  7. 7. Agenda Gerência de configurações Infraestrutura como código Puppet como solução de gerência de configurações Puppet arquitetura, funcionamento e recursos Mão na massa Perguntas
  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 Manual Tarefas repetitivas Não existem padrões Não existem procedimentos
  13. 13. Cada sysadmin faz do seu jeito
  14. 14. Tarefas Repetitivas Criação de usuários Elaboração de scripts Configuração de serviços Configurações de monitoramento Criação de imagens de ambientes Configuração do sistema operacional Instalação, atualização e remoção de pacotes
  15. 15. A medida que o parque aumenta administrá-lo fica mais complicado
  16. 16. Você vai percerber que... Fica mais difícil identificar 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 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áquina 1350 minutos ou 22,5 horas 450 trocas de senhas
  20. 20. Procedimento para criar usuário Acessar o servidor por ssh Se tornar root Criar usuário Especificar senha temporária Especificar permissões no sudoers
  21. 21. Instalação de agente de monitoramento 450 máquinas 10 minutos por máquina 4500 minutos ou 75 horas 9 dias trabalhando 8 h.p.d
  22. 22. Procedimento para instalar zabbix Acessar servidor via ssh Adicionar repositório APT Atualizar índices Instalar pacote Ajustar arquivo zabbix_agentd.conf Reiniciar agente zabbix Remover 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. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente.
  34. 34. Puppet em poucas palavras
  35. 35. Puppet em poucas palavras Nos permite parar de administrar e começar a desenvolver nossa infra Nos permite reaproveitar código para construir configurações Oferece linguagem declarativa para criar configurações Sintaxe simples, prática e natural para sysadmins Oferece suporte a Linux, BDBs, OSX e Windows
  36. 36. Sobre a ferramenta
  37. 37. Sobre a ferramenta Ferramenta Open Source - Apache License Ferramenta mantida pela empresa Puppetlabs Empresa oferece suporte e versão enterprise Criado por Luke Kaines (CEO e Fundador Puppetlabs) Cases de uso com gandes players (HP, CISCO, VMWARE...) Recebeu pesados investimentos
  38. 38. Sobre a ferramenta Ferramenta Open Source - Apache License Ferramenta mantida pela empresa Puppetlabs Empresa oferece suporte e versão enterprise Criado 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 Specs Escrito em Ruby Extensível usando código Ruby Funciona em modo autônomo (serverless) Funciona em modo cliente.servidor Usa RESTful API Oferece comunicação segura com uso de certificados digitais
  44. 44. Cases Puppet Enterprise
  45. 45. Arquitetura Como funciona o Puppet?
  46. 46. Resource Abstraction Layer (RAL)
  47. 47. Resource Abstraction Layer
  48. 48. Resource Abstraction Layer Camada de Abstração de Recursos Fale o que você quer que seja feito Não se preocupe em como será feito O 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ções O 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ções No Puppet tudo é modelado e tratado como ‘dados’ O estado atual de um node (servidor) é um dado Um pacote instalado em um node é um dado Um usuário em um servidor é um dado
  55. 55. Os dados são inseridos em catálogos pelo master O catálogo é processado pelo node e as modificações são aplicadas de acordo com o que foi declarado.
  56. 56. Processamento do Catálogo 1) Agente Requisita Catálogo 1.1) Agente envia Fatos para Master 2) Master Processa Fatos e Compara 2.1) Master Produz e envia Catálogo 3) Node Recebe, Compara e Aplica 4) Node informa estado atual ao Master 5) Sistema reflete catálogo
  57. 57. Processamento do Catálogo 1) Agente Requisita Catálogo 1.1) Agente envia Fatos para Master 2) Master Processa Fatos e Compara 2.1) Master Produz e envia Catálogo 3) Node Recebe, Compara e Aplica 4) Node informa estado atual ao Master 5) Sistema reflete catálogo
  58. 58. Idempotência
  59. 59. Visão ampla do Puppet Puppet Configurações Mó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 realizar atualizaçõ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/Servidor O agente gera um certificado digital O master precisa autorizar o certificado Sem autorização o agente não pode se comunicar Toda a comunicação entre agente e master é segura
  65. 65. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em Rede
  66. 66. Fluxo Cliente/Servidor Instalação do node
  67. 67. Fluxo Cliente/Servidor Instalação do Inicialização node do puppet
  68. 68. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado
  69. 69. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de Certificado
  70. 70. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado Certificado
  71. 71. Fluxo Cliente/Servidor Instalaçã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 Certificado Modalidades 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 Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e Condicionais
  76. 76. Puppet Resource Types Arquivos e Diretórios Yum Repos Usuários Augeas Alias Hosts Pacotes SSH Serviços Cron O puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo.
  77. 77. Resource Type: Packages Suporte a 23 tipos de provedores de pacotes Faz a abstração do OS Declare se o pacote deve estar presente ou ausente Declare se o pacote deve sempre estar em sua última versão
  78. 78. Resource Type: Services Suporta 11 tipos de sistemas INIT para inicializar serviços Declare se um serviço deve estar sempre rodando Declare se um serviço deve ser carregado no boot Declare se um serviço depende de um pacote ou arquivo
  79. 79. Resource Type: File Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksums
  80. 80. Exemplos
  81. 81. Instala, Configura e Inicia debian-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 Inicia package { '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 Inicia package { '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 Class class 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 node node “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 Fatos Fatos (facter) domain => hacklab, Variáveis fqdn => 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. Condicionais case $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ções 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_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. Templates Trecho do template postfix/main.cf myorigin = <%= 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 Collective Orquestrador de nodes Execução de Tarefas Paralelas Interação com centenas de nodes Inventário descentralizado Leitura de meta-dados do Puppet Similar a Fabric e Capistrano
  94. 94. Mão na Massa
  95. 95. Acesse o site abaixo http://gutocarvalho.net/dokuwiki acesse 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: File file { '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: Package package { 'htop': ensure => present, }
  108. 108. # puppet apply package.pp
  109. 109. Resource Type: Service service { '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 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 e suas madrugas e finais de semana serão seus
  122. 122. Ambiente com 450 nodes modo manual puppet instalando 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ão Dados 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 rede Site/Blog Google Groups http://www.puppetlabs.com Puppet-camp, http://www.puppetlabs.com/blog/ puppet-users, http://puppet-br.org/ puppet-users-br, puppet-dev Twitter @puppetlabs IRC irc.freenode.org GitHub #puppet http://www.github.com/puppelabs #puppet-br
  135. 135. Perguntas?
  136. 136. Contato Pessoal Contato Profissional Twitter @gutocarvalho gutocarvalho@4linux.com.br gutocarvalho@gmail.com http://www.4linux.com.br slideshare.net/gutocarvalho http://gutocarvalho.net Obrigado!

Notas do Editor

  • \n
  • Vim aqui compartilhar com voc&amp;#xEA;s algumas boas experi&amp;#xEA;ncia que tive nos &amp;#xFA;ltimos\n2 anos com Ger&amp;#xEA;ncia de Configura&amp;#xE7;&amp;#xF5;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&amp;#xE1;tica e ci&amp;#xEA;ncia da computa&amp;#xE7;&amp;#xE3;o, a idempot&amp;#xEA;ncia &amp;#xE9; a propriedade que algumas opera&amp;#xE7;&amp;#xF5;es t&amp;#xEA;m de poderem ser aplicadas v&amp;#xE1;rias vezes sem que o valor do resultado se altere ap&amp;#xF3;s a aplica&amp;#xE7;&amp;#xE3;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&amp;#xE1;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

×