SlideShare una empresa de Scribd logo
1 de 161
Descargar para leer sin conexión
Gestão e Automação de
               Servidores com Puppet
                             Guto Carvalho < gutocarvalho@gmail.com >

                             Campo Grande/MS - 2012/12/12 - Hora Livre


Wednesday, December 12, 12
Hora Livre - Ano 4


Wednesday, December 12, 12
Wednesday, December 12, 12
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, CAIXA

                   Há 2 anos trabalhando com gerência de configurações em ambientes virtualizados e clouds
                   privadas em Brasília

                   Palestrante em eventos como FISL, LATINOWARE, CONSEGI, ENECOMP, FLISOL e CLOUDCONF


Wednesday, December 12, 12
Plano de Trabalho

                   05 minutos de apresentação
                   50 minutos de palestra
                   10 minutos para perguntas




Wednesday, December 12, 12
Agenda
                    Administração de servidores e serviços

                    Causas, efeitos e consequências da administração artesanal

                    Um novo caminho com a gerência de configurações

                    Puppet como solução de gerência de configurações

                    Apresentando características e recursos do Puppet

                    Benefícios, resultados concretos e Puppet no Brasil


Wednesday, December 12, 12
Já ouviu falar do
                                sysadmin?

Wednesday, December 12, 12
O que faz um sysadmin?
                   Administra servidores e serviços e a infraestrutura de rede

                   Oferece suporte aos desenvolvedores e usuários

                   Sustenta ambiente de desenvolvimento, testes, homol e produção e faz deploy de aplicações

                   Sustenta sistemas estruturantes (DHCP, DNS, PROXY, LDAP, MAIL, IM)

                   Cuida dos ambientes de banco de dados

                   Sustenta, monitora e trabalha para que aplicações e ambientes funcionem

                   Cuida do Backup, lava, passa e faz cafézinho...


Wednesday, December 12, 12
Multi-tarefas


Wednesday, December 12, 12
Multi-disciplinar


Wednesday, December 12, 12
SysAdmins
Wednesday, December 12, 12
Visão do
        Sysadmin
       Em relação a infraestrutura
       que ele tem que administra




Wednesday, December 12, 12
Visão do
        Sysadmin
       Em relação ao seu dia-a-dia de
       trabalho e tratamento de
       demandas



Wednesday, December 12, 12
Realidade do Sysadmin
Wednesday, December 12, 12
Ferramentas e métodos não tão
                 modernos e nem tão atraentes


Wednesday, December 12, 12
Desafios do Sysadmin em 2012



Wednesday, December 12, 12
Administração de Servidores e Serviços

Wednesday, December 12, 12
Virtualização - Tendência
Wednesday, December 12, 12
Virt. e seus Benefícios
                   Menor consumo de energia
                   Melhor aproveitamento de espaço físico
                   Melhor aproveitamento de hardware (sem hw ocioso)
                   Maior segurança com isolamento de ambientes
                   Pode-se trabalhar disponibilidade e balanceamento
                   Facilidade de provisionamento e gerenciamento
Wednesday, December 12, 12
Cloud Computing - Tendência
Wednesday, December 12, 12
Cloud e seus Benefícios
                   Hiper escalável
                   Rápida e elástica
                   Abstração de hardware
                   Infraestrutura dinâmica
                   Alta disponibilidade
                   Investimento atraente para projetos emergentes
Wednesday, December 12, 12
O crescimento do
        seu parque é
        inevitável
       Poucas máquinas físicas
       podem ser tornar dezenas,
       centenas ou milhares de nodes
       em poucos meses.


Wednesday, December 12, 12
Como Administrar 500 VM’s?



Wednesday, December 12, 12
Ambiente híbrido e complexo

                   Servidores Linux Debian 5.0 e 6.0 em 32 e 64 bits
                   Servidores Linux Centos 5 e Centos 6 em 32 e 64 bits
                   Servidores RHEL 4, 5 e 6 em 64 bits
                   FreeBSD, OpenBSD e OSX
                   Servidores Windows 2003 e 2008

Wednesday, December 12, 12
Configuração artesanal?



Wednesday, December 12, 12
Vale a pena insistir?
Wednesday, December 12, 12
Administação Host a Host?



Wednesday, December 12, 12
Acesso Secure Shell (ssh) em loop?




Wednesday, December 12, 12
Shellscript?


Wednesday, December 12, 12
Será que o modelo artesanal escala?
Wednesday, December 12, 12
Quantos SysAdmins são necessários
                        para administrar 500 servidores?




Wednesday, December 12, 12
Qual a velocidade nas
                     mudanças em seu ambiente?


Wednesday, December 12, 12
Qual a probabilidade de falhas
                      decorrentes de mudanças manuais?




Wednesday, December 12, 12
Você consegue manter todo o
                      seu ambiente padronizado?


Wednesday, December 12, 12
Trabalhar fora de expediente para dar
                    conta das demandas se tornou regra ao
                               invés de exceção?




Wednesday, December 12, 12
Seu custo com equipes técnicas está
                  aumentando devido aos trabalho
                         fora de expediente?



Wednesday, December 12, 12
Você começa a ter a sensação de estar sendo
                                engolido por seu ambiente?

Wednesday, December 12, 12
Está difícil colocar suas configurações nos trilhos?

