Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Puppet overview

548 views

Published on

  • Be the first to comment

Puppet overview

  1. 1. Área, dia/mês/ano https://puppetlabs.com https://github.com/puppetlabs
  2. 2. Área, dia/mês/ano Administração Manual • Não existe um padrão • Não existem procedimentos • Cada administrador faz do seu jeito • Tarefas repetitivas - Criação de usuários - Elaboração de scripts - Configuração de serviços - Configurações de monitoramento - Criação de imagens de ambientes - Configuração do sistema operacional - Instalação, atualização e remoção de pacotes 2
  3. 3. Área, dia/mês/ano O que é o Puppet? O que está acontecendo? ESTADO DESEJADO sapato => present
  4. 4. Área, dia/mês/ano Por que usar o Puppet? • Economia de tempo • Evita erros humanos • Documenta o setup de um servidor • Fim dos longos e estressantes deploys em servidores • O puppet tem por padrão certificado de autenticação SSL • Facilita o trabalho dos administradores dos servidores • Padroniza as configurações utilizadas possibilitando auditoria dessas configurações • Centraliza a adminstração • Acelera a criação e a configuração dos servidores 4
  5. 5. Área, dia/mês/ano Por que usar o Puppet? • Roda em todos SO‟s comuns : Linux, Mac, Windows... • Vantagens em servidores idênticos ou similares. • Controle de versão • É utilizado até quando se tem um único servidor • Uma outra utilização é quando temos que construir uma workstation de desenvolvimento de um modo mais consistente, conseguimos algo praticamente idêntico do ambiente de produção para cada desenvolvedor. 5
  6. 6. Área, dia/mês/ano Por que usar o Puppet? Alternativas: • CFEngine - O mais antigo - Rápido - Consome poucos recursos • Chef - Configuração escrita em Ruby - Muito Flexível • Salt Stack - Configuração via YAML (muito simples, intuitivo) • Ansible - Não requer agentes rodando nos nós 6
  7. 7. Área, dia/mês/ano Por que usar o Puppet? Vantagens do Puppet • Linguagem declarativa - Menos Bugs de configuração - Mais configurações do que programação • Configurações idempotentes • Completamente extensível - Todos elementos primitivos do Puppet podem ser estendidos pelo usuário em Ruby. 7
  8. 8. Área, dia/mês/ano E se não utilizarmos o Puppet? • Perde-se tempo, dinheiro e energia. • Comete-se mais erros, provoca downtime, fere sua reputação. • No caso de um problema em um servidor, reconstrui-lo ou pior, reconstruir vários seria uma grande tarefa resultando em mais downtime, erros, etc. 8
  9. 9. Área, dia/mês/ano Puppet is serious business! Algumas das empresas que utilizam Puppet: 9
  10. 10. Área, dia/mês/ano Puppet is serious business! Por trás do Puppet encontramos investidores como: 1 0
  11. 11. Área, dia/mês/ano Puppet is serious business! • Ferramenta Open – Apache License • Empresa oferece suporte e uma versão Enterprise • Feita por um SysAdmin para SysAdmin • Desenhada com base em DevOps • Funciona em modo cliente/servidor e autônomo 1 1
  12. 12. Área, dia/mês/ano Resumindo • Puppet é um Software que permite automação. Configuramos um servidor central e os agents sincronizam com ele. • É um sistema descritivo. Decidimos se um arquivo deve existir, definimos permissões, conteúdo, decidimos se um pacote de software deve ser instalado, e a cada execução ele irá garantir que tudo fique do jeito que foi especificado • Podemos fazer deploy da App e ainda ter o controle de versão! 1 2
  13. 13. Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet • O agente gera um certificado digital • O Puppet master precisa autorizar esse certificado • Sem a autorização o agente não comunica com o master • Toda a comunicação é segura! 1 3
  14. 14. Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet 1 4 Puppet Master Puppet Agent 8139 Server 8140 Client
  15. 15. Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet 1 5
  16. 16. Área, dia/mês/ano Puppet Resources
  17. 17. Área, dia/mês/ano Resources Recurso é a unidade fundamental da modelagem Cada recurso define um aspecto do sistema São como Legos Recursos são combinados para que o sistema chegue ao estado desejado A ordem não importa!
  18. 18. Área, dia/mês/ano Resources Os recursos são escritos em uma linguagem de modelagem declarativa Exemplo: Sintaxe do recurso: • Tipo do recurso • Bloco ( colchetes ) • Título do recurso separado do corpo por „:‟ • Corpo consiste em pares de atributo e valor • Tipo e título devem ser únicos
  19. 19. Área, dia/mês/ano Resources Recursos similares podem ser agrupados em Tipos A descrição de um recurso é abstraída de sua implementação, o que permite uma descrição ser válida para qualquer tipo de sistema. Isto devido a sua camada De abstração de recursos (RAL)
  20. 20. Área, dia/mês/ano Resources RAL : Cada recurso possui Um ou mais provedores Provedores fazem a ligação entre os tipos de recurso e o SO correto.
  21. 21. Área, dia/mês/ano Resources
  22. 22. Área, dia/mês/ano Resources Types Exemplo de abordagem de implementação: Pacotes * Suporta 23 tipos de provedores de pacote * Declaramos se o pacote está presente ou ausente * Declaramos que o pacote sempre deverá estar em sua última versão Serviço * Declaramos se o serviço está sempre rodando ou não * Declaramos se o serviço será carregado no boot * Declaramos se o serviço depende de um pacote ou arquivo Arquivo * Especificamos permissões e donos * Declaramos diretórios e links simbólicos
  23. 23. Área, dia/mês/ano Resources Types Exemplo instalação, configuração e inicialização do Apache Como seria no CentOs # yum install httpd # chkconfig httpd on # cp ~/httpd.conf /etc/httpd/conf/ # service httpd start
  24. 24. Área, dia/mês/ano Resources Types Exemplo instalação, configuração e inicialização do Apache Como seria no Debian # aptitude install apache2 # insserv apache2 # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start
  25. 25. Área, dia/mês/ano Resources Types No Puppet com apenas uma abordagem package { 'apache2': ensure => present, } service { 'apache2': ensure => running, enable => true, } file { '/etc/apache2/httpd.conf': ensure => present, mode => „0644‟, owner => „root‟, group => „root‟, ensure => “puppet:///files/apache/httpd.conf”, }
  26. 26. Área, dia/mês/ano Resources Types Exemplo instalação, configuração do editor, ( independe do SO ) class editor { $vim = $operatingsystem ? { 'RedHat' => 'vim-enhanced', 'CentOS' => 'vim-enhanced', 'Fedora' => 'vim-enhanced', default => 'vim', } package { "$vim": ensure => present, alias => 'vim', # provider => yum, apt, ports? } } node “jbossas01hom.network.ctbc” { include editor } node “jbossas02hom.network.ctbc” { include editor }
  27. 27. Área, dia/mês/ano Resources Types Exemplo classe base – padronizando nós class sudoers { package { 'sudoers': ensure => installed, } file { '/etc/sudoers': source => 'puppet:///files/sudo/sudoers', require => Package['sudoers'], owner => 'root', group => 'root', mode => 440, } } Pacote sudoers • Garantir que esteja instalado Arquivo /etc/sudoers • Conteúdo comum a todas as máquinas • Requer pacote sudoers • Usuário root • Grupo root • Permissão 440
  28. 28. Área, dia/mês/ano Resources Types Exemplo classe base class ntpdate { package { 'ntpdate': ensure => installed, } cron { 'sincroniza horario': user => 'root', command => '/usr/sbin/ntpdate ntp.dominio', minute => 0, } } Pacote ntpdate • Garantir que esteja instalado cron • Usuário root • Comando 'ntpdate ntp.dominio' • Executar de hora em hora
  29. 29. Área, dia/mês/ano Resources Types Exemplo classe base class locale { package { 'locales': ensure => installed, } file { '/etc/default/locale': ensure => present, content => 'LANG=pt_BR.UTF-8', require => Package['locales'], } file { '/etc/locale.gen': ensure => present, source => '/root/exemplo/locale.gen', require => Package['locales'], } exec { '/usr/sbin/locale-gen': subscribe => File['/etc/locale.gen'], refreshonly => true, require => [ Package['locales'], File['/etc/locale.gen'] ], } } Pacote locales - instalado Arquivo /etc/default/locale - conteúdo Arquivo /etc/locale.gen - conteúdo Executar /usr/sbin/locale.gen • Sempre que locale.gen for alterado • Só quando houver alteração • Requer pacote locales e arquivo locale.gen
  30. 30. Área, dia/mês/ano Resources Types Exemplo classe base class padrao { include sudoers include ntpdate include locale } node default{ include padrao } Aplicar sudoers Aplicar ntpdate Aplicar locale Todos os nós! • Aplicar configuração padrão
  31. 31. Área, dia/mês/ano Resources Types Exemplo alterar dados em linha de comando puppet:~# puppet resourse user paulohac user { paulohac': ensure => 'absent' } puppet:~# puppet resourse user paulohac ensure=present notice: /User[paulohac]/ensure: created user { „paulohac': ensure => 'present' } puppet:~# puppet resourse user paulohac ensure=absent notice: /User[paulohac]/ensure: removed user { „paulohac': ensure => 'absent' }
  32. 32. Área, dia/mês/ano Verificando mudanças Puppet Dashboard
  33. 33. Área, dia/mês/ano Puppet Dashboard
  34. 34. Área, dia/mês/ano Para a próxima semana
  35. 35. Área, dia/mês/ano Procedimento manual de instalação do Agente EM12c em um JBoss • Acessar servidor via SSH • Criar diretório para o agente e as bibliotecas • Deployar .jar de monitoramento • Copiar vários jars para um diretório de bibliotecas para que o EM possa reconhecer. • Modificar a permissão para jboss • (Re)iniciar servidor • Talvez remover agente antigo ( Nagios ) 3 5
  36. 36. Área, dia/mês/ano Procedimento manual de instalação do Agente EM12c em um JBoss Em números: 200 SERVIDORES 20 MINUTOS POR SERVIDOR 4000 MINUTOS OU 67 HORAS 8 DIAS TRABALHANDO • Sem documentação • Sem rastreamento de mudanças 3 6
  37. 37. Área, dia/mês/ano Resultado concreto & Recomendações
  38. 38. Área, dia/mês/ano Resultados • Documentação Instantânea • Processos bem definidos • Ambiente Padronizado • Restore e backup de mudanças • Tarefas Automatizadas
  39. 39. Área, dia/mês/ano Recomendações • Usar o puppet para executar e controlar mudanças na infraestrutura • Parar de administrar e começar a desenvolver a infraestrutura • Nova demanda? Já executar utilizando o Puppet, escrevendo classes e módulos para executar apenas uma vez e reaproveitar o código depois. • Versionar as configurações (svn) criadas no Puppet. • Escreves módulos e classes da forma mais flexível possível. • Utilizar módulos prontos do GitHub e PuppetForge.
  40. 40. Área, dia/mês/ano Puppet web http://www.puppetlabs.com http://www.puppetlabs.com/blog/ Twitter @puppetlabs @puppetmasterd IRC irc.freenode.org #puppet #puppet-br

×