Prestação de serviços em:                  Baseados em:
      - Consultoria - Desenvolvimento          - Softwares Livres
      - Suporte     - Soluções e Aplicativos   - Open Source
      - Projetos    - Treinamento              - Padrões Abertos



        Para construir sua infraestrutura de TI e criar novas soluções de negócio.

Tuesday, August 7, 12
Gerência de Configurações em Cloud
                        Puppet em ambientes IaaS
                         José Augusto (Guto) Carvalho
                            jose.carvalho@4linux.com.br




Tuesday, August 7, 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

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


Tuesday, August 7, 12
Puppet em IaaS
Tuesday, August 7, 12
Plano de Trabalho


                        40 minutos de apresentação
                        5 minutos para perguntas




Tuesday, August 7, 12
Agenda

                        Gerência de Configurações
                        Infraestrutura como Código
                        Puppet como solução de Gerência de Configurações
                        Puppet Arquitetura, Funcionamento e Recursos
                        Perguntas


Tuesday, August 7, 12
Cloud Computing - Tendência
Tuesday, August 7, 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
Tuesday, August 7, 12
Provisionamento
            Podemos criar 500 VM’s em
                 poucos minutos




Tuesday, August 7, 12
Como Administrar 500 VM’s?



Tuesday, August 7, 12
Configuração Manual?



Tuesday, August 7, 12
Acesso Secure Shell (ssh)?



Tuesday, August 7, 12
Host a Host?



Tuesday, August 7, 12
Quantos SysAdmins são necessários
                         para administrar 500 servidores?




Tuesday, August 7, 12
Qual a velocidade nas
                        mudanças em seu ambiente?


Tuesday, August 7, 12
Qual a probabilidade de falhas
                        decorrentes de mudanças manuais?




Tuesday, August 7, 12
Você consegue manter todo o
                         seu ambiente padronizado?


Tuesday, August 7, 12
Seu custo com manutenção e
                   equipes técnicas está aumentando?



Tuesday, August 7, 12
Está difícil colocar suas configurações nos trilhos?

Tuesday, August 7, 12
Como resolver isto?
                              Como obtenho controle e
                          padronização em meu ambiente ?




Tuesday, August 7, 12
Gerência de Configurações
Tuesday, August 7, 12
Padronização


Tuesday, August 7, 12
Automatização


Tuesday, August 7, 12
Controle


Tuesday, August 7, 12
Integridade


Tuesday, August 7, 12
Desempenho


Tuesday, August 7, 12
Agilidade nas mudanças


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



Tuesday, August 7, 12
Visão Rápida

                        Infraestrutura como código
                        Pare de administrar e comece a desenvolver sua infra
                        Reuse código para gerenciar seu parque com facilidade
                        Linguagem declarativa para descrever configurações (DSL)


Tuesday, August 7, 12
Sobre a ferramenta
                        Suporte a Linux, BSDs, Solaris e Windows
                        Criado por Luke Kaines (CEO e Fundador)
                        Empresa PuppetLabs mantém a Ferramenta
                        Ferramenta OpenSource (Licença Apache)
                        Recebeu grandes investimentos
                        Empresa oferece Suporte e Versão Enterprise
Tuesday, August 7, 12
Feito por um SysAdmin para SysAdmins




Tuesday, August 7, 12
Eficiente para uso DevOps




Tuesday, August 7, 12
Especificações
                        Escrito em Ruby
                        Extensível usando código Ruby
                        Funciona em modo Autônomo (serverless)
                        Funciona em modo Cliente/Servidor
                        RESTful API
                        Comunicação segura (SSL Certificate)
Tuesday, August 7, 12
Cases Puppet




Tuesday, August 7, 12
Arquitetura
                        Como funciona o Puppet?




Tuesday, August 7, 12
Resource Abstraction Layer
                                  (RAL)



Tuesday, August 7, 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

Tuesday, August 7, 12
Instale Pacote X


Tuesday, August 7, 12
Remova usuário Z


Tuesday, August 7, 12
(Re)inicie serviço Y


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




Tuesday, August 7, 12
Tratamento de informações

                        No Puppet tudo é modelado e tratado como ‘dados’
                        O estado atual de um node (servidor) é um dado
                        Um pacote instalado em um node é um dado
                        Um usuário em um servidor é um dado


