SlideShare uma empresa Scribd logo
Gerência de Configurações c/ Puppet
                               Patrocínio: 4Linux
                             José Augusto (Guto) Carvalho
                                gutocarvalho@4linux.com.br




Thursday, October 25, 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.

Thursday, October 25, 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


Thursday, October 25, 12
Oficina Puppet
Thursday, October 25, 12
Plano de Trabalho

                     50 min de apresentação GC & Puppet
                     60 min hands on puppet serverless
                     60 min hands on puppet master
                     10 min para perguntas



Thursday, October 25, 12
Agenda
                      Apresentando Cenários

                      Gerência de Configurações e Infraestrutura como Código

                      Puppet como solução de Gerência de Configurações

                      Hands On: Puppet Serverless

                      Hands On: Puppet Master

                      Hands On: Puppet Dashboard

                      Perguntas

Thursday, October 25, 12
Virtualização - Tendência
Thursday, October 25, 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
Thursday, October 25, 12
Cloud Computing - Tendência
Thursday, October 25, 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
Thursday, October 25, 12
Provisionamento
            Podemos criar 500 VM’s em
                 poucos minutos




Thursday, October 25, 12
Como Administrar 500 VM’s?



Thursday, October 25, 12
Configuração Manual?



Thursday, October 25, 12
Acesso Secure Shell (ssh)?



Thursday, October 25, 12
Host a Host?



Thursday, October 25, 12
Quantos SysAdmins são necessários
                            para administrar 500 servidores?




Thursday, October 25, 12
Qual a velocidade nas
                           mudanças em seu ambiente?


Thursday, October 25, 12
Qual a probabilidade de falhas
                           decorrentes de mudanças manuais?




Thursday, October 25, 12
Você consegue manter todo o
                            seu ambiente padronizado?


Thursday, October 25, 12
Seu custo com manutenção e
                   equipes técnicas está aumentando?



Thursday, October 25, 12
Está difícil colocar suas configurações nos trilhos?

Thursday, October 25, 12
Como resolver isto?
                                 Como obtenho controle e
                             padronização em meu ambiente ?




Thursday, October 25, 12
Gerência de Configurações
Thursday, October 25, 12
Padronização


Thursday, October 25, 12
Automatização


Thursday, October 25, 12
Controle


Thursday, October 25, 12
Integridade


Thursday, October 25, 12
Desempenho


Thursday, October 25, 12
Agilidade nas mudanças


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



Thursday, October 25, 12
Visão Rápida
                     Framework Open Source para Gerência de Configurações
                     Oferece um cojunto de ferramentas para manipular estados
                     Nos permite trabalhar a Infraestrutura como código
                     Funciona localmente ou via rede
                     Oferece uma linguagem declarativa para descrever
                     configurações de sistemas e serviços

Thursday, October 25, 12
Sobre a ferramenta
                     Suporte a Linux, BSDs, Solaris e Windows (19 tipos de OS)

                     Criado por Luke Kaines (CEO e Fundador Puppetlabs)

                     Empresa PuppetLabs mantém a Ferramenta

                     Ferramenta OpenSource (Licença Apache)

                     Recebeu grandes investimentos

                     Empresa oferece Suporte Corporativo e Versão Enterprise


Thursday, October 25, 12
Feito por um SysAdmin para SysAdmins




Thursday, October 25, 12
Eficiente para uso DevOps




Thursday, October 25, 12
Especificações

                     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

Thursday, October 25, 12
Quem usa o Puppet?




Thursday, October 25, 12
Arquitetura
                           Como funciona o Puppet?




Thursday, October 25, 12
Resource Abstraction Layer




Thursday, October 25, 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

Thursday, October 25, 12
Instale Pacote X


Thursday, October 25, 12
Remova usuário Z


Thursday, October 25, 12
(Re)inicie serviço Y


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




Thursday, October 25, 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


Thursday, October 25, 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.




Thursday, October 25, 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

Thursday, October 25, 12
Idempotência


Thursday, October 25, 12
Ambiente Puppet
                                                   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
Thursday, October 25, 12
Administração Instâncias

                     Administrar Cloud IaaS ou uma infra Virtualizada não é difícil
                     Escalabilidade automática é um recurso fantástico na Cloud
                     Balanceamento e Alta disponibiliade são recursos nativos de Virt.
                     Criar novos servidores é muito fácil tanto na Cloud quanto em Virt.
                     Administrar centenas de nodes? Aqui começa a complicar.


Thursday, October 25, 12
Quando seu ambiente começar a crescer demais você
                     vai perceber administrá-lo não é tão simples.




Thursday, October 25, 12
Adicionando Nodes
                                 ZABBIX
                       NGINX

                                                  JBOSS


                                          POSTGRESQL


                                 MEMCACHED




