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

Confira estes a seguir

1 de 108 Anúncio

Mais Conteúdo rRelacionado

Quem viu também gostou (13)

Semelhante a Puppet Cloud IaaS (20)

Anúncio

Mais recentes (20)

Anúncio

Puppet Cloud IaaS

  1. 1. Gerência de Configurações em Cloud Puppet em ambientes IaaS José Augusto (Guto) Carvalho gutocarvalho@gmail.com Wednesday, August 8, 12
  2. 2. 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 Wednesday, August 8, 12
  3. 3. Puppet em IaaS Wednesday, August 8, 12
  4. 4. Plano de Trabalho 40 minutos de apresentação 5 minutos para perguntas Wednesday, August 8, 12
  5. 5. 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 Perguntas Wednesday, August 8, 12
  6. 6. Cloud Computing - Tendência Wednesday, August 8, 12
  7. 7. Cloud e seus Benefícios Hiper escalável Rápida e elástica Abstração de hardware Infraestrutura dinâmica Alta disponibilidade Investimento atraente Wednesday, August 8, 12
  8. 8. Provisionamento Podemos criar 500 VM’s em poucos minutos Wednesday, August 8, 12
  9. 9. Como Administrar 500 VM’s? Wednesday, August 8, 12
  10. 10. Configuração Manual? Wednesday, August 8, 12
  11. 11. Acesso Secure Shell (ssh)? Wednesday, August 8, 12
  12. 12. Host a Host? Wednesday, August 8, 12
  13. 13. Quantos SysAdmins são necessários para administrar 500 servidores? Wednesday, August 8, 12
  14. 14. Qual a velocidade nas mudanças em seu ambiente? Wednesday, August 8, 12
  15. 15. Qual a probabilidade de falhas decorrentes de mudanças manuais? Wednesday, August 8, 12
  16. 16. Você consegue manter todo o seu ambiente padronizado? Wednesday, August 8, 12
  17. 17. Seu custo com manutenção e equipes técnicas está aumentando? Wednesday, August 8, 12
  18. 18. Está difícil colocar suas configurações nos trilhos? Wednesday, August 8, 12
  19. 19. Como resolver isto? Como obtenho controle e padronização em meu ambiente ? Wednesday, August 8, 12
  20. 20. Gerência de Configurações Wednesday, August 8, 12
  21. 21. Padronização Wednesday, August 8, 12
  22. 22. Automatização Wednesday, August 8, 12
  23. 23. Controle Wednesday, August 8, 12
  24. 24. Integridade Wednesday, August 8, 12
  25. 25. Desempenho Wednesday, August 8, 12
  26. 26. Agilidade nas mudanças Wednesday, August 8, 12
  27. 27. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente. Wednesday, August 8, 12
  28. 28. Visão Rápida Infraestrutura como código Pare de administrar e comece a desenvolver sua infra Reuse código para gerenciar seu parque com facilidade Linguagem declarativa para descrever configurações (DSL) Wednesday, August 8, 12
  29. 29. Sobre a ferramenta Suporte a Linux, BSDs, Solaris e Windows Criado por Luke Kaines (CEO e Fundador) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Recebeu grandes investimentos Empresa oferece Suporte e Versão Enterprise Wednesday, August 8, 12
  30. 30. Feito por um SysAdmin para SysAdmins Wednesday, August 8, 12
  31. 31. Eficiente para uso DevOps Wednesday, August 8, 12
  32. 32. Especificações Escrito em Ruby Extensível usando código Ruby Funciona em modo Autônomo (serverless) Funciona em modo Cliente/Servidor RESTful API Comunicação segura (SSL Certificate) Wednesday, August 8, 12
  33. 33. Cases Puppet Wednesday, August 8, 12
  34. 34. Arquitetura Como funciona o Puppet? Wednesday, August 8, 12
  35. 35. Resource Abstraction Layer (RAL) Wednesday, August 8, 12
  36. 36. 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 fazer Wednesday, August 8, 12
  37. 37. Instale Pacote X Wednesday, August 8, 12
  38. 38. Remova usuário Z Wednesday, August 8, 12
  39. 39. (Re)inicie serviço Y Wednesday, August 8, 12
  40. 40. Tratamento de Informações O grande diferencial do Puppet é a forma como ele trata as informações de seus nodes Wednesday, August 8, 12
  41. 41. 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 Wednesday, August 8, 12
  42. 42. 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. Wednesday, August 8, 12
  43. 43. 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 Wednesday, August 8, 12
  44. 44. Idempotência Wednesday, August 8, 12
  45. 45. Funcionamento 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 Wednesday, August 8, 12
  46. 46. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em Rede Wednesday, August 8, 12
  47. 47. Administração IaaS Administrar uma cloud IaaS não é algo complicado Escalabilidade automática é um recurso fantástico Ter elasticidade é fundamental Criar novos servidores é muito fácil Administrar centenas de nodes? Aqui começa a complicar. Wednesday, August 8, 12
  48. 48. Quando seu ambiente IaaS começar a crescer demais você vai perceber administrá-lo não é tão simples. Wednesday, August 8, 12
  49. 49. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Wednesday, August 8, 12
  50. 50. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudanças Wednesday, August 8, 12
  51. 51. Adicionando Nodes sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-repos Wednesday, August 8, 12
  52. 52. Como o Puppet pode ajudar? Automatizando seu ambiente Gerando maior produtividade com menor esforço Padronizando seus nodes logo após a instalação Modificando configurações de forma controlada Wednesday, August 8, 12
  53. 53. Insira o Puppet na imagem de instalação de seus nodes. Wednesday, August 8, 12
  54. 54. Não tenha medo de realizar atualizações, o puppet faz pra você! Wednesday, August 8, 12
  55. 55. Você pode fazer deploy de sua APP Você pode controlar a versão de sua APP Wednesday, August 8, 12
  56. 56. Como funciona o modo cliente/servidor? Wednesday, August 8, 12
  57. 57. 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 é segura Wednesday, August 8, 12
  58. 58. Fluxo Cliente/Servidor Instalação do node Wednesday, August 8, 12
  59. 59. Fluxo Cliente/Servidor Instalação do Inicialização node do puppet Wednesday, August 8, 12
  60. 60. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Wednesday, August 8, 12
  61. 61. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de Certificado Wednesday, August 8, 12
  62. 62. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado Certificado Wednesday, August 8, 12
  63. 63. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado Certificado Wednesday, August 8, 12
  64. 64. 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 Wednesday, August 8, 12
  65. 65. O agente se comunica com o master a cada N minutos Wednesday, August 8, 12
  66. 66. Quais recursos estão disponíveis? Wednesday, August 8, 12
  67. 67. Recursos do Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e Condicionais Wednesday, August 8, 12
  68. 68. 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, August 8, 12
  69. 69. 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 Wednesday, August 8, 12
  70. 70. 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 Wednesday, August 8, 12
  71. 71. Resource Type: File Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksums Wednesday, August 8, 12
  72. 72. Exemplos Wednesday, August 8, 12
  73. 73. 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 Wednesday, August 8, 12
  74. 74. 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, August 8, 12
  75. 75. 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, August 8, 12
  76. 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. 77. 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 } Wednesday, August 8, 12
  78. 78. 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, August 8, 12
  79. 79. 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, August 8, 12
  80. 80. 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, August 8, 12
  81. 81. 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 Wednesday, August 8, 12
  82. 82. Como acompanho mudanças? Wednesday, August 8, 12
  83. 83. Puppet Dashboard Wednesday, August 8, 12
  84. 84. Posso fazer mudanças em tempo real? Wednesday, August 8, 12
  85. 85. 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 Wednesday, August 8, 12
  86. 86. Qual o resultado concreto? Wednesday, August 8, 12
  87. 87. Documentação Instantânea Wednesday, August 8, 12
  88. 88. Restore e backup de mudanças Wednesday, August 8, 12
  89. 89. Processos bem definidos Wednesday, August 8, 12
  90. 90. Ambiente Padronizado Wednesday, August 8, 12
  91. 91. Tarefas Automatizadas Wednesday, August 8, 12
  92. 92. 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 Wednesday, August 8, 12
  93. 93. Tecnologia trabalhando para você Wednesday, August 8, 12
  94. 94. Puppet e a nuvem Wednesday, August 8, 12
  95. 95. Puppet & Cloud IaaS Cloud Tools (FOSS) Cloud Hosts Ganeti Wednesday, August 8, 12
  96. 96. Boas Práticas Wednesday, August 8, 12
  97. 97. Use API do fornecedor Wednesday, August 8, 12
  98. 98. Desenvolva sua Infra Wednesday, August 8, 12
  99. 99. Versione suas configurações Wednesday, August 8, 12
  100. 100. Reaproveite Código Wednesday, August 8, 12
  101. 101. GitHub & PuppetForge Wednesday, August 8, 12
  102. 102. Pesquise! Wednesday, August 8, 12
  103. 103. 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 Wednesday, August 8, 12
  104. 104. 4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet Master Wednesday, August 8, 12
  105. 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-br Wednesday, August 8, 12
  106. 106. Perguntas? Wednesday, August 8, 12
  107. 107. Contato Twitter @gutocarvalho gutocarvalho@gmail.com slideshare.net/gutocarvalho gutocarvalho.net Obrigado! Wednesday, August 8, 12
  108. 108. Comparando Ferramentas Recursos Puppet Chef CfEngine Pull Yes Yes Yes Push No No No Idempotence Yes Yes Yes Config 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 Yes Wednesday, August 8, 12

Notas do Editor

  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Instala&amp;#xE7;&amp;#xE3;o de novo agente de monitoramento em um parque de 500 VM&amp;#x2019;s?\nComo fazer?\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
  • \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
  • \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
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

×