Wednesday, December 12, 12
Administração artesanal
        não escala, não importa
        quantas pessoas estejam
        envolvidas
       No entanto, é possível enxergar
       as causas, efeitos e consequências
       geradas por um modelo
       equivocado de administração



Wednesday, December 12, 12
Você vai começar a perceber que

                   Fica mais difícil encontrar problemas em seu parque
                   Não é mais tão simples manter as coisas funcionando
                   É quase impossível manter o parque padronizado
                   Sua produtividade diminui a medida que o ambiente cresce
                   Você não consegue mais documentar e planejar mudanças


Wednesday, December 12, 12
Você vai começar a perceber que

                   Você não consegue mais entregar demandas no tempo acordado
                   Sua equipe está sempre exausta e desmotivada
                   Sua equipe não tem mais direito a finais de semana, feriados
                   Você não tem tempo para pensar em segurança e performance
                   Uma simples atualização de software pode levar semanas


Wednesday, December 12, 12
Tarefas repetitivas


Wednesday, December 12, 12
A maioria das demandas de um sysdmin envolve
                          execução de tarefas repetitivas




Wednesday, December 12, 12
Wednesday, December 12, 12
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

Wednesday, December 12, 12
Remover Nagios e Instalar
                     Zabbix em 500 máquinas


Wednesday, December 12, 12
Instalação de Zabbix-Agent

                   Acessar o servidor por ssh e se tornar root
                   Configurar repositório YUM, APT ou Ports
                   Instalar pacote zabbix-agent
                   Remover pacote nagios
                   Ajustar arquivo de configuração Zabbix
                   Reiniciar Zabbix Agent
Wednesday, December 12, 12
Instalação de Zabbix-Agent

                   10 minutos por máquina
                   5000 minutos ou 83.3 horas de trabalho repetitivo
                   10 dias para instalar o zabbix-agent no parque
                   1 analista alocado exclusivamente para isto 8HPD
                    Considere re-trabalho devido ao modelo manual

Wednesday, December 12, 12
Criar o usuário do novo sysadmin
                             em 500 máquinas



Wednesday, December 12, 12
Criação de usuário para sysadmin

                   Acessar o servidor por ssh
                   Se tornar root
                   Criar usuário
                   Setar senha temporária
                   Configurar privilégios no sudo

Wednesday, December 12, 12
Instalação de Zabbix-Agent

                   7 minutos por máquina
                   3500 minutos ou 58.3 horas de trabalho repetitivo
                   7 dias para criar o usuário no parque
                   1 analista alocado exclusivamente para isto 8HPD
                    Considere re-trabalho devido ao modelo manual
                   Considere que o usuário vai ter que trocar a senha nas 500 máquinas

Wednesday, December 12, 12
Mas eu não posso usar LDAP para
                 autenticar meus usuários, não seria
                              melhor?



Wednesday, December 12, 12
Autenticação LDAP em Debian


                   Você precisa manter as configurações do PAM e módulo LDAP

                   Arquivos a serem mantidos ldap.conf, nsswitch.conf, libnss-ldap.conf

                   Pacotes a serem mantidos ldap-utils, libpam-ldap, libnss-ldap e nscd

                   Você ainda precisa ter um usuário coringa em caso de problema no LDAP




Wednesday, December 12, 12
Como alterar vários arquivos de configuração em
                    500 máquinas em um caso de mudança na
                            estrutura da árvore LDAP?




Wednesday, December 12, 12
Remover usuários antigos é tão
                 complicado quanto criar novos


Wednesday, December 12, 12
Rastreamento de mudanças e falta de padrões

Wednesday, December 12, 12
Se você pedir para dois sysadmins
                     instalarem um servidor você terá
                         dois ambientes diferentes



Wednesday, December 12, 12
Falta de padronização


Wednesday, December 12, 12
O que devemos padronizar?

                   DNS (resolv.conf)        Hosts e Hostnames
                   Usuários e Privilégios   Repositórios
                   NTP (data/hora)          Logs e Autenticação
                   Pacotes Sysadmins        Firewall
                   Rotas                    Hardening, Tuning

Wednesday, December 12, 12
Falta de processos e procedimentos de execução de
                              atividades e demandas




Wednesday, December 12, 12
Desvantagens do modelo Artesanal
Wednesday, December 12, 12
Desvantagens do modelo artesanal

                   Falta de padronização, processos e procedimentos
                   Documentação inexpressiva ou inexistente
                   Falta de planejamento para execução das demandas
                   Desconhecimento dos riscos envolvidos
                   Alto índice de falhas humanas

Wednesday, December 12, 12
Desvantagens do modelo artesanal

                   Baixo índice de disponibilidade dos serviços oferecidos
                   Demora na aplicação de mudanças
                   Demora na correção de problemas
                   Equipe desmotivada
                   Atividades repetitivas e desgastantes

Wednesday, December 12, 12
Desvantagens do modelo artesanal

                   Equipe sempre sobrecarregada
                   Alta rotatividade da equipe
                   Alto custo com horas extras
                   Profissionais insatisfeiros
                   Baixa credibilidade perante clientes e gestores

Wednesday, December 12, 12
Como resolvo
       estes problemas?
       Como obtenho controle e
       padronização em meu
       ambiente ?



Wednesday, December 12, 12
Gerência de Configurações
Wednesday, December 12, 12
Padronização


Wednesday, December 12, 12
Automatização