Tuesday, August 7, 12
Os dados são inseridos em
                             catálogos pelo master
                        O catálogo é processado pelo node e as modificações
                         são aplicadas de acordo com o que foi declarado.




Tuesday, August 7, 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

Tuesday, August 7, 12
Idempotência


Tuesday, August 7, 12
Funcionamento
                                                  Puppet           Configurações
       Módulos Estáticos                          Master          Voláteis e Dados

                   Camada de Serviços Estruturantes

                            LDAP            DNS         MONIT   SYSLOG
                    Camada de Aplicação

                            JBOSS         APACHE       MYSQL    PGSQL

                                               Puppet Agents
Tuesday, August 7, 12
Puppet Master

         8140 TCP                              8139 TCP
           Client                   SSL          Server
         puppetd -t                            puppetrun

                               Puppet Client



                        Puppet Visão em Rede
Tuesday, August 7, 12
Administração IaaS

                        Administrar uma cloud IaaS não é algo complicado
                        Escalabilidade automática é um recurso fantástico
                        Ter elasticidade é fundamental
                        Criar novos servidores é muito fácil
                        Administrar centenas de nodes? Aqui começa a complicar.

Tuesday, August 7, 12
Quando seu ambiente IaaS começar a crescer demais
                   você vai perceber administrá-lo não é tão simples.




Tuesday, August 7, 12
Adicionando Novos Nodes
                                ZABBIX
                        NGINX

                                                 JBOSS


                                         POSTGRESQL


                                MEMCACHED




Tuesday, August 7, 12
Adicionando Novos Nodes
                                ZABBIX
                        NGINX

                                                 JBOSS


                                         POSTGRESQL


                                MEMCACHED


           Adicionar um novo node representa N mudanças
Tuesday, August 7, 12
Adicionando Novos Nodes
                                                         sysadmin-utils
                                ZABBIX                    zabbix-agent
                        NGINX
                                                             ntpconf
                                                             locales
                                                 JBOSS
                                                              hosts
                                                              users
                                         POSTGRESQL         localmta
                                                              smtpd
                                                              vimrc
                                MEMCACHED
                                                         backup-agent
                                                           apt-repos


Tuesday, August 7, 12
Como o Puppet pode ajudar?

                        Automatizando seu ambiente
                        Gerando maior produtividade com menor esforço
                        Padronizando seus nodes logo após a instalação
                        Modificando configurações de forma controlada


Tuesday, August 7, 12
Insira o Puppet na imagem de
                           instalação de seus nodes.



Tuesday, August 7, 12
Não tenha medo de realizar
                        atualizações, o puppet faz pra você!




Tuesday, August 7, 12
Você pode fazer deploy de sua APP
                        Você pode controlar a versão de sua APP




Tuesday, August 7, 12
Como funciona o modo cliente/servidor?




Tuesday, August 7, 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


Tuesday, August 7, 12
Fluxo Cliente/Servidor
                   Instalação do
                       node




Tuesday, August 7, 12
Fluxo Cliente/Servidor
                   Instalação do     Inicialização
                       node           do puppet




Tuesday, August 7, 12
Fluxo Cliente/Servidor
                   Instalação do     Inicialização   Geração de
                       node           do puppet      Certificado




Tuesday, August 7, 12
Fluxo Cliente/Servidor
                   Instalação do     Inicialização   Geração de
                       node           do puppet      Certificado



                                                      Envio de
                                                     Certificado




Tuesday, August 7, 12
Fluxo Cliente/Servidor
                   Instalação do      Inicialização   Geração de
                       node            do puppet      Certificado



                                     Master Assina     Envio de
                                      Certificado      Certificado




Tuesday, August 7, 12
Fluxo Cliente/Servidor
                   Instalação do      Inicialização   Geração de
                       node            do puppet      Certificado



                          Agente     Master Assina     Envio de
                        Sincroniza    Certificado      Certificado




Tuesday, August 7, 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
Tuesday, August 7, 12
Quais recursos estão disponíveis?




Tuesday, August 7, 12
Recursos do Puppet

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

Tuesday, August 7, 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.


Tuesday, August 7, 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


Tuesday, August 7, 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


Tuesday, August 7, 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

Tuesday, August 7, 12
Exemplos


Tuesday, August 7, 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


Tuesday, August 7, 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”,
            }
Tuesday, August 7, 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”,
            }
Tuesday, August 7, 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
                  }

