of 40/40
Área, dia/mês/ano https://puppetlabs.com https://github.com/puppetlabs

Puppet overview

  • View
    289

  • Download
    0

Embed Size (px)

Text of Puppet overview

  • 1. rea, dia/ms/ano https://puppetlabs.com https://github.com/puppetlabs

2. rea, dia/ms/ano Administrao Manual No existe um padro No existem procedimentos Cada administrador faz do seu jeito Tarefas repetitivas - Criao de usurios - Elaborao de scripts - Configurao de servios - Configuraes de monitoramento - Criao de imagens de ambientes - Configurao do sistema operacional - Instalao, atualizao e remoo de pacotes 2 3. rea, dia/ms/ano O que o Puppet? O que est acontecendo? ESTADO DESEJADO sapato => present 4. rea, dia/ms/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 padro certificado de autenticao SSL Facilita o trabalho dos administradores dos servidores Padroniza as configuraes utilizadas possibilitando auditoria dessas configuraes Centraliza a adminstrao Acelera a criao e a configurao dos servidores 4 5. rea, dia/ms/ano Por que usar o Puppet? Roda em todos SOs comuns : Linux, Mac, Windows... Vantagens em servidores idnticos ou similares. Controle de verso utilizado at quando se tem um nico servidor Uma outra utilizao quando temos que construir uma workstation de desenvolvimento de um modo mais consistente, conseguimos algo praticamente idntico do ambiente de produo para cada desenvolvedor. 5 6. rea, dia/ms/ano Por que usar o Puppet? Alternativas: CFEngine - O mais antigo - Rpido - Consome poucos recursos Chef - Configurao escrita em Ruby - Muito Flexvel Salt Stack - Configurao via YAML (muito simples, intuitivo) Ansible - No requer agentes rodando nos ns 6 7. rea, dia/ms/ano Por que usar o Puppet? Vantagens do Puppet Linguagem declarativa - Menos Bugs de configurao - Mais configuraes do que programao Configuraes idempotentes Completamente extensvel - Todos elementos primitivos do Puppet podem ser estendidos pelo usurio em Ruby. 7 8. rea, dia/ms/ano E se no utilizarmos o Puppet? Perde-se tempo, dinheiro e energia. Comete-se mais erros, provoca downtime, fere sua reputao. No caso de um problema em um servidor, reconstrui-lo ou pior, reconstruir vrios seria uma grande tarefa resultando em mais downtime, erros, etc. 8 9. rea, dia/ms/ano Puppet is serious business! Algumas das empresas que utilizam Puppet: 9 10. rea, dia/ms/ano Puppet is serious business! Por trs do Puppet encontramos investidores como: 1 0 11. rea, dia/ms/ano Puppet is serious business! Ferramenta Open Apache License Empresa oferece suporte e uma verso Enterprise Feita por um SysAdmin para SysAdmin Desenhada com base em DevOps Funciona em modo cliente/servidor e autnomo 1 1 12. rea, dia/ms/ano Resumindo Puppet um Software que permite automao. Configuramos um servidor central e os agents sincronizam com ele. um sistema descritivo. Decidimos se um arquivo deve existir, definimos permisses, contedo, decidimos se um pacote de software deve ser instalado, e a cada execuo ele ir garantir que tudo fique do jeito que foi especificado Podemos fazer deploy da App e ainda ter o controle de verso! 1 2 13. rea, dia/ms/ano Funcionamento do modo Cliente/Servidor do Puppet O agente gera um certificado digital O Puppet master precisa autorizar esse certificado Sem a autorizao o agente no comunica com o master Toda a comunicao segura! 1 3 14. rea, dia/ms/ano Funcionamento do modo Cliente/Servidor do Puppet 1 4 Puppet Master Puppet Agent 8139 Server 8140 Client 15. rea, dia/ms/ano Funcionamento do modo Cliente/Servidor do Puppet 1 5 16. rea, dia/ms/ano Puppet Resources 17. rea, dia/ms/ano Resources Recurso a unidade fundamental da modelagem Cada recurso define um aspecto do sistema So como Legos Recursos so combinados para que o sistema chegue ao estado desejado A ordem no importa! 18. rea, dia/ms/ano Resources Os recursos so escritos em uma linguagem de modelagem declarativa Exemplo: Sintaxe do recurso: Tipo do recurso Bloco ( colchetes ) Ttulo do recurso separado do corpo por : Corpo consiste em pares de atributo e valor Tipo e ttulo devem ser nicos 19. rea, dia/ms/ano Resources Recursos similares podem ser agrupados em Tipos A descrio de um recurso abstrada de sua implementao, o que permite uma descrio ser vlida para qualquer tipo de sistema. Isto devido a sua camada De abstrao de recursos (RAL) 20. rea, dia/ms/ano Resources RAL : Cada recurso possui Um ou mais provedores Provedores fazem a ligao entre os tipos de recurso e o SO correto. 21. rea, dia/ms/ano Resources 22. rea, dia/ms/ano Resources Types Exemplo de abordagem de implementao: 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 verso Servio * Declaramos se o servio est sempre rodando ou no * Declaramos se o servio ser carregado no boot * Declaramos se o servio depende de um pacote ou arquivo Arquivo * Especificamos permisses e donos * Declaramos diretrios e links simblicos 23. rea, dia/ms/ano Resources Types Exemplo instalao, configurao e inicializao do Apache Como seria no CentOs # yum install httpd # chkconfig httpd on # cp ~/httpd.conf /etc/httpd/conf/ # service httpd start 24. rea, dia/ms/ano Resources Types Exemplo instalao, configurao e inicializao do Apache Como seria no Debian # aptitude install apache2 # insserv apache2 # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start 25. rea, dia/ms/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. rea, dia/ms/ano Resources Types Exemplo instalao, configurao 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. rea, dia/ms/ano Resources Types Exemplo classe base padronizando ns 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 Contedo comum a todas as mquinas Requer pacote sudoers Usurio root Grupo root Permisso 440 28. rea, dia/ms/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 Usurio root Comando 'ntpdate ntp.dominio' Executar de hora em hora 29. rea, dia/ms/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 - contedo Arquivo /etc/locale.gen - contedo Executar /usr/sbin/locale.gen Sempre que locale.gen for alterado S quando houver alterao Requer pacote locales e arquivo locale.gen 30. rea, dia/ms/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 ns! Aplicar configurao padro 31. rea, dia/ms/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. rea, dia/ms/ano Verificando mudanas Puppet Dashboard 33. rea, dia/ms/ano Puppet Dashboard 34. rea, dia/ms/ano Para a prxima semana 35. rea, dia/ms/ano Procedimento manual de instalao do Agente EM12c em um JBoss Acessar servidor via SSH Criar diretrio para o agente e as bibliotecas Deployar .jar de monitoramento Copiar vrios jars para um diretrio de bibliotecas para que o EM possa reconhecer. Modificar a permisso para jboss (Re)iniciar servidor Talvez remover agente antigo ( Nagios ) 3 5 36. rea, dia/ms/ano Procedimento manual de instalao do Agente EM12c em um JBoss Em nmeros: 200 SERVIDORES 20 MINUTOS POR SERVIDOR 4000 MINUTOS OU 67 HORAS 8 DIAS TRABALHANDO Sem documentao Sem rastreamento de mudanas 3 6 37. rea, dia/ms/ano Resultado concreto & Recomendaes 38. rea, dia/ms/ano Resultados Documentao Instantnea Processos bem definidos Ambiente Padronizado Restore e backup de mudanas Tarefas Automatizadas 39. rea, dia/ms/ano Recomendaes Usar o puppet para executar e controlar mudanas na infraestrutura Parar de administrar e comear a desenvolver a infraestrutura Nova demanda? J executar utilizando o Puppet, escrevendo classes e mdulos para executar apenas uma vez e reaproveitar o cdigo depois. Versionar as configuraes (svn) criadas no Puppet. Escreves mdulos e classes da forma mais flexvel possvel. Utilizar mdulos prontos do GitHub e PuppetForge. 40. rea, dia/ms/ano Puppet web http://www.puppetlabs.com http://www.puppetlabs.com/blog/ Twitter @puppetlabs @puppetmasterd IRC irc.freenode.org #puppet #puppet-br