Wednesday, December 12, 12
Controle


Wednesday, December 12, 12
Integridade


Wednesday, December 12, 12
Desempenho


Wednesday, December 12, 12
Agilidade nas mudanças


Wednesday, December 12, 12
Puppet
          Ferramenta de nova geração
          que implementa gerência de
             configurações para seu
                  ambiente.



Wednesday, December 12, 12
Visão Rápida
                   Framework Open Source para Gerência de Configurações
                   Oferece um conjunto de ferramentas para manipular estados
                   Nos permite trabalhar a Infraestrutura como código
                   Oferece uma linguagem declarativa para descrever
                   configurações de sistemas e serviços
                   Não é programação

Wednesday, December 12, 12
Sobre a ferramenta

                   Criado por Luke Kaines (CEO e Fundador Puppetlabs)

                   Empresa PuppetLabs mantém a Ferramenta

                   Ferramenta OpenSource (Licença Apache)

                   Empresa oferece Suporte Corporativo e Versão Enterpris

                   Empresa recebeu investimentos da VMWARE, GOOGLE e CISCO



Wednesday, December 12, 12
Sobre a ferramenta

                   Criado por Luke Kaines (CEO e Fundador Puppetlabs)

                   Empresa PuppetLabs mantém a Ferramenta

                   Ferramenta OpenSource (Licença Apache)

                   Empresa oferece Suporte Corporativo e Versão Enterpris

                   Empresa recebeu investimentos da VMWARE, GOOGLE e CISCO



Wednesday, December 12, 12
Feito por um SysAdmin para SysAdmins




Wednesday, December 12, 12
Desenhada para uso DevOps




Wednesday, December 12, 12
Visão DevOps
Wednesday, December 12, 12
Desenvolvedor que lançar novas
                  versões de forma rápida e eficiente
                Sysadmin quer manter o parque integro e funcionando
                          minimizando riscos de incidentes




Wednesday, December 12, 12
Especificações e Características

                   Escrito em Ruby
                   Extensível usando código Ruby
                   Funciona em modo Autônomo (serverless)
                   Funciona em modo Cliente/Servidor usando API REST
                   Provê comunicação segura usando SSL
                   Suporte a 19 sistemas operacionais (Linux, Unix, BSD...)

Wednesday, December 12, 12
Quem usa o Puppet?




Wednesday, December 12, 12
Arquitetura
                             Como funciona o Puppet?




Wednesday, December 12, 12
Resource Abstraction Layer




Wednesday, December 12, 12
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, December 12, 12
Instale Pacote X


Wednesday, December 12, 12
Remova usuário Z


Wednesday, December 12, 12
(Re)inicie serviço Y


Wednesday, December 12, 12
Tratamento de
                  Informações
       O grande diferencial do Puppet
        é a forma como ele trata as
         informações de seus nodes




Wednesday, December 12, 12
Tratamento de informações

                   No Puppet tudo é modelado e tratado como ‘dado’
                   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, December 12, 12
Os dados são inseridos em
                catálogos para serem utilizados
                    O catálogo é processado pelo node e as
               modificações são aplicadas de acordo com o que foi
                                  declarado.


Wednesday, December 12, 12
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, December 12, 12
Idempotência


Wednesday, December 12, 12
A idempotência é a propriedade que algumas
                 operações têm de poderem ser aplicadas várias
               vezes sem que o valor do resultado se altere após a
                       aplicação inicial. (fonte: wikipedia)




Wednesday, December 12, 12
Puppet visão geral
                                                 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, December 12, 12
O que acontece quando adicionamos
                    um node ao nosso parque?



Wednesday, December 12, 12
Adicionando node ao parque

                             ZABBIX
                     NGINX

                                              JBOSS


                                      POSTGRESQL


                             MEMCACHED




Wednesday, December 12, 12
Adicionando node ao parque

                              ZABBIX
                     NGINX

                                               JBOSS


                                       POSTGRESQL


                              MEMCACHED


          Adicionar um novo node representa N mudanças
Wednesday, December 12, 12
Adicionando node ao parque
                                                       sysadmin-utils
                              ZABBIX                    zabbix-agent
                     NGINX
                                                           ntpconf
                                                           locales
                                               JBOSS
                                                            hosts
                                                            users
                                       POSTGRESQL         localmta
                                                            smtpd
                                                            vimrc
                              MEMCACHED
                                                       backup-agent
                                                         apt-repos


Wednesday, December 12, 12
Como o Puppet pode ajudar?

                   Automatizando todo o seu ambiente
                   Provendo maior produtividade com menor esforço
                   Padronizando seus nodes logo após a criação e instalação
                   Modificando configurações de forma controlada
                   Mantendo o estado declarado para cada node/instância

Wednesday, December 12, 12
Insira o Puppet na imagem de
                            instalação de seus nodes.



Wednesday, December 12, 12
Pare de administrar e começe a
                     desenvolver sua infra


Wednesday, December 12, 12
Não tenha medo de realizar
                      atualizações, o puppet faz pra você!




Wednesday, December 12, 12
Você pode fazer deploy de sua APP
                             Você pode controlar a versão de sua APP




Wednesday, December 12, 12
Como é o funcionamento do Puppet em Rede?

Wednesday, December 12, 12
Puppet Master

        8140 TCP                             8139 TCP
          Client                  SSL          Server
        puppetd -t                           puppetrun

                             Puppet Client



                   Puppet Visão em Rede