Thursday, October 25, 12
Adicionando Nodes
                                 ZABBIX
                       NGINX

                                                  JBOSS


                                          POSTGRESQL


                                 MEMCACHED


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


Thursday, October 25, 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

Thursday, October 25, 12
Insira o Puppet na imagem de
                              instalação de seus nodes.



Thursday, October 25, 12
Pare de administrar e começe a
                       desenvolver sua infra


Thursday, October 25, 12
Não tenha medo de realizar
                           atualizações, o puppet faz pra você!




Thursday, October 25, 12
Você pode fazer deploy de sua APP
                           Você pode controlar a versão de sua APP




Thursday, October 25, 12
Como funciona o modo cliente/servidor?

Thursday, October 25, 12
Puppet Master

         8140 TCP                           8139 TCP
           Client                SSL          Server
         puppetd -t                         puppetrun

                            Puppet Client



                     Puppet Visão em Rede
Thursday, October 25, 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


Thursday, October 25, 12
Fluxo Cliente/Servidor
                   Instalação do
                       node




Thursday, October 25, 12
Fluxo Cliente/Servidor
                   Instalação do   Inicialização
                       node         do puppet




Thursday, October 25, 12
Fluxo Cliente/Servidor
                   Instalação do   Inicialização   Geração de
                       node         do puppet      Certificado




Thursday, October 25, 12
Fluxo Cliente/Servidor
                   Instalação do   Inicialização   Geração de
                       node         do puppet      Certificado



                                                    Envio de
                                                   Certificado




Thursday, October 25, 12
Fluxo Cliente/Servidor
                   Instalação do    Inicialização   Geração de
                       node          do puppet      Certificado



                                   Master Assina     Envio de
                                    Certificado      Certificado




Thursday, October 25, 12
Fluxo Cliente/Servidor
                   Instalação do    Inicialização   Geração de
                       node          do puppet      Certificado



                        Agente     Master Assina     Envio de
                      Sincroniza    Certificado      Certificado




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




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




Thursday, October 25, 12
Recursos do Puppet

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

Thursday, October 25, 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.


Thursday, October 25, 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


Thursday, October 25, 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


Thursday, October 25, 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

Thursday, October 25, 12
Exemplos
Thursday, October 25, 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


Thursday, October 25, 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”,
            }
Thursday, October 25, 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”,
            }
Thursday, October 25, 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
                  }

Thursday, October 25, 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
            }

Thursday, October 25, 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,



Thursday, October 25, 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',
                   }
                 }
                 ....
Thursday, October 25, 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',
         }


Thursday, October 25, 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



Thursday, October 25, 12
E como acompanho mudanças?
Thursday, October 25, 12
Puppet Dashboard




Thursday, October 25, 12
Posso fazer mudanças em
                                  tempo real?


Thursday, October 25, 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


Thursday, October 25, 12
Hands On: Puppet Serverless
Thursday, October 25, 12
http://gutocarvalho.net/dokuwiki




Thursday, October 25, 12
Cenário


                     1 VM - Debian 64bits - para PuppetServerless (local)




Thursday, October 25, 12
instalando puppet


Thursday, October 25, 12
RAL


Thursday, October 25, 12
RAL

                     Resource Types
                     Parameters
                     Meta-parameters
                     Provedores


Thursday, October 25, 12
RAL: Modifica & Sincroniza

                     Verifica o estado atual de um recurso
                     Compara dados coletados
                     Aplica mudanças



Thursday, October 25, 12
Recursos


Thursday, October 25, 12
Exemplo de Recurso
                       tipo	
  {	
  'título':
                       	
  	
  param1	
  	
  	
  	
  	
  =>	
  'valor',
                       	
  	
  param2	
  	
  	
  	
  	
  =>	
  'valor',
                       	
  	
  param3	
  	
  	
  	
  	
  =>	
  'valor',
                       	
  	
  metaparam1	
  =>	
  'valor',
                       	
  	
  metaparam2	
  =>	
  'valor',
                       	
  	
  function1	
  	
  =>	
  'valor',
                       	
  	
  function2	
  	
  =>	
  'valor',
                       }
Thursday, October 25, 12
Exemplo de Recurso: User
     user	
  {	
  'gutocarvalho':
     	
  	
  ensure	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  'present',
     	
  	
  gid	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  '500',
     	
  	
  home	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  '/home/gutocarvalho',
     	
  	
  password	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  '$6$BE6a/5SJ...KfCy0',
     	
  	
  password_max_age	
  =>	
  '99999',
     	
  	
  password_min_age	
  =>	
  '0',
     	
  	
  shell	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  '/bin/bash',
     	
  	
  uid	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  '500',
     }


