Gestão e Automação de               Servidores com Puppet                             Guto Carvalho < gutocarvalho@gmail.c...
Hora Livre - Ano 4Wednesday, December 12, 12
Wednesday, December 12, 12
whoami                   Consultor/SysAdmin (LPIC-3) na 4Linux                   12 anos de experiência com tecnologias FO...
Plano de Trabalho                   05 minutos de apresentação                   50 minutos de palestra                   ...
Agenda                    Administração de servidores e serviços                    Causas, efeitos e consequências da adm...
Já ouviu falar do                                sysadmin?Wednesday, December 12, 12
O que faz um sysadmin?                   Administra servidores e serviços e a infraestrutura de rede                   Ofe...
Multi-tarefasWednesday, December 12, 12
Multi-disciplinarWednesday, December 12, 12
SysAdminsWednesday, December 12, 12
Visão do        Sysadmin       Em relação a infraestrutura       que ele tem que administraWednesday, December 12, 12
Visão do        Sysadmin       Em relação ao seu dia-a-dia de       trabalho e tratamento de       demandasWednesday, Dece...
Realidade do SysadminWednesday, December 12, 12
Ferramentas e métodos não tão                 modernos e nem tão atraentesWednesday, December 12, 12
Desafios do Sysadmin em 2012Wednesday, December 12, 12
Administração de Servidores e ServiçosWednesday, December 12, 12
Virtualização - TendênciaWednesday, December 12, 12
Virt. e seus Benefícios                   Menor consumo de energia                   Melhor aproveitamento de espaço físic...
Cloud Computing - TendênciaWednesday, December 12, 12
Cloud e seus Benefícios                   Hiper escalável                   Rápida e elástica                   Abstração ...
O crescimento do        seu parque é        inevitável       Poucas máquinas físicas       podem ser tornar dezenas,      ...
Como Administrar 500 VM’s?Wednesday, December 12, 12
Ambiente híbrido e complexo                   Servidores Linux Debian 5.0 e 6.0 em 32 e 64 bits                   Servidor...
Configuração artesanal?Wednesday, December 12, 12
Vale a pena insistir?Wednesday, December 12, 12
Administação Host a Host?Wednesday, December 12, 12
Acesso Secure Shell (ssh) em loop?Wednesday, December 12, 12
Shellscript?Wednesday, December 12, 12
Será que o modelo artesanal escala?Wednesday, December 12, 12
Quantos SysAdmins são necessários                        para administrar 500 servidores?Wednesday, December 12, 12
Qual a velocidade nas                     mudanças em seu ambiente?Wednesday, December 12, 12
Qual a probabilidade de falhas                      decorrentes de mudanças manuais?Wednesday, December 12, 12
Você consegue manter todo o                      seu ambiente padronizado?Wednesday, December 12, 12
Trabalhar fora de expediente para dar                    conta das demandas se tornou regra ao                            ...
Seu custo com equipes técnicas está                  aumentando devido aos trabalho                         fora de expedi...
Você começa a ter a sensação de estar sendo                                engolido por seu ambiente?Wednesday, December 1...
Está difícil colocar suas configurações nos trilhos?Wednesday, December 12, 12
Administração artesanal        não escala, não importa        quantas pessoas estejam        envolvidas       No entanto, ...
Você vai começar a perceber que                   Fica mais difícil encontrar problemas em seu parque                   Nã...
Você vai começar a perceber que                   Você não consegue mais entregar demandas no tempo acordado              ...
Tarefas repetitivasWednesday, December 12, 12
A maioria das demandas de um sysdmin envolve                          execução de tarefas repetitivasWednesday, December 1...
Wednesday, December 12, 12
Tarefas repetitivas                   Criação de usuários                   Elaboração de scripts                   Configu...
Remover Nagios e Instalar                     Zabbix em 500 máquinasWednesday, December 12, 12
Instalação de Zabbix-Agent                   Acessar o servidor por ssh e se tornar root                   Configurar repos...
Instalação de Zabbix-Agent                   10 minutos por máquina                   5000 minutos ou 83.3 horas de trabal...
Criar o usuário do novo sysadmin                             em 500 máquinasWednesday, December 12, 12
Criação de usuário para sysadmin                   Acessar o servidor por ssh                   Se tornar root            ...
Instalação de Zabbix-Agent                   7 minutos por máquina                   3500 minutos ou 58.3 horas de trabalh...
Mas eu não posso usar LDAP para                 autenticar meus usuários, não seria                              melhor?We...
Autenticação LDAP em Debian                   Você precisa manter as configurações do PAM e módulo LDAP                   A...
Como alterar vários arquivos de configuração em                    500 máquinas em um caso de mudança na                   ...
Remover usuários antigos é tão                 complicado quanto criar novosWednesday, December 12, 12
Rastreamento de mudanças e falta de padrõesWednesday, December 12, 12
Se você pedir para dois sysadmins                     instalarem um servidor você terá                         dois ambien...
Falta de padronizaçãoWednesday, December 12, 12
O que devemos padronizar?                   DNS (resolv.conf)        Hosts e Hostnames                   Usuários e Privil...
Falta de processos e procedimentos de execução de                              atividades e demandasWednesday, December 12...
Desvantagens do modelo ArtesanalWednesday, December 12, 12
Desvantagens do modelo artesanal                   Falta de padronização, processos e procedimentos                   Docu...
Desvantagens do modelo artesanal                   Baixo índice de disponibilidade dos serviços oferecidos                ...
Desvantagens do modelo artesanal                   Equipe sempre sobrecarregada                   Alta rotatividade da equ...
Como resolvo       estes problemas?       Como obtenho controle e       padronização em meu       ambiente ?Wednesday, Dec...
Gerência de ConfiguraçõesWednesday, December 12, 12
PadronizaçãoWednesday, December 12, 12
AutomatizaçãoWednesday, December 12, 12
ControleWednesday, December 12, 12
IntegridadeWednesday, December 12, 12
DesempenhoWednesday, December 12, 12
Agilidade nas mudançasWednesday, December 12, 12
Puppet          Ferramenta de nova geração          que implementa gerência de             configurações para seu          ...
Visão Rápida                   Framework Open Source para Gerência de Configurações                   Oferece um conjunto d...
Sobre a ferramenta                   Criado por Luke Kaines (CEO e Fundador Puppetlabs)                   Empresa PuppetLa...
Sobre a ferramenta                   Criado por Luke Kaines (CEO e Fundador Puppetlabs)                   Empresa PuppetLa...
Feito por um SysAdmin para SysAdminsWednesday, December 12, 12
Desenhada para uso DevOpsWednesday, December 12, 12
Visão DevOpsWednesday, December 12, 12
Desenvolvedor que lançar novas                  versões de forma rápida e eficiente                Sysadmin quer manter o p...
Especificações e Características                   Escrito em Ruby                   Extensível usando código Ruby         ...
Quem usa o Puppet?Wednesday, December 12, 12
Arquitetura                             Como funciona o Puppet?Wednesday, December 12, 12
Resource Abstraction LayerWednesday, December 12, 12
Puppet: RAL                   Resource Abstraction Layer = RAL                   Camada de Abstração de Recursos          ...
Instale Pacote XWednesday, December 12, 12
Remova usuário ZWednesday, December 12, 12
(Re)inicie serviço YWednesday, December 12, 12
Tratamento de                  Informações       O grande diferencial do Puppet        é a forma como ele trata as        ...
Tratamento de informações                   No Puppet tudo é modelado e tratado como ‘dado’                   O estado atu...
Os dados são inseridos em                catálogos para serem utilizados                    O catálogo é processado pelo n...
Processamento            do Catálogo       1) Agente Requisita Catálogo       1.1) Agente envia Fatos para Master       2)...
IdempotênciaWednesday, December 12, 12
A idempotência é a propriedade que algumas                 operações têm de poderem ser aplicadas várias               vez...
Puppet visão geral                                                 Puppet           Configurações       Módulos Estáticos  ...
O que acontece quando adicionamos                    um node ao nosso parque?Wednesday, December 12, 12
Adicionando node ao parque                             ZABBIX                     NGINX                                   ...
Adicionando node ao parque                              ZABBIX                     NGINX                                  ...
Adicionando node ao parque                                                       sysadmin-utils                           ...
Como o Puppet pode ajudar?                   Automatizando todo o seu ambiente                   Provendo maior produtivid...
Insira o Puppet na imagem de                            instalação de seus nodes.Wednesday, December 12, 12
Pare de administrar e começe a                     desenvolver sua infraWednesday, December 12, 12
Não tenha medo de realizar                      atualizações, o puppet faz pra você!Wednesday, December 12, 12
Você pode fazer deploy de sua APP                             Você pode controlar a versão de sua APPWednesday, December 1...
Como é o funcionamento do Puppet em Rede?Wednesday, December 12, 12
Puppet Master        8140 TCP                             8139 TCP          Client                  SSL          Server   ...
Arquitetura Cliente/Servidor                   O agente gera um certificado digital                   O master precisa auto...
Fluxo Cliente/Servidor                 Instalação do                     nodeWednesday, December 12, 12
Fluxo Cliente/Servidor                 Instalação do   Inicialização                     node         do puppetWednesday, ...
Fluxo Cliente/Servidor                 Instalação do   Inicialização   Geração de                     node         do pupp...
Fluxo Cliente/Servidor                 Instalação do   Inicialização   Geração de                     node         do pupp...
Fluxo Cliente/Servidor                 Instalação do    Inicialização   Geração de                     node          do pu...
Fluxo Cliente/Servidor                 Instalação do    Inicialização   Geração de                     node          do pu...
Fluxo Cliente/Servidor                 Instalação do           Inicialização           Geração de                     node...
O agente se comunica com o                               master a cada N minutosWednesday, December 12, 12
E quais os recursos disponíveis para                         gerenciar sistemas e serviços?                             Co...
Funcionalidades do Puppet                   Resource Types                   Parâmetros e Meta-parâmetros                 ...
Puppet Resource Types                       Arquivos e Diretórios    Yum Repos                       Usuários             ...
Resource Type: Packages                   Suporte a 23 tipos de                   provedores de pacotes                   ...
Resource Type: Services                   Suporta 11 tipos de sistemas                   INIT para inicializar serviços   ...
Resource Type: File                   Especifique permissões e                   owners                   Declare arquivos,...
ExemplosWednesday, December 12, 12
Instala, Configura e Inicia    debian-way          # aptitude install apache2          # update-rc.d -f apache2 defaults   ...
Instala, Configura e Inicia         package { apache2:           ensure => present,           }                   service {...
Instala, Configura e Inicia         package { apache2:           ensure => present,           }                            ...
Variáveis e Fatos        Fatos (facter)        domain               => hacklab,                                           ...
Condicionais               case $operatingsystem {                 CentOS,RedHat: {                   $package_name = ntp,...
Definições      proxy::squid { ProxyFilial :          http_port                       => 3128,          squid_mode         ...
Templates   Trecho do template postfix/main.cf.erb     myorigin = <%= hostname %>     mydestination = $myhostname, ..., loc...
Use uma base class para                              padronizar seus nodesWednesday, December 12, 12
Base Class                 class linux-server {                   include sysadmin-utils                   include zabbix-...
Como declaro um node e como                   empurro uma configuração?Wednesday, December 12, 12
Declarando um node           node “servidor.dominio” {             include linux-server             include module        ...
E como acompanho mudanças?Wednesday, December 12, 12
Puppet DashboardWednesday, December 12, 12
Wednesday, December 12, 12
Posso fazer mudanças em                                    tempo real?Wednesday, December 12, 12
Marionette Collective                   Orquestrador de nodes                   Execução de Tarefas Paralelas             ...
Qual o resultado concreto?Wednesday, December 12, 12
Documentação InstantâneaWednesday, December 12, 12
Restore e backup de mudançasWednesday, December 12, 12
Processos bem definidosWednesday, December 12, 12
Ambiente PadronizadoWednesday, December 12, 12
Tarefas AutomatizadasWednesday, December 12, 12
Quais os Benefícios Reais?Wednesday, December 12, 12
Benefícios Reais                   Maior produtividade em menor tempo                   Poucos SysAdmins para muitos nodes...
Tecnologia trabalhando para vocêWednesday, December 12, 12
Puppet & Cloud IaaS                      Cloud Tools (FOSS)   Cloud Hosts                       GanetiWednesday, December ...
Boas PráticasWednesday, December 12, 12
Use API e recursos do fornecedor                  seja na nuvem, seja em hypervisor.Wednesday, December 12, 12
Insira o Puppet nos templates de seu                            HypervisorWednesday, December 12, 12
Desenvolva sua InfraWednesday, December 12, 12
Versione suas configuraçõesWednesday, December 12, 12
Reaproveite CódigoWednesday, December 12, 12
GitHub & PuppetForgeWednesday, December 12, 12
Pesquise!Wednesday, December 12, 12
Puppet em números                   727 pessoas online no canal                   #puppet da irc.freenode.net             ...
Puppet LabsWednesday, December 12, 12
Puppet na rede             Site/Blog                         Google Groups             http://www.puppetlabs.com         P...
Perguntas?Wednesday, December 12, 12
twitter @gutocarvalho        e-mail gutocarvalho@gmail.com         slides slideshare.com/gutocarvalho            blog guto...
Upcoming SlideShare
Loading in …5
×

Palestra Puppet Hora Livre

1,757 views

Published on

Palestra ministrada em Campo Grande/MS no dia 12/12/12 na UNAES.

1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
1,757
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
60
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Palestra Puppet Hora Livre

  1. 1. Gestão e Automação de Servidores com Puppet Guto Carvalho < gutocarvalho@gmail.com > Campo Grande/MS - 2012/12/12 - Hora LivreWednesday, December 12, 12
  2. 2. Hora Livre - Ano 4Wednesday, December 12, 12
  3. 3. Wednesday, December 12, 12
  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, CAIXA Há 2 anos trabalhando com gerência de configurações em ambientes virtualizados e clouds privadas em Brasília Palestrante em eventos como FISL, LATINOWARE, CONSEGI, ENECOMP, FLISOL e CLOUDCONFWednesday, December 12, 12
  5. 5. Plano de Trabalho 05 minutos de apresentação 50 minutos de palestra 10 minutos para perguntasWednesday, December 12, 12
  6. 6. Agenda Administração de servidores e serviços Causas, efeitos e consequências da administração artesanal Um novo caminho com a gerência de configurações Puppet como solução de gerência de configurações Apresentando características e recursos do Puppet Benefícios, resultados concretos e Puppet no BrasilWednesday, December 12, 12
  7. 7. Já ouviu falar do sysadmin?Wednesday, December 12, 12
  8. 8. O que faz um sysadmin? Administra servidores e serviços e a infraestrutura de rede Oferece suporte aos desenvolvedores e usuários Sustenta ambiente de desenvolvimento, testes, homol e produção e faz deploy de aplicações Sustenta sistemas estruturantes (DHCP, DNS, PROXY, LDAP, MAIL, IM) Cuida dos ambientes de banco de dados Sustenta, monitora e trabalha para que aplicações e ambientes funcionem Cuida do Backup, lava, passa e faz cafézinho...Wednesday, December 12, 12
  9. 9. Multi-tarefasWednesday, December 12, 12
  10. 10. Multi-disciplinarWednesday, December 12, 12
  11. 11. SysAdminsWednesday, December 12, 12
  12. 12. Visão do Sysadmin Em relação a infraestrutura que ele tem que administraWednesday, December 12, 12
  13. 13. Visão do Sysadmin Em relação ao seu dia-a-dia de trabalho e tratamento de demandasWednesday, December 12, 12
  14. 14. Realidade do SysadminWednesday, December 12, 12
  15. 15. Ferramentas e métodos não tão modernos e nem tão atraentesWednesday, December 12, 12
  16. 16. Desafios do Sysadmin em 2012Wednesday, December 12, 12
  17. 17. Administração de Servidores e ServiçosWednesday, December 12, 12
  18. 18. Virtualização - TendênciaWednesday, December 12, 12
  19. 19. Virt. e seus Benefícios Menor consumo de energia Melhor aproveitamento de espaço físico Melhor aproveitamento de hardware (sem hw ocioso) Maior segurança com isolamento de ambientes Pode-se trabalhar disponibilidade e balanceamento Facilidade de provisionamento e gerenciamentoWednesday, December 12, 12
  20. 20. Cloud Computing - TendênciaWednesday, December 12, 12
  21. 21. Cloud e seus Benefícios Hiper escalável Rápida e elástica Abstração de hardware Infraestrutura dinâmica Alta disponibilidade Investimento atraente para projetos emergentesWednesday, December 12, 12
  22. 22. O crescimento do seu parque é inevitável Poucas máquinas físicas podem ser tornar dezenas, centenas ou milhares de nodes em poucos meses.Wednesday, December 12, 12
  23. 23. Como Administrar 500 VM’s?Wednesday, December 12, 12
  24. 24. Ambiente híbrido e complexo Servidores Linux Debian 5.0 e 6.0 em 32 e 64 bits Servidores Linux Centos 5 e Centos 6 em 32 e 64 bits Servidores RHEL 4, 5 e 6 em 64 bits FreeBSD, OpenBSD e OSX Servidores Windows 2003 e 2008Wednesday, December 12, 12
  25. 25. Configuração artesanal?Wednesday, December 12, 12
  26. 26. Vale a pena insistir?Wednesday, December 12, 12
  27. 27. Administação Host a Host?Wednesday, December 12, 12
  28. 28. Acesso Secure Shell (ssh) em loop?Wednesday, December 12, 12
  29. 29. Shellscript?Wednesday, December 12, 12
  30. 30. Será que o modelo artesanal escala?Wednesday, December 12, 12
  31. 31. Quantos SysAdmins são necessários para administrar 500 servidores?Wednesday, December 12, 12
  32. 32. Qual a velocidade nas mudanças em seu ambiente?Wednesday, December 12, 12
  33. 33. Qual a probabilidade de falhas decorrentes de mudanças manuais?Wednesday, December 12, 12
  34. 34. Você consegue manter todo o seu ambiente padronizado?Wednesday, December 12, 12
  35. 35. Trabalhar fora de expediente para dar conta das demandas se tornou regra ao invés de exceção?Wednesday, December 12, 12
  36. 36. Seu custo com equipes técnicas está aumentando devido aos trabalho fora de expediente?Wednesday, December 12, 12
  37. 37. Você começa a ter a sensação de estar sendo engolido por seu ambiente?Wednesday, December 12, 12
  38. 38. Está difícil colocar suas configurações nos trilhos?Wednesday, December 12, 12
  39. 39. Administração artesanal não escala, não importa quantas pessoas estejam envolvidas No entanto, é possível enxergar as causas, efeitos e consequências geradas por um modelo equivocado de administraçãoWednesday, December 12, 12
  40. 40. Você vai começar a perceber que Fica mais difícil encontrar problemas em seu parque Não é mais tão simples manter as coisas funcionando É quase impossível manter o parque padronizado Sua produtividade diminui a medida que o ambiente cresce Você não consegue mais documentar e planejar mudançasWednesday, December 12, 12
  41. 41. Você vai começar a perceber que Você não consegue mais entregar demandas no tempo acordado Sua equipe está sempre exausta e desmotivada Sua equipe não tem mais direito a finais de semana, feriados Você não tem tempo para pensar em segurança e performance Uma simples atualização de software pode levar semanasWednesday, December 12, 12
  42. 42. Tarefas repetitivasWednesday, December 12, 12
  43. 43. A maioria das demandas de um sysdmin envolve execução de tarefas repetitivasWednesday, December 12, 12
  44. 44. Wednesday, December 12, 12
  45. 45. 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 pacotesWednesday, December 12, 12
  46. 46. Remover Nagios e Instalar Zabbix em 500 máquinasWednesday, December 12, 12
  47. 47. Instalação de Zabbix-Agent Acessar o servidor por ssh e se tornar root Configurar repositório YUM, APT ou Ports Instalar pacote zabbix-agent Remover pacote nagios Ajustar arquivo de configuração Zabbix Reiniciar Zabbix AgentWednesday, December 12, 12
  48. 48. Instalação de Zabbix-Agent 10 minutos por máquina 5000 minutos ou 83.3 horas de trabalho repetitivo 10 dias para instalar o zabbix-agent no parque 1 analista alocado exclusivamente para isto 8HPD Considere re-trabalho devido ao modelo manualWednesday, December 12, 12
  49. 49. Criar o usuário do novo sysadmin em 500 máquinasWednesday, December 12, 12
  50. 50. Criação de usuário para sysadmin Acessar o servidor por ssh Se tornar root Criar usuário Setar senha temporária Configurar privilégios no sudoWednesday, December 12, 12
  51. 51. Instalação de Zabbix-Agent 7 minutos por máquina 3500 minutos ou 58.3 horas de trabalho repetitivo 7 dias para criar o usuário no parque 1 analista alocado exclusivamente para isto 8HPD Considere re-trabalho devido ao modelo manual Considere que o usuário vai ter que trocar a senha nas 500 máquinasWednesday, December 12, 12
  52. 52. Mas eu não posso usar LDAP para autenticar meus usuários, não seria melhor?Wednesday, December 12, 12
  53. 53. Autenticação LDAP em Debian Você precisa manter as configurações do PAM e módulo LDAP Arquivos a serem mantidos ldap.conf, nsswitch.conf, libnss-ldap.conf Pacotes a serem mantidos ldap-utils, libpam-ldap, libnss-ldap e nscd Você ainda precisa ter um usuário coringa em caso de problema no LDAPWednesday, December 12, 12
  54. 54. Como alterar vários arquivos de configuração em 500 máquinas em um caso de mudança na estrutura da árvore LDAP?Wednesday, December 12, 12
  55. 55. Remover usuários antigos é tão complicado quanto criar novosWednesday, December 12, 12
  56. 56. Rastreamento de mudanças e falta de padrõesWednesday, December 12, 12
  57. 57. Se você pedir para dois sysadmins instalarem um servidor você terá dois ambientes diferentesWednesday, December 12, 12
  58. 58. Falta de padronizaçãoWednesday, December 12, 12
  59. 59. O que devemos padronizar? DNS (resolv.conf) Hosts e Hostnames Usuários e Privilégios Repositórios NTP (data/hora) Logs e Autenticação Pacotes Sysadmins Firewall Rotas Hardening, TuningWednesday, December 12, 12
  60. 60. Falta de processos e procedimentos de execução de atividades e demandasWednesday, December 12, 12
  61. 61. Desvantagens do modelo ArtesanalWednesday, December 12, 12
  62. 62. Desvantagens do modelo artesanal Falta de padronização, processos e procedimentos Documentação inexpressiva ou inexistente Falta de planejamento para execução das demandas Desconhecimento dos riscos envolvidos Alto índice de falhas humanasWednesday, December 12, 12
  63. 63. Desvantagens do modelo artesanal Baixo índice de disponibilidade dos serviços oferecidos Demora na aplicação de mudanças Demora na correção de problemas Equipe desmotivada Atividades repetitivas e desgastantesWednesday, December 12, 12
  64. 64. Desvantagens do modelo artesanal Equipe sempre sobrecarregada Alta rotatividade da equipe Alto custo com horas extras Profissionais insatisfeiros Baixa credibilidade perante clientes e gestoresWednesday, December 12, 12
  65. 65. Como resolvo estes problemas? Como obtenho controle e padronização em meu ambiente ?Wednesday, December 12, 12
  66. 66. Gerência de ConfiguraçõesWednesday, December 12, 12
  67. 67. PadronizaçãoWednesday, December 12, 12
  68. 68. AutomatizaçãoWednesday, December 12, 12
  69. 69. ControleWednesday, December 12, 12
  70. 70. IntegridadeWednesday, December 12, 12
  71. 71. DesempenhoWednesday, December 12, 12
  72. 72. Agilidade nas mudançasWednesday, December 12, 12
  73. 73. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente.Wednesday, December 12, 12
  74. 74. Visão Rápida Framework Open Source para Gerência de Configurações Oferece um conjunto de ferramentas para manipular estados Nos permite trabalhar a Infraestrutura como código Oferece uma linguagem declarativa para descrever configurações de sistemas e serviços Não é programaçãoWednesday, December 12, 12
  75. 75. Sobre a ferramenta Criado por Luke Kaines (CEO e Fundador Puppetlabs) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Empresa oferece Suporte Corporativo e Versão Enterpris Empresa recebeu investimentos da VMWARE, GOOGLE e CISCOWednesday, December 12, 12
  76. 76. Sobre a ferramenta Criado por Luke Kaines (CEO e Fundador Puppetlabs) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Empresa oferece Suporte Corporativo e Versão Enterpris Empresa recebeu investimentos da VMWARE, GOOGLE e CISCOWednesday, December 12, 12
  77. 77. Feito por um SysAdmin para SysAdminsWednesday, December 12, 12
  78. 78. Desenhada para uso DevOpsWednesday, December 12, 12
  79. 79. Visão DevOpsWednesday, December 12, 12
  80. 80. Desenvolvedor que lançar novas versões de forma rápida e eficiente Sysadmin quer manter o parque integro e funcionando minimizando riscos de incidentesWednesday, December 12, 12
  81. 81. Especificações e Características Escrito em Ruby Extensível usando código Ruby Funciona em modo Autônomo (serverless) Funciona em modo Cliente/Servidor usando API REST Provê comunicação segura usando SSL Suporte a 19 sistemas operacionais (Linux, Unix, BSD...)Wednesday, December 12, 12
  82. 82. Quem usa o Puppet?Wednesday, December 12, 12
  83. 83. Arquitetura Como funciona o Puppet?Wednesday, December 12, 12
  84. 84. Resource Abstraction LayerWednesday, December 12, 12
  85. 85. Puppet: RAL Resource Abstraction Layer = RAL 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 fazerWednesday, December 12, 12
  86. 86. Instale Pacote XWednesday, December 12, 12
  87. 87. Remova usuário ZWednesday, December 12, 12
  88. 88. (Re)inicie serviço YWednesday, December 12, 12
  89. 89. Tratamento de Informações O grande diferencial do Puppet é a forma como ele trata as informações de seus nodesWednesday, December 12, 12
  90. 90. Tratamento de informações No Puppet tudo é modelado e tratado como ‘dado’ O estado atual de um node (servidor) é um dado Um pacote instalado em um node é um dado Um usuário em um servidor é um dadoWednesday, December 12, 12
  91. 91. Os dados são inseridos em catálogos para serem utilizados O catálogo é processado pelo node e as modificações são aplicadas de acordo com o que foi declarado.Wednesday, December 12, 12
  92. 92. 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álogoWednesday, December 12, 12
  93. 93. IdempotênciaWednesday, December 12, 12
  94. 94. 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. (fonte: wikipedia)Wednesday, December 12, 12
  95. 95. Puppet visão geral 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 AgentsWednesday, December 12, 12
  96. 96. O que acontece quando adicionamos um node ao nosso parque?Wednesday, December 12, 12
  97. 97. Adicionando node ao parque ZABBIX NGINX JBOSS POSTGRESQL MEMCACHEDWednesday, December 12, 12
  98. 98. Adicionando node ao parque ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudançasWednesday, December 12, 12
  99. 99. Adicionando node ao parque sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-reposWednesday, December 12, 12
  100. 100. Como o Puppet pode ajudar? Automatizando todo o seu ambiente Provendo maior produtividade com menor esforço Padronizando seus nodes logo após a criação e instalação Modificando configurações de forma controlada Mantendo o estado declarado para cada node/instânciaWednesday, December 12, 12
  101. 101. Insira o Puppet na imagem de instalação de seus nodes.Wednesday, December 12, 12
  102. 102. Pare de administrar e começe a desenvolver sua infraWednesday, December 12, 12
  103. 103. Não tenha medo de realizar atualizações, o puppet faz pra você!Wednesday, December 12, 12
  104. 104. Você pode fazer deploy de sua APP Você pode controlar a versão de sua APPWednesday, December 12, 12
  105. 105. Como é o funcionamento do Puppet em Rede?Wednesday, December 12, 12
  106. 106. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em RedeWednesday, December 12, 12
  107. 107. Arquitetura 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 é seguraWednesday, December 12, 12
  108. 108. Fluxo Cliente/Servidor Instalação do nodeWednesday, December 12, 12
  109. 109. Fluxo Cliente/Servidor Instalação do Inicialização node do puppetWednesday, December 12, 12
  110. 110. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet CertificadoWednesday, December 12, 12
  111. 111. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de CertificadoWednesday, December 12, 12
  112. 112. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado CertificadoWednesday, December 12, 12
  113. 113. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado CertificadoWednesday, December 12, 12
  114. 114. 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çãoWednesday, December 12, 12
  115. 115. O agente se comunica com o master a cada N minutosWednesday, December 12, 12
  116. 116. E quais os recursos disponíveis para gerenciar sistemas e serviços? Como manipulo estados do meu ambiente?Wednesday, December 12, 12
  117. 117. Funcionalidades do Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e CondicionaisWednesday, December 12, 12
  118. 118. 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.Wednesday, December 12, 12
  119. 119. 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ãoWednesday, December 12, 12
  120. 120. 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 arquivoWednesday, December 12, 12
  121. 121. Resource Type: File Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksumsWednesday, December 12, 12
  122. 122. ExemplosWednesday, December 12, 12
  123. 123. Instala, Configura e Inicia debian-way # aptitude install apache2 # update-rc.d -f apache2 defaults # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 startWednesday, December 12, 12
  124. 124. 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”, }Wednesday, December 12, 12
  125. 125. 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”, }Wednesday, December 12, 12
  126. 126. 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,Wednesday, December 12, 12
  127. 127. 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, } } ....Wednesday, December 12, 12
  128. 128. 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, }Wednesday, December 12, 12
  129. 129. Templates Trecho do template postfix/main.cf.erb myorigin = <%= hostname %> mydestination = $myhostname, ..., localhost, <%= fqdn %> Substituição de variáveis por fatos myorigin = servidor.dominio mydestination = $myhostname, ..., localhost, servidor.dominioWednesday, December 12, 12
  130. 130. Use uma base class para padronizar seus nodesWednesday, December 12, 12
  131. 131. 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 }Wednesday, December 12, 12
  132. 132. Como declaro um node e como empurro uma configuração?Wednesday, December 12, 12
  133. 133. Declarando um node node “servidor.dominio” { include linux-server include module } node “balancer.dominio” { include linux-server include apache include php5 include mysql }Wednesday, December 12, 12
  134. 134. E como acompanho mudanças?Wednesday, December 12, 12
  135. 135. Puppet DashboardWednesday, December 12, 12
  136. 136. Wednesday, December 12, 12
  137. 137. Posso fazer mudanças em tempo real?Wednesday, December 12, 12
  138. 138. 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 CapistranoWednesday, December 12, 12
  139. 139. Qual o resultado concreto?Wednesday, December 12, 12
  140. 140. Documentação InstantâneaWednesday, December 12, 12
  141. 141. Restore e backup de mudançasWednesday, December 12, 12
  142. 142. Processos bem definidosWednesday, December 12, 12
  143. 143. Ambiente PadronizadoWednesday, December 12, 12
  144. 144. Tarefas AutomatizadasWednesday, December 12, 12
  145. 145. Quais os Benefícios Reais?Wednesday, December 12, 12
  146. 146. 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çãoWednesday, December 12, 12
  147. 147. Tecnologia trabalhando para vocêWednesday, December 12, 12
  148. 148. Puppet & Cloud IaaS Cloud Tools (FOSS) Cloud Hosts GanetiWednesday, December 12, 12
  149. 149. Boas PráticasWednesday, December 12, 12
  150. 150. Use API e recursos do fornecedor seja na nuvem, seja em hypervisor.Wednesday, December 12, 12
  151. 151. Insira o Puppet nos templates de seu HypervisorWednesday, December 12, 12
  152. 152. Desenvolva sua InfraWednesday, December 12, 12
  153. 153. Versione suas configuraçõesWednesday, December 12, 12
  154. 154. Reaproveite CódigoWednesday, December 12, 12
  155. 155. GitHub & PuppetForgeWednesday, December 12, 12
  156. 156. Pesquise!Wednesday, December 12, 12
  157. 157. 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 PMWednesday, December 12, 12
  158. 158. Puppet LabsWednesday, December 12, 12
  159. 159. 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-brWednesday, December 12, 12
  160. 160. Perguntas?Wednesday, December 12, 12
  161. 161. twitter @gutocarvalho e-mail gutocarvalho@gmail.com slides slideshare.com/gutocarvalho blog gutocarvalho.net code github.com/gutocarvalho Obrigado!Wednesday, December 12, 12

×