Wednesday, December 12, 12
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, December 12, 12
Fluxo Cliente/Servidor
                 Instalação do
                     node




Wednesday, December 12, 12
Fluxo Cliente/Servidor
                 Instalação do   Inicialização
                     node         do puppet




Wednesday, December 12, 12
Fluxo Cliente/Servidor
                 Instalação do   Inicialização   Geração de
                     node         do puppet      Certificado




Wednesday, December 12, 12
Fluxo Cliente/Servidor
                 Instalação do   Inicialização   Geração de
                     node         do puppet      Certificado



                                                  Envio de
                                                 Certificado




Wednesday, December 12, 12
Fluxo Cliente/Servidor
                 Instalação do    Inicialização   Geração de
                     node          do puppet      Certificado



                                 Master Assina     Envio de
                                  Certificado      Certificado




Wednesday, December 12, 12
Fluxo Cliente/Servidor
                 Instalação do    Inicialização   Geração de
                     node          do puppet      Certificado



                      Agente     Master Assina     Envio de
                    Sincroniza    Certificado      Certificado




Wednesday, December 12, 12
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, December 12, 12
O agente se comunica com o
                               master a cada N minutos




Wednesday, December 12, 12
E quais os recursos disponíveis para
                         gerenciar sistemas e serviços?
                             Como manipulo estados do meu ambiente?




Wednesday, December 12, 12
Funcionalidades do Puppet

                   Resource Types
                   Parâmetros e Meta-parâmetros
                   Templates e Definições
                   Classes e Módulos
                   Funções e Condicionais

Wednesday, December 12, 12
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, December 12, 12
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, December 12, 12
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, December 12, 12
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, December 12, 12
Exemplos
Wednesday, December 12, 12
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, December 12, 12
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, December 12, 12
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, December 12, 12
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, December 12, 12
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, December 12, 12
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, December 12, 12
Templates
   Trecho do template postfix/main.cf.erb

     myorigin = <%= hostname %>
     mydestination = $myhostname, ..., localhost, <%= fqdn %>



   Substituição de variáveis por fatos

      myorigin = servidor.dominio
      mydestination = $myhostname, ..., localhost, servidor.dominio



Wednesday, December 12, 12
Use uma base class para
                              padronizar seus nodes


Wednesday, December 12, 12
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, December 12, 12
Como declaro um node e como
                   empurro uma configuração?


Wednesday, December 12, 12
Declarando um node
           node “servidor.dominio” {
             include linux-server
             include module
           }


           node “balancer.dominio” {
             include linux-server
             include apache
             include php5
             include mysql
           }

Wednesday, December 12, 12
E como acompanho mudanças?
Wednesday, December 12, 12
Puppet Dashboard




Wednesday, December 12, 12
Wednesday, December 12, 12
Posso fazer mudanças em
                                    tempo real?


Wednesday, December 12, 12
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, December 12, 12
Qual o resultado concreto?
Wednesday, December 12, 12
Documentação Instantânea




Wednesday, December 12, 12
Restore e backup de mudanças




Wednesday, December 12, 12
Processos bem definidos




Wednesday, December 12, 12
Ambiente Padronizado




Wednesday, December 12, 12
Tarefas Automatizadas




Wednesday, December 12, 12
Quais os Benefícios Reais?
Wednesday, December 12, 12
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, December 12, 12
Tecnologia trabalhando para você




Wednesday, December 12, 12
Puppet & Cloud IaaS
                      Cloud Tools (FOSS)   Cloud Hosts




                       Ganeti


Wednesday, December 12, 12
Boas Práticas
Wednesday, December 12, 12
Use API e recursos do fornecedor
                  seja na nuvem, seja em hypervisor.



Wednesday, December 12, 12
Insira o Puppet nos templates de seu
                            Hypervisor



Wednesday, December 12, 12
Desenvolva sua Infra


Wednesday, December 12, 12
Versione suas configurações



Wednesday, December 12, 12
Reaproveite Código


Wednesday, December 12, 12
GitHub & PuppetForge


Wednesday, December 12, 12
Pesquise!


Wednesday, December 12, 12
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, December 12, 12
Puppet Labs
Wednesday, December 12, 12
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, December 12, 12
Perguntas?
Wednesday, December 12, 12
twitter @gutocarvalho
        e-mail gutocarvalho@gmail.com
         slides slideshare.com/gutocarvalho
            blog gutocarvalho.net
           code github.com/gutocarvalho




                               Obrigado!
Wednesday, December 12, 12

Más contenido relacionado

Similar a Palestra Puppet Hora Livre

Apresentação Active Directory na V Semana de Tecnologia FATEC Cruzeiro
Apresentação Active Directory na V Semana de Tecnologia FATEC CruzeiroApresentação Active Directory na V Semana de Tecnologia FATEC Cruzeiro
Apresentação Active Directory na V Semana de Tecnologia FATEC CruzeiroSouza Natália
 
Instalação do Windows Server 2008
Instalação do Windows Server 2008Instalação do Windows Server 2008
Instalação do Windows Server 2008Guilherme Lima
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosYros
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dadosComo lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dadospichiliani
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develJose Augusto Carvalho
 
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...GBanin
 