Thursday, October 25, 12
Recurso, Título, Atributos


Thursday, October 25, 12
puppet resource
             vamos manipular estados
            usando o comando resource




Thursday, October 25, 12
puppet resource user
                                    {




Thursday, October 25, 12
puppet resource package




Thursday, October 25, 12
puppet resource service




Thursday, October 25, 12
resource types
        vamos aprender a utilizar tipos
        distintos de recursos, inserí-los
           em manifests e aplicá-los




Thursday, October 25, 12
manifest


Thursday, October 25, 12
puppet apply manifest.pp


Thursday, October 25, 12
resource type: file


Thursday, October 25, 12
resource type: package


Thursday, October 25, 12
resource type: service


Thursday, October 25, 12
resource type: exec


Thursday, October 25, 12
resource type: cron


Thursday, October 25, 12
resource type: host


Thursday, October 25, 12
meta-parâmetros
           vamos aprender a utilizar os meta-
          parâmetros, eles podem ser utilizados
           com praticamente todos os resource
                     types do puppet




Thursday, October 25, 12
meta-parameter: require


Thursday, October 25, 12
meta-parameter: notify


Thursday, October 25, 12
meta-parameter: alias


Thursday, October 25, 12
meta-parameter: subscribe


Thursday, October 25, 12
configuração em trio


Thursday, October 25, 12
Exemplo Conceitual Trio
                 package	
  {	
  'pacote':
                 	
  	
  	
  	
  	
  	
  	
  	
  ensure	
  =>	
  present,
                 	
  	
  	
  	
  }
                 	
  
                 service	
  {	
  'servico':
                 	
  	
  	
  	
  	
  	
  	
  	
  ensure	
  	
  	
  	
  	
  =>	
  running,
                 	
  	
  	
  	
  	
  	
  	
  	
  enable	
  	
  	
  	
  	
  =>	
  true,
                 	
  	
  	
  	
  	
  	
  	
  	
  hasrestart	
  =>	
  true,
                 	
  	
  	
  	
  	
  	
  	
  	
  hasstatus	
  	
  =>	
  true,
                 	
  	
  	
  	
  	
  	
  	
  	
  require	
  	
  	
  	
  =>	
  Package['pacote'],
                 	
  	
  	
  	
  }
                 	
  
                 file	
  {	
  'main.cf':
                 	
  	
  	
  	
  	
  	
  	
  	
  path	
  	
  	
  	
  =>	
  "/etc/pacote/pacote.conf",
                 	
  	
  	
  	
  	
  	
  	
  	
  source	
  	
  =>	
  "/root/puppet/pacote.conf",
                 	
  	
  	
  	
  	
  	
  	
  	
  owner	
  	
  	
  =>	
  'root',
                 	
  	
  	
  	
  	
  	
  	
  	
  group	
  	
  	
  =>	
  'root',
                 	
  	
  	
  	
  	
  	
  	
  	
  mode	
  	
  	
  	
  =>	
  644,
                 	
  	
  	
  	
  	
  	
  	
  	
  require	
  =>	
  Package['pacote'],
                 	
  	
  	
  	
  	
  	
  	
  	
  notify	
  	
  =>	
  Service['servico'],
                 	
  	
  	
  	
  }
Thursday, October 25, 12
Exemplo Real Trio: Postfix
    package	
  {	
  'postfix':
    	
  	
  	
  	
  	
  	
  	
  	
  ensure	
  =>	
  present,
    }
    	
  
    service	
  {	
  'postfix':
    	
  	
  	
  	
  	
  	
  	
  	
  ensure	
  	
  	
  	
  	
  =>	
  running,
    	
  	
  	
  	
  	
  	
  	
  	
  enable	
  	
  	
  	
  	
  =>	
  true,
    	
  	
  	
  	
  	
  	
  	
  	
  hasrestart	
  =>	
  true,
    	
  	
  	
  	
  	
  	
  	
  	
  hasstatus	
  	
  =>	
  true,
    	
  	
  	
  	
  	
  	
  	
  	
  require	
  	
  	
  	
  =>	
  Package['postfix'],
    }
    	
  
    file	
  {	
  'main.cf':
    	
  	
  	
  	
  	
  	
  	
  	
  path	
  	
  	
  	
  =>	
  "/etc/postfix/main.cf",
    	
  	
  	
  	
  	
  	
  	
  	
  source	
  	
  =>	
  '/root/puppet/main.cf',
    	
  	
  	
  	
  	
  	
  	
  	
  owner	
  	
  	
  =>	
  'root',
    	
  	
  	
  	
  	
  	
  	
  	
  group	
  	
  	
  =>	
  'root',
    	
  	
  	
  	
  	
  	
  	
  	
  mode	
  	
  	
  	
  =>	
  644,
    	
  	
  	
  	
  	
  	
  	
  	
  require	
  =>	
  Package['postfix'],
    	
  	
  	
  	
  	
  	
  	
  	
  notify	
  	
  =>	
  Service['postfix'],
    }
Thursday, October 25, 12
Variáveis, Fatos
                 e Condicionais
           Vamos aprender a trabalhar
             com variáveis, fatos e
          condicionais dentro de nossos
              manifests no puppet



Thursday, October 25, 12
variáveis


Thursday, October 25, 12
fatos


Thursday, October 25, 12
condições


Thursday, October 25, 12
casos


Thursday, October 25, 12
seletores


Thursday, October 25, 12
Classes
          Vamos aprender a agrupar
        configurações dentro de classes




Thursday, October 25, 12
Templates
            Vamos aprender a trabalhar
            com arquivos dinâmicos que
              utilizam variáveis e fatos




Thursday, October 25, 12
noop


Thursday, October 25, 12
filebucket local


Thursday, October 25, 12
cenários para uso de
                             puppet serverless

Thursday, October 25, 12
Hands On: Puppet Master
Thursday, October 25, 12
http://gutocarvalho.net/dokuwiki




Thursday, October 25, 12
Cenário

                     1 VM - Debian 64bits - para PuppetMaster (servidor)
                     1 VM - Debian 64bits - para PuppetAgent (node)
                       1 VM - Debian 64bits - para PuppetDashBoard (dashboard)



Thursday, October 25, 12
PuppetMaster: Teoria

                     API REST
                     TCP/IP
                     Certificados Digitais
                     SSL


Thursday, October 25, 12
Instalando puppetmaster


Thursday, October 25, 12
DNS, Host, Hostname


Thursday, October 25, 12
Estrutura do Master


Thursday, October 25, 12
Instalando PuppetAgent


Thursday, October 25, 12
DNS, Host, Hostname


Thursday, October 25, 12
Estrutura do Agent


Thursday, October 25, 12
Primeiro Contato
                            Agent/Master

Thursday, October 25, 12
Manipulando Certificados
                        no PuppetMaster


Thursday, October 25, 12
Nodes
           Vamos entender o que é um
          node e como declaramos uma
             configuração para ele.




Thursday, October 25, 12
Empurrando uma
                             Configuração

Thursday, October 25, 12
Classes
            Vamos aprender a trabalhar
              com classes em modo
                 master/agent.




Thursday, October 25, 12
Definições
            Vamos aprender a trabalhar
            com classes parametrizadas
              em modo master/agent.




Thursday, October 25, 12
Módulos
            Vamos aprender a trabalhar
              com módulos no puppet.




Thursday, October 25, 12
Organizando o Master


Thursday, October 25, 12
Escalando
          Vamos aprender a substituir o
            Webrick pelo Apache com
            ModPassenger para que o
                 puppet Escale.



Thursday, October 25, 12
instalando puppetmaster-passenger




Thursday, October 25, 12
Hands On: Puppet Dashboard
Thursday, October 25, 12
instalando o dashboard


Thursday, October 25, 12
integrando master ao
                                 dashboard


Thursday, October 25, 12
habilitando reports nos
                           agents

Thursday, October 25, 12
Qual o resultado concreto?
Thursday, October 25, 12
Documentação Instantânea




Thursday, October 25, 12
Restore e backup de mudanças




Thursday, October 25, 12
Processos bem definidos




Thursday, October 25, 12
Ambiente Padronizado




Thursday, October 25, 12
Tarefas Automatizadas




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




Thursday, October 25, 12
Puppet & Cloud IaaS
                           Cloud Tools (FOSS)   Cloud Hosts




                           Ganeti


Thursday, October 25, 12
Boas Práticas
Thursday, October 25, 12
Use API do fornecedor


Thursday, October 25, 12
Desenvolva sua Infra


Thursday, October 25, 12
Versione suas configurações



Thursday, October 25, 12
Reaproveite Código


Thursday, October 25, 12
GitHub & PuppetForge


Thursday, October 25, 12
Pesquise!


Thursday, October 25, 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
Thursday, October 25, 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




Thursday, October 25, 12
4Linux & PuppetLabs
                           1o Parceiro no Brasil

                           Consultores Especializados

                           Cases no Governo Federal

                           Suporte Puppet Enterprise

                           Treinamentos Puppet Master




Thursday, October 25, 12
Perguntas?
Thursday, October 25, 12
4linux na rede                 Contato
                                   Twitter @gutocarvalho
               Twitter @4linuxBR
                                   gutocarvalho@4linux.com.br
               Facebook /4Linux
                                   slideshare.net/gutocarvalho
                                   http://gutocarvalho.net



                              Obrigado!
Thursday, October 25, 12

Mais conteúdo relacionado

Semelhante a Oficina Puppet latinoware

Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISL
Jose 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ções
Jose Augusto Carvalho
 
Agenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacionalAgenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacional
Joao Galdino Mello de Souza
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
Yros
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Joao Galdino Mello de Souza
 
A PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOS
A PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOSA PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOS
A PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOS
Raul Leite
 
uWSGI.. Por quê? Quando? Onde? Como?
uWSGI.. Por quê? Quando? Onde? Como?uWSGI.. Por quê? Quando? Onde? Como?
uWSGI.. Por quê? Quando? Onde? Como?
Cícero Corrêa
 
ACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoACII - SL06 - Virtualizacao
ACII - SL06 - Virtualizacao
UFPB
 
Alex Vitola
Alex VitolaAlex Vitola
Alex Vitola
Alex Vitola
 
DevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento ÁgilDevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento Ágil
instructbr
 
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
 
Na Jornada da Virtualização para as Nuvens, como mantemos o controle?
Na Jornada da Virtualização para as Nuvens, como mantemos o controle?Na Jornada da Virtualização para as Nuvens, como mantemos o controle?
Na Jornada da Virtualização para as Nuvens, como mantemos o controle?
Rodrigo Missiaggia
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Joao Galdino Mello de Souza
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
Elton Simões
 
Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1
Jonathan Baraldi
 
apresentacao_totvs_cloud.pptx
apresentacao_totvs_cloud.pptxapresentacao_totvs_cloud.pptx
apresentacao_totvs_cloud.pptx
EvertonMendes41
 
Lançamento CSA Guide em Português
Lançamento CSA Guide em PortuguêsLançamento CSA Guide em Português
Lançamento CSA Guide em Português
Leo Goldim
 
Azure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest LabsAzure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest Labs
Jaqueline Ramos
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
Andre "Ramoni" Guimaraes
 
Minicurso sobre X3D
Minicurso sobre X3DMinicurso sobre X3D
Minicurso sobre X3D
Eduardo de Lucena Falcão
 

Semelhante a Oficina Puppet latinoware (20)

Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISL
 
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
 
Agenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacionalAgenda Versão Final - CMG 14a. conferencia nacional
Agenda Versão Final - CMG 14a. conferencia nacional
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
 
A PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOS
A PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOSA PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOS
A PRINCIPAL PLATAFORMA ABERTA, FAÇA MAIS COM MENOS
 
uWSGI.. Por quê? Quando? Onde? Como?
uWSGI.. Por quê? Quando? Onde? Como?uWSGI.. Por quê? Quando? Onde? Como?
uWSGI.. Por quê? Quando? Onde? Como?
 
ACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoACII - SL06 - Virtualizacao
ACII - SL06 - Virtualizacao
 
Alex Vitola
Alex VitolaAlex Vitola
Alex Vitola
 
DevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento ÁgilDevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento Ágil
 
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)
 
