of 108 /108
Gerência de Configurações em Cloud Puppet em ambientes IaaS José Augusto (Guto) Carvalho [email protected] Wednesday, August 8, 12

Puppet Cloud IaaS

Embed Size (px)

DESCRIPTION

Gerenciamento de Configurações em Nuvem usando Puppet.

Text of Puppet Cloud IaaS

  • 1. Gerncia de Conguraes em Cloud Puppet em ambientes IaaS Jos Augusto (Guto) Carvalho [email protected], August 8, 12
  • 2. whoami Consultor/SysAdmin (LPIC-3) na 4Linux 12 anos de experincia com tecnologias FOSS Blogueiro FOSS h 6 anos no site gutocarvalho.net Atuao em vrios projetos de Governo no MDA, MINC, EBC/RADIOBRS, MPS/DATAPREV, ITI/PR, CEF, MD/SIPAM, DETRAN/DF H 2 anos trabalhando com gerncia de conguraes em ambientes virtualizados e clouds privadas em BrasliaWednesday, August 8, 12
  • 3. Puppet em IaaSWednesday, August 8, 12
  • 4. Plano de Trabalho 40 minutos de apresentao 5 minutos para perguntasWednesday, August 8, 12
  • 5. Agenda Gerncia de Conguraes Infraestrutura como Cdigo Puppet como soluo de Gerncia de Conguraes Puppet Arquitetura, Funcionamento e Recursos PerguntasWednesday, August 8, 12
  • 6. Cloud Computing - TendnciaWednesday, August 8, 12
  • 7. Cloud e seus Benefcios Hiper escalvel Rpida e elstica Abstrao de hardware Infraestrutura dinmica Alta disponibilidade Investimento atraenteWednesday, August 8, 12
  • 8. Provisionamento Podemos criar 500 VMs em poucos minutosWednesday, August 8, 12
  • 9. Como Administrar 500 VMs?Wednesday, August 8, 12
  • 10. Congurao Manual?Wednesday, August 8, 12
  • 11. Acesso Secure Shell (ssh)?Wednesday, August 8, 12
  • 12. Host a Host?Wednesday, August 8, 12
  • 13. Quantos SysAdmins so necessrios para administrar 500 servidores?Wednesday, August 8, 12
  • 14. Qual a velocidade nas mudanas em seu ambiente?Wednesday, August 8, 12
  • 15. Qual a probabilidade de falhas decorrentes de mudanas manuais?Wednesday, August 8, 12
  • 16. Voc consegue manter todo o seu ambiente padronizado?Wednesday, August 8, 12
  • 17. Seu custo com manuteno e equipes tcnicas est aumentando?Wednesday, August 8, 12
  • 18. Est difcil colocar suas conguraes nos trilhos?Wednesday, August 8, 12
  • 19. Como resolver isto? Como obtenho controle e padronizao em meu ambiente ?Wednesday, August 8, 12
  • 20. Gerncia de ConguraesWednesday, August 8, 12
  • 21. PadronizaoWednesday, August 8, 12
  • 22. AutomatizaoWednesday, August 8, 12
  • 23. ControleWednesday, August 8, 12
  • 24. IntegridadeWednesday, August 8, 12
  • 25. DesempenhoWednesday, August 8, 12
  • 26. Agilidade nas mudanasWednesday, August 8, 12
  • 27. Puppet Ferramenta de nova gerao que implementa gerncia de conguraes para seu ambiente.Wednesday, August 8, 12
  • 28. Viso Rpida Infraestrutura como cdigo Pare de administrar e comece a desenvolver sua infra Reuse cdigo para gerenciar seu parque com facilidade Linguagem declarativa para descrever conguraes (DSL)Wednesday, August 8, 12
  • 29. Sobre a ferramenta Suporte a Linux, BSDs, Solaris e Windows Criado por Luke Kaines (CEO e Fundador) Empresa PuppetLabs mantm a Ferramenta Ferramenta OpenSource (Licena Apache) Recebeu grandes investimentos Empresa oferece Suporte e Verso EnterpriseWednesday, August 8, 12
  • 30. Feito por um SysAdmin para SysAdminsWednesday, August 8, 12
  • 31. Eciente para uso DevOpsWednesday, August 8, 12
  • 32. Especicaes Escrito em Ruby Extensvel usando cdigo Ruby Funciona em modo Autnomo (serverless) Funciona em modo Cliente/Servidor RESTful API Comunicao segura (SSL Certicate)Wednesday, August 8, 12
  • 33. Cases PuppetWednesday, August 8, 12
  • 34. Arquitetura Como funciona o Puppet?Wednesday, August 8, 12
  • 35. Resource Abstraction Layer (RAL)Wednesday, August 8, 12
  • 36. Puppet: RAL Resource Abstraction Layer = RAL Camada de Abstrao de Recursos Fale o que voc quer que seja feito No se preocupe em como ser feito O Puppet sabe como fazerWednesday, August 8, 12
  • 37. Instale Pacote XWednesday, August 8, 12
  • 38. Remova usurio ZWednesday, August 8, 12
  • 39. (Re)inicie servio YWednesday, August 8, 12
  • 40. Tratamento de Informaes O grande diferencial do Puppet a forma como ele trata as informaes de seus nodesWednesday, August 8, 12
  • 41. Tratamento de informaes 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 usurio em um servidor um dadoWednesday, August 8, 12
  • 42. Os dados so inseridos em catlogos pelo master O catlogo processado pelo node e as modicaes so aplicadas de acordo com o que foi declarado.Wednesday, August 8, 12
  • 43. Processamento do Catlogo 1) Agente Requisita Catlogo 1.1) Agente envia Fatos para Master 2) Master Processa Fatos e Compara 2.1) Master Produz e envia Catlogo 3) Node Recebe, Compara e Aplica 4) Node informa estado atual ao Master 5) Sistema reete catlogoWednesday, August 8, 12
  • 44. IdempotnciaWednesday, August 8, 12
  • 45. Funcionamento Puppet Conguraes Mdulos Estticos Master Volteis e Dados Camada de Servios Estruturantes LDAP DNS MONIT SYSLOG Camada de Aplicao JBOSS APACHE MYSQL PGSQL Puppet AgentsWednesday, August 8, 12
  • 46. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Viso em RedeWednesday, August 8, 12
  • 47. Administrao IaaS Administrar uma cloud IaaS no algo complicado Escalabilidade automtica um recurso fantstico Ter elasticidade fundamental Criar novos servidores muito fcil Administrar centenas de nodes? Aqui comea a complicar.Wednesday, August 8, 12
  • 48. Quando seu ambiente IaaS comear a crescer demais voc vai perceber administr-lo no to simples.Wednesday, August 8, 12
  • 49. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHEDWednesday, August 8, 12
  • 50. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudanasWednesday, August 8, 12
  • 51. Adicionando Nodes sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-reposWednesday, August 8, 12
  • 52. Como o Puppet pode ajudar? Automatizando seu ambiente Gerando maior produtividade com menor esforo Padronizando seus nodes logo aps a instalao Modicando conguraes de forma controladaWednesday, August 8, 12
  • 53. Insira o Puppet na imagem de instalao de seus nodes.Wednesday, August 8, 12
  • 54. No tenha medo de realizar atualizaes, o puppet faz pra voc!Wednesday, August 8, 12
  • 55. Voc pode fazer deploy de sua APP Voc pode controlar a verso de sua APPWednesday, August 8, 12
  • 56. Como funciona o modo cliente/servidor?Wednesday, August 8, 12
  • 57. Arquitetura Cliente/Servidor O agente gera um certicado digital O master precisa autorizar o certicado Sem autorizao o agente no pode se comunicar Toda a comunicao entre agente e master seguraWednesday, August 8, 12
  • 58. Fluxo Cliente/Servidor Instalao do nodeWednesday, August 8, 12
  • 59. Fluxo Cliente/Servidor Instalao do Inicializao node do puppetWednesday, August 8, 12
  • 60. Fluxo Cliente/Servidor Instalao do Inicializao Gerao de node do puppet CerticadoWednesday, August 8, 12
  • 61. Fluxo Cliente/Servidor Instalao do Inicializao Gerao de node do puppet Certicado Envio de CerticadoWednesday, August 8, 12
  • 62. Fluxo Cliente/Servidor Instalao do Inicializao Gerao de node do puppet Certicado Master Assina Envio de Certicado CerticadoWednesday, August 8, 12
  • 63. Fluxo Cliente/Servidor Instalao do Inicializao Gerao de node do puppet Certicado Agente Master Assina Envio de Sincroniza Certicado CerticadoWednesday, August 8, 12
  • 64. Fluxo Cliente/Servidor Instalao do Inicializao Gerao de node do puppet Certicado Agente Master Assina Envio de Sincroniza Certicado Certicado Modalidades de Assinatura de Certicado Assinatura pode ser manual Assinatura pode ser automtica por domnio Assinatura pode ser automtica em qualquer requisioWednesday, August 8, 12
  • 65. O agente se comunica com o master a cada N minutosWednesday, August 8, 12
  • 66. Quais recursos esto disponveis?Wednesday, August 8, 12
  • 67. Recursos do Puppet Resource Types Parmetros e Meta-parmetros Templates e Denies Classes e Mdulos Funes e CondicionaisWednesday, August 8, 12
  • 68. Puppet Resource Types Arquivos e Diretrios Yum Repos Usurios Augeas Alias Hosts Pacotes SSH Servios Cron O puppet oferece 38 tipos de recursos nativos, e voc pode estend-lo.Wednesday, August 8, 12
  • 69. Resource Type: Packages Suporte a 23 tipos de provedores de pacotes Faz a abstrao do OS Declare se o pacote deve estar presente ou ausente Declare se o pacote deve sempre estar em sua ltima versoWednesday, August 8, 12
  • 70. Resource Type: Services Suporta 11 tipos de sistemas INIT para inicializar servios Declare se um servio deve estar sempre rodando Declare se um servio deve ser carregado no boot Declare se um servio depende de um pacote ou arquivoWednesday, August 8, 12
  • 71. Resource Type: File Especique permisses e owners Declare arquivos, diretrios e links Controle de mudanas usando at 15 tipos de checksumsWednesday, August 8, 12
  • 72. ExemplosWednesday, August 8, 12
  • 73. Instala, Congura e Inicia debian-way # aptitude install apache2 # update-rc.d -f apache2 defaults # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 startWednesday, August 8, 12
  • 74. Instala, Congura e Inicia package { apache2: ensure => present, } service { apache2: ensure => running, enable => true, } le { httpd.conf: path => /etc/apache2/httpd.conf, source => /etc/puppet/les/httpd.conf, }Wednesday, August 8, 12
  • 75. Instala, Congura e Inicia package { apache2: ensure => present, } resource type service { apache2: parameter ensure => running, title enable => true, value } le { httpd.conf: path => /etc/apache2/httpd.conf, source => /etc/puppet/les/httpd.conf, }Wednesday, August 8, 12
  • 76. 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, August 8, 12
  • 77. Declarando um node node servidor.dominio { include linux-server include module } node balancer.dominio { include linux-server include cyrus::backend include postx::hub include haproxy::mailproxy }Wednesday, August 8, 12
  • 78. Variveis e Fatos Fatos (facter) domain => hacklab, Variveis 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, August 8, 12
  • 79. Condicionais case $operatingsystem { CentOS,RedHat: { $package_name = ntp, $service_name = ntpd, $conf_le = ntp.conf.el, } Debian,Ubuntu: { $package_name = ntp, $service_name = ntp, $conf_le = ntp.conf.debian, } } ....Wednesday, August 8, 12
  • 80. Denies 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 => [email protected], 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, August 8, 12
  • 81. Templates Trecho do template postx/main.cf myorigin = mydestination = $myhostname, ..., localhost, Substituio de variveis por fatos myorigin = servidor.dominio mydestination = $myhostname, ..., localhost, servidor.dominioWednesday, August 8, 12
  • 82. Como acompanho mudanas?Wednesday, August 8, 12
  • 83. Puppet DashboardWednesday, August 8, 12
  • 84. Posso fazer mudanas em tempo real?Wednesday, August 8, 12
  • 85. Marionette Collective Orquestrador de nodes Execuo de Tarefas Paralelas Interao com centenas de nodes Inventrio descentralizado Leitura de meta-dados do Puppet Similar a Fabric e CapistranoWednesday, August 8, 12
  • 86. Qual o resultado concreto?Wednesday, August 8, 12
  • 87. Documentao InstantneaWednesday, August 8, 12
  • 88. Restore e backup de mudanasWednesday, August 8, 12
  • 89. Processos bem denidosWednesday, August 8, 12
  • 90. Ambiente PadronizadoWednesday, August 8, 12
  • 91. Tarefas AutomatizadasWednesday, August 8, 12
  • 92. Benefcios Reais Maior produtividade em menor tempo Poucos SysAdmins para muitos nodes Diminuio de falhas humanas Maior controle de todo o seu parque Diminuio do tempo gasto em mudanas Diminuio do custo de manutenoWednesday, August 8, 12
  • 93. Tecnologia trabalhando para vocWednesday, August 8, 12
  • 94. Puppet e a nuvemWednesday, August 8, 12
  • 95. Puppet & Cloud IaaS Cloud Tools (FOSS) Cloud Hosts GanetiWednesday, August 8, 12
  • 96. Boas PrticasWednesday, August 8, 12
  • 97. Use API do fornecedorWednesday, August 8, 12
  • 98. Desenvolva sua InfraWednesday, August 8, 12
  • 99. Versione suas conguraesWednesday, August 8, 12
  • 100. Reaproveite CdigoWednesday, August 8, 12
  • 101. GitHub & PuppetForgeWednesday, August 8, 12
  • 102. Pesquise!Wednesday, August 8, 12
  • 103. Puppet em nmeros 727 pessoas online no canal #puppet da irc.freenode.net 8.500 repositrios no GitHub 450 mdulos no PuppetForge 4457 usurios ativos na lista puppet-users com 7795 tpicos de discusso Dados coletados em 2012-08-06 s 10:34 PMWednesday, August 8, 12
  • 104. 4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet MasterWednesday, August 8, 12
  • 105. 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, August 8, 12
  • 106. Perguntas?Wednesday, August 8, 12
  • 107. Contato Twitter @gutocarvalho [email protected] slideshare.net/gutocarvalho gutocarvalho.net Obrigado!Wednesday, August 8, 12
  • 108. Comparando Ferramentas Recursos Puppet Chef CfEngine Pull Yes Yes Yes Push No No No Idempotence Yes Yes Yes Cong Language Declarative Ruby Declarative Web UI Yes Yes Yes OS Support *NIX,Windows *NIX,Windows *NIX,Windows License Apache Apache GPL Company Puppetlabs OpsCode CfEngine Cloud Yes Yes YesWednesday, August 8, 12