Espelhamento de Discos (Raid1) Local e Remoto - TchêLinux Uruguaiana
Espelhamento de Discos (Raid1) Local e Remoto - TchêLinux UruguaianaEspelhamento de Discos (Raid1) Local e Remoto - TchêLinux Uruguaiana
Espelhamento de Discos (Raid1) Local e Remoto - TchêLinux UruguaianaThiago Finardi
 
Engenharia de Software I - Aula 13
Engenharia de Software I - Aula 13Engenharia de Software I - Aula 13
Engenharia de Software I - Aula 13Alessandro Almeida
 
Controlador de Domínio Open Source
Controlador de Domínio Open SourceControlador de Domínio Open Source
Controlador de Domínio Open SourceRicardo Pinheiro
 
Espelhamento de discos RAID1 - Thiago Finardi - TchêLinux Uruguaiana
Espelhamento de discos RAID1 - Thiago Finardi - TchêLinux UruguaianaEspelhamento de discos RAID1 - Thiago Finardi - TchêLinux Uruguaiana
Espelhamento de discos RAID1 - Thiago Finardi - TchêLinux UruguaianaTchelinux
 
NITECH - EVENT STORM
NITECH - EVENT STORM NITECH - EVENT STORM
NITECH - EVENT STORM NitechAcademy
 
NITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNitechAcademy
 
Como fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratarComo fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratarKleber Carvalho
 

Similar a Palestra Puppet Hora Livre (20)

Apresentação Active Directory na V Semana de Tecnologia FATEC Cruzeiro
Apresentação Active Directory na V Semana de Tecnologia FATEC CruzeiroApresentação Active Directory na V Semana de Tecnologia FATEC Cruzeiro
Apresentação Active Directory na V Semana de Tecnologia FATEC Cruzeiro
 
Business model
Business modelBusiness model
Business model
 
Instalação do Windows Server 2008
Instalação do Windows Server 2008Instalação do Windows Server 2008
Instalação do Windows Server 2008
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dadosComo lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dados
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
Palestra Teched Brasil 2010 - Sessão SRV307 - Dicas e Truques de Windows Serv...
 
Aula 1 active diretory - 04082012
Aula 1   active diretory - 04082012Aula 1   active diretory - 04082012
Aula 1 active diretory - 04082012
 
Espelhamento de Discos (Raid1) Local e Remoto - TchêLinux Uruguaiana
Espelhamento de Discos (Raid1) Local e Remoto - TchêLinux UruguaianaEspelhamento de Discos (Raid1) Local e Remoto - TchêLinux Uruguaiana
Espelhamento de Discos (Raid1) Local e Remoto - TchêLinux Uruguaiana
 
TCC Rhamon
TCC RhamonTCC Rhamon
TCC Rhamon
 
Webinar RHEV na IT Web
Webinar RHEV na IT WebWebinar RHEV na IT Web
Webinar RHEV na IT Web
 
2016 dell-networking
2016 dell-networking2016 dell-networking
2016 dell-networking
 
Engenharia de Software I - Aula 13
Engenharia de Software I - Aula 13Engenharia de Software I - Aula 13
Engenharia de Software I - Aula 13
 
Controlador de Domínio Open Source
Controlador de Domínio Open SourceControlador de Domínio Open Source
Controlador de Domínio Open Source
 
ArcServe in the AWS Cloud - part II
ArcServe in the AWS Cloud - part IIArcServe in the AWS Cloud - part II
ArcServe in the AWS Cloud - part II
 
Espelhamento de discos RAID1 - Thiago Finardi - TchêLinux Uruguaiana
Espelhamento de discos RAID1 - Thiago Finardi - TchêLinux UruguaianaEspelhamento de discos RAID1 - Thiago Finardi - TchêLinux Uruguaiana
Espelhamento de discos RAID1 - Thiago Finardi - TchêLinux Uruguaiana
 
NITECH - EVENT STORM
NITECH - EVENT STORM NITECH - EVENT STORM
NITECH - EVENT STORM
 
NITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdf
 
Como fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratarComo fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratar
 

Más de Jose Augusto Carvalho

Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLJose Augusto Carvalho
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develJose Augusto Carvalho
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Jose Augusto Carvalho
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Jose Augusto Carvalho
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesJose Augusto Carvalho
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Jose Augusto Carvalho
 

Más de Jose Augusto Carvalho (15)

Trabalhando com Módulos no Puppet
Trabalhando com Módulos no PuppetTrabalhando com Módulos no Puppet
Trabalhando com Módulos no Puppet
 
Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
 
Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISL
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Conhecendo o Wordpress
Conhecendo o WordpressConhecendo o Wordpress
Conhecendo o Wordpress
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar ConfiguraçõesOficina Puppet - Aprenda a Gerenciar Configurações
Oficina Puppet - Aprenda a Gerenciar Configurações
 
Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)Documentando de forma Ágil (usando dokuwiki)
Documentando de forma Ágil (usando dokuwiki)
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
 