Na Jornada da Virtualização para as Nuvens, como mantemos o controle?
Na Jornada da Virtualização para as Nuvens, como mantemos o controle?Na Jornada da Virtualização para as Nuvens, como mantemos o controle?
Na Jornada da Virtualização para as Nuvens, como mantemos o controle?
 
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCEAgenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
Agenda atualizada - 14TH CMG BRASIL PERFORMANCE AND CAPACITY PLANNING CONFERENCE
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
 
Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1Treinamento Tropa de Elite Aws - Business - D1
Treinamento Tropa de Elite Aws - Business - D1
 
apresentacao_totvs_cloud.pptx
apresentacao_totvs_cloud.pptxapresentacao_totvs_cloud.pptx
apresentacao_totvs_cloud.pptx
 
Lançamento CSA Guide em Português
Lançamento CSA Guide em PortuguêsLançamento CSA Guide em Português
Lançamento CSA Guide em Português
 
Azure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest LabsAzure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest Labs
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
 
Minicurso sobre X3D
Minicurso sobre X3DMinicurso sobre X3D
Minicurso sobre X3D
 

Mais de Jose Augusto Carvalho

Trabalhando com Módulos no Puppet
Trabalhando com Módulos no PuppetTrabalhando com Módulos no Puppet
Trabalhando com Módulos no Puppet
Jose Augusto Carvalho
 