Tuesday, August 7, 12
Declarando um node
            node “servidor.dominio” {
              include linux-server
              include module
            }


            node “balancer.dominio” {
              include linux-server
              include cyrus::backend
              include postfix::hub
              include haproxy::mailproxy
            }

Tuesday, August 7, 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,



Tuesday, August 7, 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',
                   }
                 }
                 ....
Tuesday, August 7, 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',
         }


Tuesday, August 7, 12
Templates
      Trecho do template postfix/main.cf

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



   Substituição de variáveis por fatos

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



Tuesday, August 7, 12
Como acompanho mudanças?



Tuesday, August 7, 12
Puppet Dashboard




Tuesday, August 7, 12
Posso fazer mudanças em
                               tempo real?


Tuesday, August 7, 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


Tuesday, August 7, 12
Qual o resultado concreto?




Tuesday, August 7, 12
Documentação Instantânea




Tuesday, August 7, 12
Restore e backup de mudanças




Tuesday, August 7, 12
Processos bem definidos




Tuesday, August 7, 12
Ambiente Padronizado




Tuesday, August 7, 12
Tarefas Automatizadas




Tuesday, August 7, 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
Tuesday, August 7, 12
Tecnologia trabalhando para você




Tuesday, August 7, 12
E a compatibilidade?


Tuesday, August 7, 12
Puppet & Cloud IaaS
                        Cloud Tools (FOSS)   Cloud Hosts




                        Ganeti


Tuesday, August 7, 12
Boas Práticas


Tuesday, August 7, 12
Use API do fornecedor


Tuesday, August 7, 12
Desenvolva sua Infra


Tuesday, August 7, 12
Versione suas configurações



Tuesday, August 7, 12
Reaproveite Código


Tuesday, August 7, 12
GitHub & PuppetForge


Tuesday, August 7, 12
Pesquise!


Tuesday, August 7, 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
Tuesday, August 7, 12
4Linux & PuppetLabs
                        1o Parceiro no Brasil

                        Consultores Especializados

                        Cases no Governo Federal

                        Suporte Puppet Enterprise

                        Treinamentos Puppet Master




Tuesday, August 7, 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




Tuesday, August 7, 12
Perguntas?


Tuesday, August 7, 12
4linux na rede                 Contato
                                   Twitter @gutocarvalho
               Twitter @4linuxBR
                                   jose.carvalho@4linux.com.br
               Facebook /4Linux
                                   slideshare.net/gutocarvalho




                              Obrigado!
Tuesday, August 7, 12
Prestação de serviços em:                  Baseados em:
      - Consultoria - Desenvolvimento          - Softwares Livres
      - Suporte     - Soluções e Aplicativos   - Open Source
      - Projetos    - Treinamento              - Padrões Abertos



        Para construir sua infraestrutura de TI e criar novas soluções de negócio.

Tuesday, August 7, 12
Comparando Ferramentas
                        Recursos      Puppet          Chef         CfEngine
                Pull                   Yes            Yes            Yes
                Push                    No            No              No
                Idempotence            Yes            Yes            Yes
                Config Language      Declarative      Ruby         Declarative
                Web UI                 Yes            Yes            Yes
                OS Support         *NIX,Windows   *NIX,Windows   *NIX,Windows
                License              Apache         Apache           GPL
                Company             Puppetlabs      OpsCode        CfEngine
                Cloud                  Yes            Yes            Yes


Tuesday, August 7, 12

IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando Puppet

  • 1.
    Prestação de serviçosem: Baseados em: - Consultoria - Desenvolvimento - Softwares Livres - Suporte - Soluções e Aplicativos - Open Source - Projetos - Treinamento - Padrões Abertos Para construir sua infraestrutura de TI e criar novas soluções de negócio. Tuesday, August 7, 12
  • 2.
    Gerência de Configuraçõesem Cloud Puppet em ambientes IaaS José Augusto (Guto) Carvalho jose.carvalho@4linux.com.br Tuesday, August 7, 12
  • 3.
    whoami Consultor/SysAdmin (LPIC-3) na 4Linux 12 anos de experiência com tecnologias FOSS Blogueiro FOSS há 6 anos no site gutocarvalho.net Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS, MPS/DATAPREV, ITI/PR, CEF, MD/SIPAM, DETRAN/DF Há 2 anos trabalhando com gerência de configurações em ambientes virtualizados e clouds privadas em Brasília Tuesday, August 7, 12
  • 4.
  • 5.
    Plano de Trabalho 40 minutos de apresentação 5 minutos para perguntas Tuesday, August 7, 12
  • 6.
    Agenda Gerência de Configurações Infraestrutura como Código Puppet como solução de Gerência de Configurações Puppet Arquitetura, Funcionamento e Recursos Perguntas Tuesday, August 7, 12
  • 7.
    Cloud Computing -Tendência Tuesday, August 7, 12
  • 8.
    Cloud e seusBenefícios Hiper-escalável Rápida e elástica Abstração de hardware Infraestrutura dinâmica Alta-disponibilidade Investimento atraente Tuesday, August 7, 12
  • 9.
    Provisionamento Podemos criar 500 VM’s em poucos minutos Tuesday, August 7, 12
  • 10.
    Como Administrar 500VM’s? Tuesday, August 7, 12
  • 11.
  • 12.
    Acesso Secure Shell(ssh)? Tuesday, August 7, 12
  • 13.
  • 14.
    Quantos SysAdmins sãonecessários para administrar 500 servidores? Tuesday, August 7, 12
  • 15.
    Qual a velocidadenas mudanças em seu ambiente? Tuesday, August 7, 12
  • 16.
    Qual a probabilidadede falhas decorrentes de mudanças manuais? Tuesday, August 7, 12
  • 17.
    Você consegue mantertodo o seu ambiente padronizado? Tuesday, August 7, 12
  • 18.
    Seu custo commanutenção e equipes técnicas está aumentando? Tuesday, August 7, 12
  • 19.
    Está difícil colocarsuas configurações nos trilhos? Tuesday, August 7, 12
  • 20.
    Como resolver isto? Como obtenho controle e padronização em meu ambiente ? Tuesday, August 7, 12
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
    Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente. Tuesday, August 7, 12
  • 29.
    Visão Rápida Infraestrutura como código Pare de administrar e comece a desenvolver sua infra Reuse código para gerenciar seu parque com facilidade Linguagem declarativa para descrever configurações (DSL) Tuesday, August 7, 12
  • 30.
    Sobre a ferramenta Suporte a Linux, BSDs, Solaris e Windows Criado por Luke Kaines (CEO e Fundador) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Recebeu grandes investimentos Empresa oferece Suporte e Versão Enterprise Tuesday, August 7, 12
  • 31.
    Feito por umSysAdmin para SysAdmins Tuesday, August 7, 12
  • 32.
    Eficiente para usoDevOps Tuesday, August 7, 12
  • 33.
    Especificações Escrito em Ruby Extensível usando código Ruby Funciona em modo Autônomo (serverless) Funciona em modo Cliente/Servidor RESTful API Comunicação segura (SSL Certificate) Tuesday, August 7, 12
  • 34.
  • 35.
    Arquitetura Como funciona o Puppet? Tuesday, August 7, 12
  • 36.
    Resource Abstraction Layer (RAL) Tuesday, August 7, 12
  • 37.
    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 Tuesday, August 7, 12
  • 38.
  • 39.
  • 40.
  • 41.
    Tratamento de Informações O grande diferencial do Puppet é a forma como ele trata as informações de seus nodes Tuesday, August 7, 12
  • 42.
    Tratamento de informações No Puppet tudo é modelado e tratado como ‘dados’ O estado atual de um node (servidor) é um dado Um pacote instalado em um node é um dado Um usuário em um servidor é um dado Tuesday, August 7, 12
  • 43.
    Os dados sãoinseridos em catálogos pelo master O catálogo é processado pelo node e as modificações são aplicadas de acordo com o que foi declarado. Tuesday, August 7, 12
  • 44.
    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 Tuesday, August 7, 12
  • 45.
  • 46.
    Funcionamento Puppet Configurações Módulos Estáticos Master Voláteis e Dados Camada de Serviços Estruturantes LDAP DNS MONIT SYSLOG Camada de Aplicação JBOSS APACHE MYSQL PGSQL Puppet Agents Tuesday, August 7, 12
  • 47.
    Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em Rede Tuesday, August 7, 12
  • 48.
    Administração IaaS Administrar uma cloud IaaS não é algo complicado Escalabilidade automática é um recurso fantástico Ter elasticidade é fundamental Criar novos servidores é muito fácil Administrar centenas de nodes? Aqui começa a complicar. Tuesday, August 7, 12
  • 49.
    Quando seu ambienteIaaS começar a crescer demais você vai perceber administrá-lo não é tão simples. Tuesday, August 7, 12
  • 50.
    Adicionando Novos Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Tuesday, August 7, 12
  • 51.
    Adicionando Novos Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudanças Tuesday, August 7, 12
  • 52.
    Adicionando Novos Nodes sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-repos Tuesday, August 7, 12
  • 53.
    Como o Puppetpode ajudar? Automatizando seu ambiente Gerando maior produtividade com menor esforço Padronizando seus nodes logo após a instalação Modificando configurações de forma controlada Tuesday, August 7, 12
  • 54.
    Insira o Puppetna imagem de instalação de seus nodes. Tuesday, August 7, 12
  • 55.
    Não tenha medode realizar atualizações, o puppet faz pra você! Tuesday, August 7, 12
  • 56.
    Você pode fazerdeploy de sua APP Você pode controlar a versão de sua APP Tuesday, August 7, 12
  • 57.
    Como funciona omodo cliente/servidor? Tuesday, August 7, 12
  • 58.
    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 Tuesday, August 7, 12
  • 59.
    Fluxo Cliente/Servidor Instalação do node Tuesday, August 7, 12
  • 60.
    Fluxo Cliente/Servidor Instalação do Inicialização node do puppet Tuesday, August 7, 12
  • 61.
    Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Tuesday, August 7, 12
  • 62.
    Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de Certificado Tuesday, August 7, 12
  • 63.
    Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado Certificado Tuesday, August 7, 12
  • 64.
    Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado Certificado Tuesday, August 7, 12
  • 65.
    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 Tuesday, August 7, 12
  • 66.
    Quais recursos estãodisponíveis? Tuesday, August 7, 12
  • 67.
    Recursos do Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e Condicionais Tuesday, August 7, 12
  • 68.
    Puppet Resource Types Arquivos e Diretórios Yum Repos Usuários Augeas Alias Hosts Pacotes SSH Serviços Cron O puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo. Tuesday, August 7, 12
  • 69.
    Resource Type: Packages Suporte a 23 tipos de provedores de pacotes Faz a abstração do OS Declare se o pacote deve estar presente ou ausente Declare se o pacote deve sempre estar em sua última versão Tuesday, August 7, 12
  • 70.
    Resource Type: Services Suporta 11 tipos de sistemas INIT para inicializar serviços Declare se um serviço deve estar sempre rodando Declare se um serviço deve ser carregado no boot Declare se um serviço depende de um pacote ou arquivo Tuesday, August 7, 12
  • 71.
    Resource Type: File Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksums Tuesday, August 7, 12
  • 72.
  • 73.
    Instala, Configura eInicia debian-way # aptitude install apache2 # update-rc.d -f apache2 defaults # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start Tuesday, August 7, 12
  • 74.
    Instala, Configura eInicia package { 'apache2': ensure => present, }   service { 'apache2': ensure => running, enable => true, } file { 'httpd.conf': path => “/etc/apache2/httpd.conf”, source => “/etc/puppet/files/httpd.conf”, } Tuesday, August 7, 12
  • 75.
    Instala, Configura eInicia 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”, } Tuesday, August 7, 12
  • 76.
    Base Class class linux-server { include sysadmin-utils include zabbix-agent include ntpconf include locales include hosts include users include localmta include vimrc include backup-agent include apt-repos } Tuesday, August 7, 12
  • 77.
    Declarando um node node “servidor.dominio” { include linux-server include module } node “balancer.dominio” { include linux-server include cyrus::backend include postfix::hub include haproxy::mailproxy } Tuesday, August 7, 12
  • 78.
    Variáveis e Fatos Fatos (facter) domain => hacklab, Variáveis fqdn => puppetmaster.hacklab, hostname => puppetmaster, vimpackage => vim-puppet, interfaces => eth0,eth1,lo, ipaddress_eth0 => 10.0.2.15, apacheservice => apache2, ipaddress_eth1 => 192.168.56.150, ipaddress_lo => 127.0.0.1, ntpconfrhel => ntp.conf.rhel, lsbdistid => debian, lsbdistrelease => 6.0.5, Tuesday, August 7, 12
  • 79.
    Condicionais case $operatingsystem { CentOS,RedHat: { $package_name = 'ntp', $service_name = 'ntpd', $conf_file = 'ntp.conf.el', } Debian,Ubuntu: { $package_name = 'ntp', $service_name = 'ntp', $conf_file = 'ntp.conf.debian', } } .... Tuesday, August 7, 12
  • 80.
    Definições proxy::squid { 'ProxyFilial' : http_port => '3128', squid_mode => 'transparent', squid_hostname => 'proxy.4linux', cache_mem => '2 GB', maximum_object_size_in_memory => '6 MB', maximum_object_size => '128 MB', memory_replacement_policy => 'heap GDSF', cache_replacement_policy => 'heap LFUDA', cache_dir => 'aufs /var/spool/squid 1024 16 256', cache_mgr => 'monitora@4linux.com.br', cache_effective_user => 'proxy', cache_effective_group => 'proxy', dns_nameservers => '127.0.0.1 10.61.12.2 172.16.1.1', ips_squid => '127.0.0.1 192.168.12.3', } Tuesday, August 7, 12
  • 81.
    Templates Trecho do template postfix/main.cf myorigin = <%= hostname %> mydestination = $myhostname, ..., localhost, <%= fqdn %> Substituição de variáveis por fatos myorigin = servidor.dominio mydestination = $myhostname, ..., localhost, servidor.dominio Tuesday, August 7, 12
  • 82.
  • 83.
  • 84.
    Posso fazer mudançasem tempo real? Tuesday, August 7, 12
  • 85.
    Marionette Collective Orquestrador de nodes Execução de Tarefas Paralelas Interação com centenas de nodes Inventário descentralizado Leitura de meta-dados do Puppet Similar a Fabric e Capistrano Tuesday, August 7, 12
  • 86.
    Qual o resultadoconcreto? Tuesday, August 7, 12
  • 87.
  • 88.
    Restore e backupde mudanças Tuesday, August 7, 12
  • 89.
  • 90.
  • 91.
  • 92.
    Benefícios Reais Maior produtividade em menor tempo Poucos SysAdmins para muitos nodes Diminuição de falhas humanas Maior controle de todo o seu parque Diminuição do tempo gasto em mudanças Diminuição do custo de manutenção Tuesday, August 7, 12
  • 93.
    Tecnologia trabalhando paravocê Tuesday, August 7, 12
  • 94.
  • 95.
    Puppet & CloudIaaS Cloud Tools (FOSS) Cloud Hosts Ganeti Tuesday, August 7, 12
  • 96.
  • 97.
    Use API dofornecedor Tuesday, August 7, 12
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
    Puppet em números 727 pessoas online no canal #puppet da irc.freenode.net 8.500 repositórios no GitHub 450 módulos no PuppetForge 4457 usuários ativos na lista puppet-users com 7795 tópicos de discussão Dados coletados em 2012-08-06 às 10:34 PM Tuesday, August 7, 12
  • 104.
    4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet Master Tuesday, August 7, 12
  • 105.
    Puppet na rede Site/Blog Google Groups http://www.puppetlabs.com Puppet-camp, http://www.puppetlabs.com/blog/ puppet-users, http://puppet-br.org/ puppet-users-br, puppet-dev Twitter @puppetlabs IRC irc.freenode.org GitHub #puppet http://www.github.com/puppelabs #puppet-br Tuesday, August 7, 12
  • 106.
  • 107.
    4linux na rede Contato Twitter @gutocarvalho Twitter @4linuxBR jose.carvalho@4linux.com.br Facebook /4Linux slideshare.net/gutocarvalho Obrigado! Tuesday, August 7, 12
  • 108.
    Prestação de serviçosem: Baseados em: - Consultoria - Desenvolvimento - Softwares Livres - Suporte - Soluções e Aplicativos - Open Source - Projetos - Treinamento - Padrões Abertos Para construir sua infraestrutura de TI e criar novas soluções de negócio. Tuesday, August 7, 12
  • 109.
    Comparando Ferramentas Recursos Puppet Chef CfEngine Pull Yes Yes Yes Push No No No Idempotence Yes Yes Yes Config Language Declarative Ruby Declarative Web UI Yes Yes Yes OS Support *NIX,Windows *NIX,Windows *NIX,Windows License Apache Apache GPL Company Puppetlabs OpsCode CfEngine Cloud Yes Yes Yes Tuesday, August 7, 12