Palestra Puppet Hora Livre

  • 1. Gestão e Automação de Servidores com Puppet Guto Carvalho < gutocarvalho@gmail.com > Campo Grande/MS - 2012/12/12 - Hora Livre Wednesday, December 12, 12
  • 2. Hora Livre - Ano 4 Wednesday, December 12, 12
  • 4. 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, CAIXA Há 2 anos trabalhando com gerência de configurações em ambientes virtualizados e clouds privadas em Brasília Palestrante em eventos como FISL, LATINOWARE, CONSEGI, ENECOMP, FLISOL e CLOUDCONF Wednesday, December 12, 12
  • 5. Plano de Trabalho 05 minutos de apresentação 50 minutos de palestra 10 minutos para perguntas Wednesday, December 12, 12
  • 6. Agenda Administração de servidores e serviços Causas, efeitos e consequências da administração artesanal Um novo caminho com a gerência de configurações Puppet como solução de gerência de configurações Apresentando características e recursos do Puppet Benefícios, resultados concretos e Puppet no Brasil Wednesday, December 12, 12
  • 7. Já ouviu falar do sysadmin? Wednesday, December 12, 12
  • 8. O que faz um sysadmin? Administra servidores e serviços e a infraestrutura de rede Oferece suporte aos desenvolvedores e usuários Sustenta ambiente de desenvolvimento, testes, homol e produção e faz deploy de aplicações Sustenta sistemas estruturantes (DHCP, DNS, PROXY, LDAP, MAIL, IM) Cuida dos ambientes de banco de dados Sustenta, monitora e trabalha para que aplicações e ambientes funcionem Cuida do Backup, lava, passa e faz cafézinho... Wednesday, December 12, 12
  • 12. Visão do Sysadmin Em relação a infraestrutura que ele tem que administra Wednesday, December 12, 12
  • 13. Visão do Sysadmin Em relação ao seu dia-a-dia de trabalho e tratamento de demandas Wednesday, December 12, 12
  • 15. Ferramentas e métodos não tão modernos e nem tão atraentes Wednesday, December 12, 12
  • 16. Desafios do Sysadmin em 2012 Wednesday, December 12, 12
  • 17. Administração de Servidores e Serviços Wednesday, December 12, 12
  • 19. Virt. e seus Benefícios Menor consumo de energia Melhor aproveitamento de espaço físico Melhor aproveitamento de hardware (sem hw ocioso) Maior segurança com isolamento de ambientes Pode-se trabalhar disponibilidade e balanceamento Facilidade de provisionamento e gerenciamento Wednesday, December 12, 12
  • 20. Cloud Computing - Tendência Wednesday, December 12, 12
  • 21. Cloud e seus Benefícios Hiper escalável Rápida e elástica Abstração de hardware Infraestrutura dinâmica Alta disponibilidade Investimento atraente para projetos emergentes Wednesday, December 12, 12
  • 22. O crescimento do seu parque é inevitável Poucas máquinas físicas podem ser tornar dezenas, centenas ou milhares de nodes em poucos meses. Wednesday, December 12, 12
  • 23. Como Administrar 500 VM’s? Wednesday, December 12, 12
  • 24. Ambiente híbrido e complexo Servidores Linux Debian 5.0 e 6.0 em 32 e 64 bits Servidores Linux Centos 5 e Centos 6 em 32 e 64 bits Servidores RHEL 4, 5 e 6 em 64 bits FreeBSD, OpenBSD e OSX Servidores Windows 2003 e 2008 Wednesday, December 12, 12
  • 26. Vale a pena insistir? Wednesday, December 12, 12
  • 27. Administação Host a Host? Wednesday, December 12, 12
  • 28. Acesso Secure Shell (ssh) em loop? Wednesday, December 12, 12
  • 30. Será que o modelo artesanal escala? Wednesday, December 12, 12
  • 31. Quantos SysAdmins são necessários para administrar 500 servidores? Wednesday, December 12, 12
  • 32. Qual a velocidade nas mudanças em seu ambiente? Wednesday, December 12, 12
  • 33. Qual a probabilidade de falhas decorrentes de mudanças manuais? Wednesday, December 12, 12
  • 34. Você consegue manter todo o seu ambiente padronizado? Wednesday, December 12, 12
  • 35. Trabalhar fora de expediente para dar conta das demandas se tornou regra ao invés de exceção? Wednesday, December 12, 12
  • 36. Seu custo com equipes técnicas está aumentando devido aos trabalho fora de expediente? Wednesday, December 12, 12
  • 37. Você começa a ter a sensação de estar sendo engolido por seu ambiente? Wednesday, December 12, 12
  • 38. Está difícil colocar suas configurações nos trilhos? Wednesday, December 12, 12
  • 39. Administração artesanal não escala, não importa quantas pessoas estejam envolvidas No entanto, é possível enxergar as causas, efeitos e consequências geradas por um modelo equivocado de administração Wednesday, December 12, 12
  • 40. Você vai começar a perceber que Fica mais difícil encontrar problemas em seu parque Não é mais tão simples manter as coisas funcionando É quase impossível manter o parque padronizado Sua produtividade diminui a medida que o ambiente cresce Você não consegue mais documentar e planejar mudanças Wednesday, December 12, 12
  • 41. Você vai começar a perceber que Você não consegue mais entregar demandas no tempo acordado Sua equipe está sempre exausta e desmotivada Sua equipe não tem mais direito a finais de semana, feriados Você não tem tempo para pensar em segurança e performance Uma simples atualização de software pode levar semanas Wednesday, December 12, 12
  • 43. A maioria das demandas de um sysdmin envolve execução de tarefas repetitivas Wednesday, December 12, 12
  • 45. 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 Wednesday, December 12, 12
  • 46. Remover Nagios e Instalar Zabbix em 500 máquinas Wednesday, December 12, 12
  • 47. Instalação de Zabbix-Agent Acessar o servidor por ssh e se tornar root Configurar repositório YUM, APT ou Ports Instalar pacote zabbix-agent Remover pacote nagios Ajustar arquivo de configuração Zabbix Reiniciar Zabbix Agent Wednesday, December 12, 12
  • 48. Instalação de Zabbix-Agent 10 minutos por máquina 5000 minutos ou 83.3 horas de trabalho repetitivo 10 dias para instalar o zabbix-agent no parque 1 analista alocado exclusivamente para isto 8HPD Considere re-trabalho devido ao modelo manual Wednesday, December 12, 12
  • 49. Criar o usuário do novo sysadmin em 500 máquinas Wednesday, December 12, 12
  • 50. Criação de usuário para sysadmin Acessar o servidor por ssh Se tornar root Criar usuário Setar senha temporária Configurar privilégios no sudo Wednesday, December 12, 12
  • 51. Instalação de Zabbix-Agent 7 minutos por máquina 3500 minutos ou 58.3 horas de trabalho repetitivo 7 dias para criar o usuário no parque 1 analista alocado exclusivamente para isto 8HPD Considere re-trabalho devido ao modelo manual Considere que o usuário vai ter que trocar a senha nas 500 máquinas Wednesday, December 12, 12
  • 52. Mas eu não posso usar LDAP para autenticar meus usuários, não seria melhor? Wednesday, December 12, 12
  • 53. Autenticação LDAP em Debian Você precisa manter as configurações do PAM e módulo LDAP Arquivos a serem mantidos ldap.conf, nsswitch.conf, libnss-ldap.conf Pacotes a serem mantidos ldap-utils, libpam-ldap, libnss-ldap e nscd Você ainda precisa ter um usuário coringa em caso de problema no LDAP Wednesday, December 12, 12
  • 54. Como alterar vários arquivos de configuração em 500 máquinas em um caso de mudança na estrutura da árvore LDAP? Wednesday, December 12, 12
  • 55. Remover usuários antigos é tão complicado quanto criar novos Wednesday, December 12, 12
  • 56. Rastreamento de mudanças e falta de padrões Wednesday, December 12, 12
  • 57. Se você pedir para dois sysadmins instalarem um servidor você terá dois ambientes diferentes Wednesday, December 12, 12
  • 59. O que devemos padronizar? DNS (resolv.conf) Hosts e Hostnames Usuários e Privilégios Repositórios NTP (data/hora) Logs e Autenticação Pacotes Sysadmins Firewall Rotas Hardening, Tuning Wednesday, December 12, 12
  • 60. Falta de processos e procedimentos de execução de atividades e demandas Wednesday, December 12, 12
  • 61. Desvantagens do modelo Artesanal Wednesday, December 12, 12
  • 62. Desvantagens do modelo artesanal Falta de padronização, processos e procedimentos Documentação inexpressiva ou inexistente Falta de planejamento para execução das demandas Desconhecimento dos riscos envolvidos Alto índice de falhas humanas Wednesday, December 12, 12
  • 63. Desvantagens do modelo artesanal Baixo índice de disponibilidade dos serviços oferecidos Demora na aplicação de mudanças Demora na correção de problemas Equipe desmotivada Atividades repetitivas e desgastantes Wednesday, December 12, 12
  • 64. Desvantagens do modelo artesanal Equipe sempre sobrecarregada Alta rotatividade da equipe Alto custo com horas extras Profissionais insatisfeiros Baixa credibilidade perante clientes e gestores Wednesday, December 12, 12
  • 65. Como resolvo estes problemas? Como obtenho controle e padronização em meu ambiente ? Wednesday, December 12, 12
  • 73. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente. Wednesday, December 12, 12
  • 74. Visão Rápida Framework Open Source para Gerência de Configurações Oferece um conjunto de ferramentas para manipular estados Nos permite trabalhar a Infraestrutura como código Oferece uma linguagem declarativa para descrever configurações de sistemas e serviços Não é programação Wednesday, December 12, 12
  • 75. Sobre a ferramenta Criado por Luke Kaines (CEO e Fundador Puppetlabs) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Empresa oferece Suporte Corporativo e Versão Enterpris Empresa recebeu investimentos da VMWARE, GOOGLE e CISCO Wednesday, December 12, 12
  • 76. Sobre a ferramenta Criado por Luke Kaines (CEO e Fundador Puppetlabs) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Empresa oferece Suporte Corporativo e Versão Enterpris Empresa recebeu investimentos da VMWARE, GOOGLE e CISCO Wednesday, December 12, 12
  • 77. Feito por um SysAdmin para SysAdmins Wednesday, December 12, 12
  • 78. Desenhada para uso DevOps Wednesday, December 12, 12
  • 80. Desenvolvedor que lançar novas versões de forma rápida e eficiente Sysadmin quer manter o parque integro e funcionando minimizando riscos de incidentes Wednesday, December 12, 12
  • 81. Especificações e Características Escrito em Ruby Extensível usando código Ruby Funciona em modo Autônomo (serverless) Funciona em modo Cliente/Servidor usando API REST Provê comunicação segura usando SSL Suporte a 19 sistemas operacionais (Linux, Unix, BSD...) Wednesday, December 12, 12
  • 82. Quem usa o Puppet? Wednesday, December 12, 12
  • 83. Arquitetura Como funciona o Puppet? Wednesday, December 12, 12
  • 85. 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, December 12, 12
  • 86. Instale Pacote X Wednesday, December 12, 12
  • 87. Remova usuário Z Wednesday, December 12, 12
  • 89. Tratamento de Informações O grande diferencial do Puppet é a forma como ele trata as informações de seus nodes Wednesday, December 12, 12
  • 90. Tratamento de informações No Puppet tudo é modelado e tratado como ‘dado’ 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, December 12, 12
  • 91. Os dados são inseridos em catálogos para serem utilizados O catálogo é processado pelo node e as modificações são aplicadas de acordo com o que foi declarado. Wednesday, December 12, 12
  • 92. 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, December 12, 12
  • 94. A idempotência é a propriedade que algumas operações têm de poderem ser aplicadas várias vezes sem que o valor do resultado se altere após a aplicação inicial. (fonte: wikipedia) Wednesday, December 12, 12
  • 95. Puppet visão geral 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, December 12, 12
  • 96. O que acontece quando adicionamos um node ao nosso parque? Wednesday, December 12, 12
  • 97. Adicionando node ao parque ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Wednesday, December 12, 12
  • 98. Adicionando node ao parque ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudanças Wednesday, December 12, 12
  • 99. Adicionando node ao parque sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-repos Wednesday, December 12, 12
  • 100. Como o Puppet pode ajudar? Automatizando todo o seu ambiente Provendo maior produtividade com menor esforço Padronizando seus nodes logo após a criação e instalação Modificando configurações de forma controlada Mantendo o estado declarado para cada node/instância Wednesday, December 12, 12
  • 101. Insira o Puppet na imagem de instalação de seus nodes. Wednesday, December 12, 12
  • 102. Pare de administrar e começe a desenvolver sua infra Wednesday, December 12, 12
  • 103. Não tenha medo de realizar atualizações, o puppet faz pra você! Wednesday, December 12, 12
  • 104. Você pode fazer deploy de sua APP Você pode controlar a versão de sua APP Wednesday, December 12, 12
  • 105. Como é o funcionamento do Puppet em Rede? Wednesday, December 12, 12
  • 106. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em Rede Wednesday, December 12, 12
  • 107. 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, December 12, 12
  • 108. Fluxo Cliente/Servidor Instalação do node Wednesday, December 12, 12
  • 109. Fluxo Cliente/Servidor Instalação do Inicialização node do puppet Wednesday, December 12, 12
  • 110. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Wednesday, December 12, 12
  • 111. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de Certificado Wednesday, December 12, 12
  • 112. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado Certificado Wednesday, December 12, 12
  • 113. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado Certificado Wednesday, December 12, 12
  • 114. 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, December 12, 12
  • 115. O agente se comunica com o master a cada N minutos Wednesday, December 12, 12
  • 116. E quais os recursos disponíveis para gerenciar sistemas e serviços? Como manipulo estados do meu ambiente? Wednesday, December 12, 12
  • 117. Funcionalidades do Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e Condicionais Wednesday, December 12, 12
  • 118. 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, December 12, 12
  • 119. 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, December 12, 12
  • 120. 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, December 12, 12
  • 121. 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, December 12, 12
  • 123. 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, December 12, 12
  • 124. 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, December 12, 12
  • 125. 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, December 12, 12
  • 126. 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, December 12, 12
  • 127. 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, December 12, 12
  • 128. 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, December 12, 12
  • 129. Templates Trecho do template postfix/main.cf.erb myorigin = <%= hostname %> mydestination = $myhostname, ..., localhost, <%= fqdn %> Substituição de variáveis por fatos myorigin = servidor.dominio mydestination = $myhostname, ..., localhost, servidor.dominio Wednesday, December 12, 12
  • 130. Use uma base class para padronizar seus nodes Wednesday, December 12, 12
  • 131. 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, December 12, 12
  • 132. Como declaro um node e como empurro uma configuração? Wednesday, December 12, 12
  • 133. Declarando um node node “servidor.dominio” { include linux-server include module } node “balancer.dominio” { include linux-server include apache include php5 include mysql } Wednesday, December 12, 12
  • 134. E como acompanho mudanças? Wednesday, December 12, 12
  • 137. Posso fazer mudanças em tempo real? Wednesday, December 12, 12
  • 138. 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, December 12, 12
  • 139. Qual o resultado concreto? Wednesday, December 12, 12
  • 141. Restore e backup de mudanças Wednesday, December 12, 12
  • 145. Quais os Benefícios Reais? Wednesday, December 12, 12
  • 146. 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, December 12, 12
  • 147. Tecnologia trabalhando para você Wednesday, December 12, 12
  • 148. Puppet & Cloud IaaS Cloud Tools (FOSS) Cloud Hosts Ganeti Wednesday, December 12, 12
  • 150. Use API e recursos do fornecedor seja na nuvem, seja em hypervisor. Wednesday, December 12, 12
  • 151. Insira o Puppet nos templates de seu Hypervisor Wednesday, December 12, 12
  • 157. 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, December 12, 12
  • 159. 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, December 12, 12
  • 161. twitter @gutocarvalho e-mail gutocarvalho@gmail.com slides slideshare.com/gutocarvalho blog gutocarvalho.net code github.com/gutocarvalho Obrigado! Wednesday, December 12, 12