Orquestração com Mcollective
Orquestração com McollectiveOrquestração com Mcollective
Orquestração com Mcollective
Jose Augusto Carvalho
 
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
Jose 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 devel
Jose Augusto Carvalho
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
Jose Augusto Carvalho
 
Conhecendo o Wordpress
Conhecendo o WordpressConhecendo o Wordpress
Conhecendo o Wordpress
Jose 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 2
Jose Augusto Carvalho
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
Jose Augusto Carvalho
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
Jose 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
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
Jose Augusto Carvalho
 
Consegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + PuppetConsegi 2011: Ganeti + Puppet
Consegi 2011: Ganeti + Puppet
Jose Augusto Carvalho
 

Mais de Jose Augusto Carvalho (12)

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
 
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
 
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
 
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
 
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
 

Último

Segurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptxSegurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptx
Divina Vitorino
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdfEletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
barbosajucy47
 

Último (7)

Segurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptxSegurança da Informação - Onde estou e para onde eu vou.pptx
Segurança da Informação - Onde estou e para onde eu vou.pptx
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdfEletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
Eletiva_O-mundo-conectado-Ensino-Médio.docx.pdf
 

Oficina Puppet latinoware

  • 1. Gerência de Configurações c/ Puppet Patrocínio: 4Linux José Augusto (Guto) Carvalho gutocarvalho@4linux.com.br Thursday, October 25, 12
  • 2. 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. Thursday, October 25, 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, CAIXA Há 2 anos trabalhando com gerência de configurações em ambientes virtualizados e clouds privadas em Brasília Thursday, October 25, 12
  • 5. Plano de Trabalho 50 min de apresentação GC & Puppet 60 min hands on puppet serverless 60 min hands on puppet master 10 min para perguntas Thursday, October 25, 12
  • 6. Agenda Apresentando Cenários Gerência de Configurações e Infraestrutura como Código Puppet como solução de Gerência de Configurações Hands On: Puppet Serverless Hands On: Puppet Master Hands On: Puppet Dashboard Perguntas Thursday, October 25, 12
  • 8. 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 Thursday, October 25, 12
  • 9. Cloud Computing - Tendência Thursday, October 25, 12
  • 10. 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 Thursday, October 25, 12
  • 11. Provisionamento Podemos criar 500 VM’s em poucos minutos Thursday, October 25, 12
  • 12. Como Administrar 500 VM’s? Thursday, October 25, 12
  • 14. Acesso Secure Shell (ssh)? Thursday, October 25, 12
  • 15. Host a Host? Thursday, October 25, 12
  • 16. Quantos SysAdmins são necessários para administrar 500 servidores? Thursday, October 25, 12
  • 17. Qual a velocidade nas mudanças em seu ambiente? Thursday, October 25, 12
  • 18. Qual a probabilidade de falhas decorrentes de mudanças manuais? Thursday, October 25, 12
  • 19. Você consegue manter todo o seu ambiente padronizado? Thursday, October 25, 12
  • 20. Seu custo com manutenção e equipes técnicas está aumentando? Thursday, October 25, 12
  • 21. Está difícil colocar suas configurações nos trilhos? Thursday, October 25, 12
  • 22. Como resolver isto? Como obtenho controle e padronização em meu ambiente ? Thursday, October 25, 12
  • 30. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente. Thursday, October 25, 12
  • 31. Visão Rápida Framework Open Source para Gerência de Configurações Oferece um cojunto de ferramentas para manipular estados Nos permite trabalhar a Infraestrutura como código Funciona localmente ou via rede Oferece uma linguagem declarativa para descrever configurações de sistemas e serviços Thursday, October 25, 12
  • 32. Sobre a ferramenta Suporte a Linux, BSDs, Solaris e Windows (19 tipos de OS) Criado por Luke Kaines (CEO e Fundador Puppetlabs) Empresa PuppetLabs mantém a Ferramenta Ferramenta OpenSource (Licença Apache) Recebeu grandes investimentos Empresa oferece Suporte Corporativo e Versão Enterprise Thursday, October 25, 12
  • 33. Feito por um SysAdmin para SysAdmins Thursday, October 25, 12
  • 34. Eficiente para uso DevOps Thursday, October 25, 12
  • 35. Especificações 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 Thursday, October 25, 12
  • 36. Quem usa o Puppet? Thursday, October 25, 12
  • 37. Arquitetura Como funciona o Puppet? Thursday, October 25, 12
  • 39. 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 Thursday, October 25, 12
  • 40. Instale Pacote X Thursday, October 25, 12
  • 41. Remova usuário Z Thursday, October 25, 12
  • 43. Tratamento de Informações O grande diferencial do Puppet é a forma como ele trata as informações de seus nodes Thursday, October 25, 12
  • 44. 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 Thursday, October 25, 12
  • 45. 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. Thursday, October 25, 12
  • 46. 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 Thursday, October 25, 12
  • 48. Ambiente Puppet 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 Thursday, October 25, 12
  • 49. Administração Instâncias Administrar Cloud IaaS ou uma infra Virtualizada não é difícil Escalabilidade automática é um recurso fantástico na Cloud Balanceamento e Alta disponibiliade são recursos nativos de Virt. Criar novos servidores é muito fácil tanto na Cloud quanto em Virt. Administrar centenas de nodes? Aqui começa a complicar. Thursday, October 25, 12
  • 50. Quando seu ambiente começar a crescer demais você vai perceber administrá-lo não é tão simples. Thursday, October 25, 12
  • 51. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Thursday, October 25, 12
  • 52. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudanças Thursday, October 25, 12
  • 53. Adicionando Nodes sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-repos Thursday, October 25, 12
  • 54. 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 Thursday, October 25, 12
  • 55. Insira o Puppet na imagem de instalação de seus nodes. Thursday, October 25, 12
  • 56. Pare de administrar e começe a desenvolver sua infra Thursday, October 25, 12
  • 57. Não tenha medo de realizar atualizações, o puppet faz pra você! Thursday, October 25, 12
  • 58. Você pode fazer deploy de sua APP Você pode controlar a versão de sua APP Thursday, October 25, 12
  • 59. Como funciona o modo cliente/servidor? Thursday, October 25, 12
  • 60. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em Rede Thursday, October 25, 12
  • 61. 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 Thursday, October 25, 12
  • 62. Fluxo Cliente/Servidor Instalação do node Thursday, October 25, 12
  • 63. Fluxo Cliente/Servidor Instalação do Inicialização node do puppet Thursday, October 25, 12
  • 64. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Thursday, October 25, 12
  • 65. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de Certificado Thursday, October 25, 12
  • 66. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado Certificado Thursday, October 25, 12
  • 67. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado Certificado Thursday, October 25, 12
  • 68. 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 Thursday, October 25, 12
  • 69. O agente se comunica com o master a cada N minutos Thursday, October 25, 12
  • 70. E quais os recursos disponíveis para gerenciar sistemas e serviços? Como manipulo estados do meu ambiente? Thursday, October 25, 12
  • 71. Recursos do Puppet Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e Condicionais Thursday, October 25, 12
  • 72. 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. Thursday, October 25, 12
  • 73. 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 Thursday, October 25, 12
  • 74. 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 Thursday, October 25, 12
  • 75. Resource Type: File Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksums Thursday, October 25, 12
  • 77. 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 Thursday, October 25, 12
  • 78. 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”, } Thursday, October 25, 12
  • 79. 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”, } Thursday, October 25, 12
  • 80. 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 } Thursday, October 25, 12
  • 81. 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 } Thursday, October 25, 12
  • 82. 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, Thursday, October 25, 12
  • 83. 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', } } .... Thursday, October 25, 12
  • 84. 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', } Thursday, October 25, 12
  • 85. 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 Thursday, October 25, 12
  • 86. E como acompanho mudanças? Thursday, October 25, 12
  • 88. Posso fazer mudanças em tempo real? Thursday, October 25, 12
  • 89. 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 Thursday, October 25, 12
  • 90. Hands On: Puppet Serverless Thursday, October 25, 12
  • 92. Cenário 1 VM - Debian 64bits - para PuppetServerless (local) Thursday, October 25, 12
  • 95. RAL Resource Types Parameters Meta-parameters Provedores Thursday, October 25, 12
  • 96. RAL: Modifica & Sincroniza Verifica o estado atual de um recurso Compara dados coletados Aplica mudanças Thursday, October 25, 12
  • 98. Exemplo de Recurso tipo  {  'título':    param1          =>  'valor',    param2          =>  'valor',    param3          =>  'valor',    metaparam1  =>  'valor',    metaparam2  =>  'valor',    function1    =>  'valor',    function2    =>  'valor', } Thursday, October 25, 12
  • 99. Exemplo de Recurso: User user  {  'gutocarvalho':    ensure                      =>  'present',    gid                            =>  '500',    home                          =>  '/home/gutocarvalho',    password                  =>  '$6$BE6a/5SJ...KfCy0',    password_max_age  =>  '99999',    password_min_age  =>  '0',    shell                        =>  '/bin/bash',    uid                            =>  '500', } Thursday, October 25, 12
  • 101. puppet resource vamos manipular estados usando o comando resource Thursday, October 25, 12
  • 102. puppet resource user { Thursday, October 25, 12
  • 105. resource types vamos aprender a utilizar tipos distintos de recursos, inserí-los em manifests e aplicá-los Thursday, October 25, 12
  • 111. resource type: exec Thursday, October 25, 12
  • 112. resource type: cron Thursday, October 25, 12
  • 113. resource type: host Thursday, October 25, 12
  • 114. meta-parâmetros vamos aprender a utilizar os meta- parâmetros, eles podem ser utilizados com praticamente todos os resource types do puppet Thursday, October 25, 12
  • 120. Exemplo Conceitual Trio package  {  'pacote':                ensure  =>  present,        }   service  {  'servico':                ensure          =>  running,                enable          =>  true,                hasrestart  =>  true,                hasstatus    =>  true,                require        =>  Package['pacote'],        }   file  {  'main.cf':                path        =>  "/etc/pacote/pacote.conf",                source    =>  "/root/puppet/pacote.conf",                owner      =>  'root',                group      =>  'root',                mode        =>  644,                require  =>  Package['pacote'],                notify    =>  Service['servico'],        } Thursday, October 25, 12
  • 121. Exemplo Real Trio: Postfix package  {  'postfix':                ensure  =>  present, }   service  {  'postfix':                ensure          =>  running,                enable          =>  true,                hasrestart  =>  true,                hasstatus    =>  true,                require        =>  Package['postfix'], }   file  {  'main.cf':                path        =>  "/etc/postfix/main.cf",                source    =>  '/root/puppet/main.cf',                owner      =>  'root',                group      =>  'root',                mode        =>  644,                require  =>  Package['postfix'],                notify    =>  Service['postfix'], } Thursday, October 25, 12
  • 122. Variáveis, Fatos e Condicionais Vamos aprender a trabalhar com variáveis, fatos e condicionais dentro de nossos manifests no puppet Thursday, October 25, 12
  • 128. Classes Vamos aprender a agrupar configurações dentro de classes Thursday, October 25, 12
  • 129. Templates Vamos aprender a trabalhar com arquivos dinâmicos que utilizam variáveis e fatos Thursday, October 25, 12
  • 132. cenários para uso de puppet serverless Thursday, October 25, 12
  • 133. Hands On: Puppet Master Thursday, October 25, 12
  • 135. Cenário 1 VM - Debian 64bits - para PuppetMaster (servidor) 1 VM - Debian 64bits - para PuppetAgent (node) 1 VM - Debian 64bits - para PuppetDashBoard (dashboard) Thursday, October 25, 12
  • 136. PuppetMaster: Teoria API REST TCP/IP Certificados Digitais SSL Thursday, October 25, 12
  • 138. DNS, Host, Hostname Thursday, October 25, 12
  • 139. Estrutura do Master Thursday, October 25, 12
  • 141. DNS, Host, Hostname Thursday, October 25, 12
  • 142. Estrutura do Agent Thursday, October 25, 12
  • 143. Primeiro Contato Agent/Master Thursday, October 25, 12
  • 144. Manipulando Certificados no PuppetMaster Thursday, October 25, 12
  • 145. Nodes Vamos entender o que é um node e como declaramos uma configuração para ele. Thursday, October 25, 12
  • 146. Empurrando uma Configuração Thursday, October 25, 12
  • 147. Classes Vamos aprender a trabalhar com classes em modo master/agent. Thursday, October 25, 12
  • 148. Definições Vamos aprender a trabalhar com classes parametrizadas em modo master/agent. Thursday, October 25, 12
  • 149. Módulos Vamos aprender a trabalhar com módulos no puppet. Thursday, October 25, 12
  • 151. Escalando Vamos aprender a substituir o Webrick pelo Apache com ModPassenger para que o puppet Escale. Thursday, October 25, 12
  • 153. Hands On: Puppet Dashboard Thursday, October 25, 12
  • 155. integrando master ao dashboard Thursday, October 25, 12
  • 156. habilitando reports nos agents Thursday, October 25, 12
  • 157. Qual o resultado concreto? Thursday, October 25, 12
  • 159. Restore e backup de mudanças Thursday, October 25, 12
  • 163. Quais os Benefícios Reais? Thursday, October 25, 12
  • 164. 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 Thursday, October 25, 12
  • 165. Tecnologia trabalhando para você Thursday, October 25, 12
  • 166. Puppet & Cloud IaaS Cloud Tools (FOSS) Cloud Hosts Ganeti Thursday, October 25, 12
  • 168. Use API do fornecedor Thursday, October 25, 12
  • 174. 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 Thursday, October 25, 12
  • 175. 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 Thursday, October 25, 12
  • 176. 4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet Master Thursday, October 25, 12
  • 178. 4linux na rede Contato Twitter @gutocarvalho Twitter @4linuxBR gutocarvalho@4linux.com.br Facebook /4Linux slideshare.net/gutocarvalho http://gutocarvalho.net Obrigado! Thursday, October 25, 12