Gerência de Configurações c/ Puppet                               Patrocínio: 4Linux                             José Augus...
Prestação de serviços em:                  Baseados em:      - Consultoria - Desenvolvimento          - Softwares Livres  ...
whoami                     Consultor/SysAdmin (LPIC-3) na 4Linux                     12 anos de experiência com tecnologia...
Oficina PuppetThursday, October 25, 12
Plano de Trabalho                     50 min de apresentação GC & Puppet                     60 min hands on puppet server...
Agenda                      Apresentando Cenários                      Gerência de Configurações e Infraestrutura como Códi...
Virtualização - TendênciaThursday, October 25, 12
Virt. e seus Benefícios                     Menor consumo de energia                     Melhor aproveitamento de espaço f...
Cloud Computing - TendênciaThursday, October 25, 12
Cloud e seus Benefícios                     Hiper escalável                     Rápida e elástica                     Abst...
Provisionamento            Podemos criar 500 VM’s em                 poucos minutosThursday, October 25, 12
Como Administrar 500 VM’s?Thursday, October 25, 12
Configuração Manual?Thursday, October 25, 12
Acesso Secure Shell (ssh)?Thursday, October 25, 12
Host a Host?Thursday, October 25, 12
Quantos SysAdmins são necessários                            para administrar 500 servidores?Thursday, October 25, 12
Qual a velocidade nas                           mudanças em seu ambiente?Thursday, October 25, 12
Qual a probabilidade de falhas                           decorrentes de mudanças manuais?Thursday, October 25, 12
Você consegue manter todo o                            seu ambiente padronizado?Thursday, October 25, 12
Seu custo com manutenção e                   equipes técnicas está aumentando?Thursday, October 25, 12
Está difícil colocar suas configurações nos trilhos?Thursday, October 25, 12
Como resolver isto?                                 Como obtenho controle e                             padronização em me...
Gerência de ConfiguraçõesThursday, October 25, 12
PadronizaçãoThursday, October 25, 12
AutomatizaçãoThursday, October 25, 12
ControleThursday, October 25, 12
IntegridadeThursday, October 25, 12
DesempenhoThursday, October 25, 12
Agilidade nas mudançasThursday, October 25, 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 cojunt...
Sobre a ferramenta                     Suporte a Linux, BSDs, Solaris e Windows (19 tipos de OS)                     Criad...
Feito por um SysAdmin para SysAdminsThursday, October 25, 12
Eficiente para uso DevOpsThursday, October 25, 12
Especificações                     Escrito em Ruby                     Extensível usando código Ruby                     Fu...
Quem usa o Puppet?Thursday, October 25, 12
Arquitetura                           Como funciona o Puppet?Thursday, October 25, 12
Resource Abstraction LayerThursday, October 25, 12
Puppet: RAL                     Resource Abstraction Layer = RAL                     Camada de Abstração de Recursos      ...
Instale Pacote XThursday, October 25, 12
Remova usuário ZThursday, October 25, 12
(Re)inicie serviço YThursday, October 25, 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 ‘dados’                     O estad...
Os dados são inseridos em                  catálogos para serem utilizados                     O catálogo é processado pel...
Processamento              do Catálogo        1) Agente Requisita Catálogo        1.1) Agente envia Fatos para Master     ...
IdempotênciaThursday, October 25, 12
Ambiente Puppet                                                   Puppet           Configurações        Módulos Estáticos  ...
Administração Instâncias                     Administrar Cloud IaaS ou uma infra Virtualizada não é difícil               ...
Quando seu ambiente começar a crescer demais você                     vai perceber administrá-lo não é tão simples.Thursda...
Adicionando Nodes                                 ZABBIX                       NGINX                                      ...
Adicionando Nodes                                 ZABBIX                       NGINX                                      ...
Adicionando Nodes                                                          sysadmin-utils                                 ...
Como o Puppet pode ajudar?                     Automatizando todo o seu ambiente                     Provendo maior produt...
Insira o Puppet na imagem de                              instalação de seus nodes.Thursday, October 25, 12
Pare de administrar e começe a                       desenvolver sua infraThursday, October 25, 12
Não tenha medo de realizar                           atualizações, o puppet faz pra você!Thursday, October 25, 12
Você pode fazer deploy de sua APP                           Você pode controlar a versão de sua APPThursday, October 25, 12
Como funciona o modo cliente/servidor?Thursday, October 25, 12
Puppet Master         8140 TCP                           8139 TCP           Client                SSL          Server     ...
Arquitetura Cliente/Servidor                     O agente gera um certificado digital                     O master precisa ...
Fluxo Cliente/Servidor                   Instalação do                       nodeThursday, October 25, 12
Fluxo Cliente/Servidor                   Instalação do   Inicialização                       node         do puppetThursda...
Fluxo Cliente/Servidor                   Instalação do   Inicialização   Geração de                       node         do ...
Fluxo Cliente/Servidor                   Instalação do   Inicialização   Geração de                       node         do ...
Fluxo Cliente/Servidor                   Instalação do    Inicialização   Geração de                       node          d...
Fluxo Cliente/Servidor                   Instalação do    Inicialização   Geração de                       node          d...
Fluxo Cliente/Servidor                   Instalação do          Inicialização           Geração de                       n...
O agente se comunica com o                             master a cada N minutosThursday, October 25, 12
E quais os recursos disponíveis para                              gerenciar sistemas e serviços?                          ...
Recursos 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ço...
Resource Type: File                     Especifique permissões e                     owners                     Declare arq...
ExemplosThursday, October 25, 12
Instala, Configura e Inicia     debian-way           # aptitude install apache2           # update-rc.d -f apache2 defaults...
Instala, Configura e Inicia          package { apache2:            ensure => present,            }                     serv...
Instala, Configura e Inicia          package { apache2:            ensure => present,            }                         ...
Base Class                  class linux-server {                    include sysadmin-utils                    include zabb...
Declarando um node            node “servidor.dominio” {              include linux-server              include module     ...
Variáveis e Fatos         Fatos (facter)         domain            => hacklab,                                            ...
Condicionais                 case $operatingsystem {                   CentOS,RedHat: {                     $package_name ...
Definições       proxy::squid { ProxyFilial :           http_port                       => 3128,           squid_mode      ...
Templates      Trecho do template postfix/main.cf     myorigin = <%= hostname %>     mydestination = $myhostname, ..., loca...
E como acompanho mudanças?Thursday, October 25, 12
Puppet DashboardThursday, October 25, 12
Posso fazer mudanças em                                  tempo real?Thursday, October 25, 12
Marionette Collective                     Orquestrador de nodes                     Execução de Tarefas Paralelas         ...
Hands On: Puppet ServerlessThursday, October 25, 12
http://gutocarvalho.net/dokuwikiThursday, October 25, 12
Cenário                     1 VM - Debian 64bits - para PuppetServerless (local)Thursday, October 25, 12
instalando puppetThursday, October 25, 12
RALThursday, October 25, 12
RAL                     Resource Types                     Parameters                     Meta-parameters                 ...
RAL: Modifica & Sincroniza                     Verifica o estado atual de um recurso                     Compara dados colet...
RecursosThursday, October 25, 12
Exemplo de Recurso                       tipo	  {	  título:                       	  	  param1	  	  	  	  	  =>	  valor,  ...
Exemplo de Recurso: User     user	  {	  gutocarvalho:     	  	  ensure	  	  	  	  	  	  	  	  	  	  	  =>	  present,     	...
Recurso, Título, AtributosThursday, October 25, 12
puppet resource             vamos manipular estados            usando o comando resourceThursday, October 25, 12
puppet resource user                                    {Thursday, October 25, 12
puppet resource packageThursday, October 25, 12
puppet resource serviceThursday, October 25, 12
resource types        vamos aprender a utilizar tipos        distintos de recursos, inserí-los           em manifests e ap...
manifestThursday, October 25, 12
puppet apply manifest.ppThursday, October 25, 12
resource type: fileThursday, October 25, 12
resource type: packageThursday, October 25, 12
resource type: serviceThursday, October 25, 12
resource type: execThursday, October 25, 12
resource type: cronThursday, October 25, 12
resource type: hostThursday, October 25, 12
meta-parâmetros           vamos aprender a utilizar os meta-          parâmetros, eles podem ser utilizados           com ...
meta-parameter: requireThursday, October 25, 12
meta-parameter: notifyThursday, October 25, 12
meta-parameter: aliasThursday, October 25, 12
meta-parameter: subscribeThursday, October 25, 12
configuração em trioThursday, October 25, 12
Exemplo Conceitual Trio                 package	  {	  pacote:                 	  	  	  	  	  	  	  	  ensure	  =>	  presen...
Exemplo Real Trio: Postfix    package	  {	  postfix:    	  	  	  	  	  	  	  	  ensure	  =>	  present,    }    	      servi...
Variáveis, Fatos                 e Condicionais           Vamos aprender a trabalhar             com variáveis, fatos e   ...
variáveisThursday, October 25, 12
fatosThursday, October 25, 12
condiçõesThursday, October 25, 12
casosThursday, October 25, 12
seletoresThursday, October 25, 12
Classes          Vamos aprender a agrupar        configurações dentro de classesThursday, October 25, 12
Templates            Vamos aprender a trabalhar            com arquivos dinâmicos que              utilizam variáveis e fa...
noopThursday, October 25, 12
filebucket localThursday, October 25, 12
cenários para uso de                             puppet serverlessThursday, October 25, 12
Hands On: Puppet MasterThursday, October 25, 12
http://gutocarvalho.net/dokuwikiThursday, October 25, 12
Cenário                     1 VM - Debian 64bits - para PuppetMaster (servidor)                     1 VM - Debian 64bits -...
PuppetMaster: Teoria                     API REST                     TCP/IP                     Certificados Digitais     ...
Instalando puppetmasterThursday, October 25, 12
DNS, Host, HostnameThursday, October 25, 12
Estrutura do MasterThursday, October 25, 12
Instalando PuppetAgentThursday, October 25, 12
DNS, Host, HostnameThursday, October 25, 12
Estrutura do AgentThursday, October 25, 12
Primeiro Contato                            Agent/MasterThursday, October 25, 12
Manipulando Certificados                        no PuppetMasterThursday, October 25, 12
Nodes           Vamos entender o que é um          node e como declaramos uma             configuração para ele.Thursday, O...
Empurrando uma                             ConfiguraçãoThursday, October 25, 12
Classes            Vamos aprender a trabalhar              com classes em modo                 master/agent.Thursday, Octo...
Definições            Vamos aprender a trabalhar            com classes parametrizadas              em modo master/agent.Th...
Módulos            Vamos aprender a trabalhar              com módulos no puppet.Thursday, October 25, 12
Organizando o MasterThursday, October 25, 12
Escalando          Vamos aprender a substituir o            Webrick pelo Apache com            ModPassenger para que o    ...
instalando puppetmaster-passengerThursday, October 25, 12
Hands On: Puppet DashboardThursday, October 25, 12
instalando o dashboardThursday, October 25, 12
integrando master ao                                 dashboardThursday, October 25, 12
habilitando reports nos                           agentsThursday, October 25, 12
Qual o resultado concreto?Thursday, October 25, 12
Documentação InstantâneaThursday, October 25, 12
Restore e backup de mudançasThursday, October 25, 12
Processos bem definidosThursday, October 25, 12
Ambiente PadronizadoThursday, October 25, 12
Tarefas AutomatizadasThursday, October 25, 12
Quais os Benefícios Reais?Thursday, October 25, 12
Benefícios Reais                     Maior produtividade em menor tempo                     Poucos SysAdmins para muitos n...
Tecnologia trabalhando para vocêThursday, October 25, 12
Puppet & Cloud IaaS                           Cloud Tools (FOSS)   Cloud Hosts                           GanetiThursday, O...
Boas PráticasThursday, October 25, 12
Use API do fornecedorThursday, October 25, 12
Desenvolva sua InfraThursday, October 25, 12
Versione suas configuraçõesThursday, October 25, 12
Reaproveite CódigoThursday, October 25, 12
GitHub & PuppetForgeThursday, October 25, 12
Pesquise!Thursday, October 25, 12
Puppet em números                     727 pessoas online no canal                     #puppet da irc.freenode.net         ...
Puppet na rede               Site/Blog                         Google Groups               http://www.puppetlabs.com      ...
4Linux & PuppetLabs                           1o Parceiro no Brasil                           Consultores Especializados  ...
Perguntas?Thursday, October 25, 12
4linux na rede                 Contato                                   Twitter @gutocarvalho               Twitter @4lin...
Upcoming SlideShare
Loading in …5
×

Oficina Puppet latinoware

2,004 views

Published on

Slides do Oficina de Puppet no Latinoware 2012

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,004
On SlideShare
0
From Embeds
0
Number of Embeds
761
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Oficina Puppet latinoware

  1. 1. Gerência de Configurações c/ Puppet Patrocínio: 4Linux José Augusto (Guto) Carvalho gutocarvalho@4linux.com.brThursday, October 25, 12
  2. 2. Prestação de serviços em: Baseados em: - Consultoria - Desenvolvimento - Softwares Livres - Suporte - Soluções e Aplicativos - Open Source - Projetos - Treinamento - Padrões Abertos Para construir sua infraestrutura de TI e criar novas soluções de negócio.Thursday, October 25, 12
  3. 3. 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íliaThursday, October 25, 12
  4. 4. Oficina PuppetThursday, October 25, 12
  5. 5. Plano de Trabalho 50 min de apresentação GC & Puppet 60 min hands on puppet serverless 60 min hands on puppet master 10 min para perguntasThursday, October 25, 12
  6. 6. Agenda Apresentando Cenários Gerência de Configurações e Infraestrutura como Código Puppet como solução de Gerência de Configurações Hands On: Puppet Serverless Hands On: Puppet Master Hands On: Puppet Dashboard PerguntasThursday, October 25, 12
  7. 7. Virtualização - TendênciaThursday, October 25, 12
  8. 8. 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 gerenciamentoThursday, October 25, 12
  9. 9. Cloud Computing - TendênciaThursday, October 25, 12
  10. 10. 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 emergentesThursday, October 25, 12
  11. 11. Provisionamento Podemos criar 500 VM’s em poucos minutosThursday, October 25, 12
  12. 12. Como Administrar 500 VM’s?Thursday, October 25, 12
  13. 13. Configuração Manual?Thursday, October 25, 12
  14. 14. Acesso Secure Shell (ssh)?Thursday, October 25, 12
  15. 15. Host a Host?Thursday, October 25, 12
  16. 16. Quantos SysAdmins são necessários para administrar 500 servidores?Thursday, October 25, 12
  17. 17. Qual a velocidade nas mudanças em seu ambiente?Thursday, October 25, 12
  18. 18. Qual a probabilidade de falhas decorrentes de mudanças manuais?Thursday, October 25, 12
  19. 19. Você consegue manter todo o seu ambiente padronizado?Thursday, October 25, 12
  20. 20. Seu custo com manutenção e equipes técnicas está aumentando?Thursday, October 25, 12
  21. 21. Está difícil colocar suas configurações nos trilhos?Thursday, October 25, 12
  22. 22. Como resolver isto? Como obtenho controle e padronização em meu ambiente ?Thursday, October 25, 12
  23. 23. Gerência de ConfiguraçõesThursday, October 25, 12
  24. 24. PadronizaçãoThursday, October 25, 12
  25. 25. AutomatizaçãoThursday, October 25, 12
  26. 26. ControleThursday, October 25, 12
  27. 27. IntegridadeThursday, October 25, 12
  28. 28. DesempenhoThursday, October 25, 12
  29. 29. Agilidade nas mudançasThursday, October 25, 12
  30. 30. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente.Thursday, October 25, 12
  31. 31. Visão Rápida Framework Open Source para Gerência de Configurações Oferece um cojunto de ferramentas para manipular estados Nos permite trabalhar a Infraestrutura como código Funciona localmente ou via rede Oferece uma linguagem declarativa para descrever configurações de sistemas e serviçosThursday, October 25, 12
  32. 32. Sobre a ferramenta Suporte a Linux, BSDs, Solaris e Windows (19 tipos de OS) Criado por Luke Kaines (CEO e Fundador Puppetlabs) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Recebeu grandes investimentos Empresa oferece Suporte Corporativo e Versão EnterpriseThursday, October 25, 12
  33. 33. Feito por um SysAdmin para SysAdminsThursday, October 25, 12
  34. 34. Eficiente para uso DevOpsThursday, October 25, 12
  35. 35. Especificações 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 SSLThursday, October 25, 12
  36. 36. Quem usa o Puppet?Thursday, October 25, 12
  37. 37. Arquitetura Como funciona o Puppet?Thursday, October 25, 12
  38. 38. Resource Abstraction LayerThursday, October 25, 12
  39. 39. 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 fazerThursday, October 25, 12
  40. 40. Instale Pacote XThursday, October 25, 12
  41. 41. Remova usuário ZThursday, October 25, 12
  42. 42. (Re)inicie serviço YThursday, October 25, 12
  43. 43. Tratamento de Informações O grande diferencial do Puppet é a forma como ele trata as informações de seus nodesThursday, October 25, 12
  44. 44. 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 dadoThursday, October 25, 12
  45. 45. 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.Thursday, October 25, 12
  46. 46. 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álogoThursday, October 25, 12
  47. 47. IdempotênciaThursday, October 25, 12
  48. 48. Ambiente 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 AgentsThursday, October 25, 12
  49. 49. Administração Instâncias Administrar Cloud IaaS ou uma infra Virtualizada não é difícil Escalabilidade automática é um recurso fantástico na Cloud Balanceamento e Alta disponibiliade são recursos nativos de Virt. Criar novos servidores é muito fácil tanto na Cloud quanto em Virt. Administrar centenas de nodes? Aqui começa a complicar.Thursday, October 25, 12
  50. 50. Quando seu ambiente começar a crescer demais você vai perceber administrá-lo não é tão simples.Thursday, October 25, 12
  51. 51. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHEDThursday, October 25, 12
  52. 52. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudançasThursday, October 25, 12
  53. 53. Adicionando Nodes sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-reposThursday, October 25, 12
  54. 54. 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ânciaThursday, October 25, 12
  55. 55. Insira o Puppet na imagem de instalação de seus nodes.Thursday, October 25, 12
  56. 56. Pare de administrar e começe a desenvolver sua infraThursday, October 25, 12
  57. 57. Não tenha medo de realizar atualizações, o puppet faz pra você!Thursday, October 25, 12
  58. 58. Você pode fazer deploy de sua APP Você pode controlar a versão de sua APPThursday, October 25, 12
  59. 59. Como funciona o modo cliente/servidor?Thursday, October 25, 12
  60. 60. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em RedeThursday, October 25, 12
  61. 61. 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 é seguraThursday, October 25, 12
  62. 62. Fluxo Cliente/Servidor Instalação do nodeThursday, October 25, 12
  63. 63. Fluxo Cliente/Servidor Instalação do Inicialização node do puppetThursday, October 25, 12
  64. 64. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet CertificadoThursday, October 25, 12
  65. 65. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de CertificadoThursday, October 25, 12
  66. 66. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado CertificadoThursday, October 25, 12
  67. 67. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado CertificadoThursday, October 25, 12
  68. 68. 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çãoThursday, October 25, 12
  69. 69. O agente se comunica com o master a cada N minutosThursday, October 25, 12
  70. 70. E quais os recursos disponíveis para gerenciar sistemas e serviços? Como manipulo estados do meu ambiente?Thursday, October 25, 12
  71. 71. Recursos do Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e CondicionaisThursday, October 25, 12
  72. 72. 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.Thursday, October 25, 12
  73. 73. 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ãoThursday, October 25, 12
  74. 74. 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 arquivoThursday, October 25, 12
  75. 75. Resource Type: File Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksumsThursday, October 25, 12
  76. 76. ExemplosThursday, October 25, 12
  77. 77. Instala, Configura e Inicia debian-way # aptitude install apache2 # update-rc.d -f apache2 defaults # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 startThursday, October 25, 12
  78. 78. 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”, }Thursday, October 25, 12
  79. 79. 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”, }Thursday, October 25, 12
  80. 80. 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 }Thursday, October 25, 12
  81. 81. 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 }Thursday, October 25, 12
  82. 82. 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,Thursday, October 25, 12
  83. 83. 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, } } ....Thursday, October 25, 12
  84. 84. 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, }Thursday, October 25, 12
  85. 85. 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.dominioThursday, October 25, 12
  86. 86. E como acompanho mudanças?Thursday, October 25, 12
  87. 87. Puppet DashboardThursday, October 25, 12
  88. 88. Posso fazer mudanças em tempo real?Thursday, October 25, 12
  89. 89. 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 CapistranoThursday, October 25, 12
  90. 90. Hands On: Puppet ServerlessThursday, October 25, 12
  91. 91. http://gutocarvalho.net/dokuwikiThursday, October 25, 12
  92. 92. Cenário 1 VM - Debian 64bits - para PuppetServerless (local)Thursday, October 25, 12
  93. 93. instalando puppetThursday, October 25, 12
  94. 94. RALThursday, October 25, 12
  95. 95. RAL Resource Types Parameters Meta-parameters ProvedoresThursday, October 25, 12
  96. 96. RAL: Modifica & Sincroniza Verifica o estado atual de um recurso Compara dados coletados Aplica mudançasThursday, October 25, 12
  97. 97. RecursosThursday, October 25, 12
  98. 98. Exemplo de Recurso tipo  {  título:    param1          =>  valor,    param2          =>  valor,    param3          =>  valor,    metaparam1  =>  valor,    metaparam2  =>  valor,    function1    =>  valor,    function2    =>  valor, }Thursday, October 25, 12
  99. 99. Exemplo de Recurso: User user  {  gutocarvalho:    ensure                      =>  present,    gid                            =>  500,    home                          =>  /home/gutocarvalho,    password                  =>  $6$BE6a/5SJ...KfCy0,    password_max_age  =>  99999,    password_min_age  =>  0,    shell                        =>  /bin/bash,    uid                            =>  500, }Thursday, October 25, 12
  100. 100. Recurso, Título, AtributosThursday, October 25, 12
  101. 101. puppet resource vamos manipular estados usando o comando resourceThursday, October 25, 12
  102. 102. puppet resource user {Thursday, October 25, 12
  103. 103. puppet resource packageThursday, October 25, 12
  104. 104. puppet resource serviceThursday, October 25, 12
  105. 105. resource types vamos aprender a utilizar tipos distintos de recursos, inserí-los em manifests e aplicá-losThursday, October 25, 12
  106. 106. manifestThursday, October 25, 12
  107. 107. puppet apply manifest.ppThursday, October 25, 12
  108. 108. resource type: fileThursday, October 25, 12
  109. 109. resource type: packageThursday, October 25, 12
  110. 110. resource type: serviceThursday, October 25, 12
  111. 111. resource type: execThursday, October 25, 12
  112. 112. resource type: cronThursday, October 25, 12
  113. 113. resource type: hostThursday, October 25, 12
  114. 114. meta-parâmetros vamos aprender a utilizar os meta- parâmetros, eles podem ser utilizados com praticamente todos os resource types do puppetThursday, October 25, 12
  115. 115. meta-parameter: requireThursday, October 25, 12
  116. 116. meta-parameter: notifyThursday, October 25, 12
  117. 117. meta-parameter: aliasThursday, October 25, 12
  118. 118. meta-parameter: subscribeThursday, October 25, 12
  119. 119. configuração em trioThursday, October 25, 12
  120. 120. Exemplo Conceitual Trio package  {  pacote:                ensure  =>  present,        }   service  {  servico:                ensure          =>  running,                enable          =>  true,                hasrestart  =>  true,                hasstatus    =>  true,                require        =>  Package[pacote],        }   file  {  main.cf:                path        =>  "/etc/pacote/pacote.conf",                source    =>  "/root/puppet/pacote.conf",                owner      =>  root,                group      =>  root,                mode        =>  644,                require  =>  Package[pacote],                notify    =>  Service[servico],        }Thursday, October 25, 12
  121. 121. Exemplo Real Trio: Postfix package  {  postfix:                ensure  =>  present, }   service  {  postfix:                ensure          =>  running,                enable          =>  true,                hasrestart  =>  true,                hasstatus    =>  true,                require        =>  Package[postfix], }   file  {  main.cf:                path        =>  "/etc/postfix/main.cf",                source    =>  /root/puppet/main.cf,                owner      =>  root,                group      =>  root,                mode        =>  644,                require  =>  Package[postfix],                notify    =>  Service[postfix], }Thursday, October 25, 12
  122. 122. Variáveis, Fatos e Condicionais Vamos aprender a trabalhar com variáveis, fatos e condicionais dentro de nossos manifests no puppetThursday, October 25, 12
  123. 123. variáveisThursday, October 25, 12
  124. 124. fatosThursday, October 25, 12
  125. 125. condiçõesThursday, October 25, 12
  126. 126. casosThursday, October 25, 12
  127. 127. seletoresThursday, October 25, 12
  128. 128. Classes Vamos aprender a agrupar configurações dentro de classesThursday, October 25, 12
  129. 129. Templates Vamos aprender a trabalhar com arquivos dinâmicos que utilizam variáveis e fatosThursday, October 25, 12
  130. 130. noopThursday, October 25, 12
  131. 131. filebucket localThursday, October 25, 12
  132. 132. cenários para uso de puppet serverlessThursday, October 25, 12
  133. 133. Hands On: Puppet MasterThursday, October 25, 12
  134. 134. http://gutocarvalho.net/dokuwikiThursday, October 25, 12
  135. 135. Cenário 1 VM - Debian 64bits - para PuppetMaster (servidor) 1 VM - Debian 64bits - para PuppetAgent (node) 1 VM - Debian 64bits - para PuppetDashBoard (dashboard)Thursday, October 25, 12
  136. 136. PuppetMaster: Teoria API REST TCP/IP Certificados Digitais SSLThursday, October 25, 12
  137. 137. Instalando puppetmasterThursday, October 25, 12
  138. 138. DNS, Host, HostnameThursday, October 25, 12
  139. 139. Estrutura do MasterThursday, October 25, 12
  140. 140. Instalando PuppetAgentThursday, October 25, 12
  141. 141. DNS, Host, HostnameThursday, October 25, 12
  142. 142. Estrutura do AgentThursday, October 25, 12
  143. 143. Primeiro Contato Agent/MasterThursday, October 25, 12
  144. 144. Manipulando Certificados no PuppetMasterThursday, October 25, 12
  145. 145. Nodes Vamos entender o que é um node e como declaramos uma configuração para ele.Thursday, October 25, 12
  146. 146. Empurrando uma ConfiguraçãoThursday, October 25, 12
  147. 147. Classes Vamos aprender a trabalhar com classes em modo master/agent.Thursday, October 25, 12
  148. 148. Definições Vamos aprender a trabalhar com classes parametrizadas em modo master/agent.Thursday, October 25, 12
  149. 149. Módulos Vamos aprender a trabalhar com módulos no puppet.Thursday, October 25, 12
  150. 150. Organizando o MasterThursday, October 25, 12
  151. 151. Escalando Vamos aprender a substituir o Webrick pelo Apache com ModPassenger para que o puppet Escale.Thursday, October 25, 12
  152. 152. instalando puppetmaster-passengerThursday, October 25, 12
  153. 153. Hands On: Puppet DashboardThursday, October 25, 12
  154. 154. instalando o dashboardThursday, October 25, 12
  155. 155. integrando master ao dashboardThursday, October 25, 12
  156. 156. habilitando reports nos agentsThursday, October 25, 12
  157. 157. Qual o resultado concreto?Thursday, October 25, 12
  158. 158. Documentação InstantâneaThursday, October 25, 12
  159. 159. Restore e backup de mudançasThursday, October 25, 12
  160. 160. Processos bem definidosThursday, October 25, 12
  161. 161. Ambiente PadronizadoThursday, October 25, 12
  162. 162. Tarefas AutomatizadasThursday, October 25, 12
  163. 163. Quais os Benefícios Reais?Thursday, October 25, 12
  164. 164. 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çãoThursday, October 25, 12
  165. 165. Tecnologia trabalhando para vocêThursday, October 25, 12
  166. 166. Puppet & Cloud IaaS Cloud Tools (FOSS) Cloud Hosts GanetiThursday, October 25, 12
  167. 167. Boas PráticasThursday, October 25, 12
  168. 168. Use API do fornecedorThursday, October 25, 12
  169. 169. Desenvolva sua InfraThursday, October 25, 12
  170. 170. Versione suas configuraçõesThursday, October 25, 12
  171. 171. Reaproveite CódigoThursday, October 25, 12
  172. 172. GitHub & PuppetForgeThursday, October 25, 12
  173. 173. Pesquise!Thursday, October 25, 12
  174. 174. 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 PMThursday, October 25, 12
  175. 175. 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-brThursday, October 25, 12
  176. 176. 4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet MasterThursday, October 25, 12
  177. 177. Perguntas?Thursday, October 25, 12
  178. 178. 4linux na rede Contato Twitter @gutocarvalho Twitter @4linuxBR gutocarvalho@4linux.com.br Facebook /4Linux slideshare.net/gutocarvalho http://gutocarvalho.net Obrigado!Thursday, October 25, 12

×