Puppet overview
Upcoming SlideShare
Loading in...5
×
 

Puppet overview

on

  • 293 views

 

Statistics

Views

Total Views
293
Views on SlideShare
293
Embed Views
0

Actions

Likes
0
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Puppet overview Puppet overview Presentation Transcript

    • Área, dia/mês/ano https://puppetlabs.com https://github.com/puppetlabs
    • Á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
    • Área, dia/mês/ano O que é o Puppet? O que está acontecendo? ESTADO DESEJADO sapato => present
    • Á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
    • Á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
    • Á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
    • Á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
    • Á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
    • Área, dia/mês/ano Puppet is serious business! Algumas das empresas que utilizam Puppet: 9
    • Área, dia/mês/ano Puppet is serious business! Por trás do Puppet encontramos investidores como: 1 0
    • Á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
    • Á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
    • Á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
    • Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet 1 4 Puppet Master Puppet Agent 8139 Server 8140 Client
    • Área, dia/mês/ano Funcionamento do modo Cliente/Servidor do Puppet 1 5
    • Área, dia/mês/ano Puppet Resources
    • Á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!
    • Á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
    • Á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)
    • Á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.
    • Área, dia/mês/ano Resources
    • Á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
    • Á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
    • Á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
    • Á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”, }
    • Á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 }
    • Á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
    • Á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
    • Á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
    • Á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
    • Á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' }
    • Área, dia/mês/ano Verificando mudanças Puppet Dashboard
    • Área, dia/mês/ano Puppet Dashboard
    • Área, dia/mês/ano Para a próxima semana
    • Á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
    • Á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
    • Área, dia/mês/ano Resultado concreto & Recomendações
    • Área, dia/mês/ano Resultados • Documentação Instantânea • Processos bem definidos • Ambiente Padronizado • Restore e backup de mudanças • Tarefas Automatizadas
    • Á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.
    • Á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