SlideShare une entreprise Scribd logo
1  sur  108
Télécharger pour lire hors ligne
Gerência de Configurações em Cloud
                          Puppet em ambientes IaaS
                           José Augusto (Guto) Carvalho
                               gutocarvalho@gmail.com




Wednesday, August 8, 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


Wednesday, August 8, 12
Puppet em IaaS
Wednesday, August 8, 12
Plano de Trabalho


                    40 minutos de apresentação
                    5 minutos para perguntas




Wednesday, August 8, 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


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




Wednesday, August 8, 12
Como Administrar 500 VM’s?



Wednesday, August 8, 12
Configuração Manual?



Wednesday, August 8, 12
Acesso Secure Shell (ssh)?



Wednesday, August 8, 12
Host a Host?



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




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


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




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


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



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

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




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


Wednesday, August 8, 12
Automatização


Wednesday, August 8, 12
Controle


Wednesday, August 8, 12
Integridade


Wednesday, August 8, 12
Desempenho


Wednesday, August 8, 12
Agilidade nas mudanças


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



Wednesday, August 8, 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)


Wednesday, August 8, 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
Wednesday, August 8, 12
Feito por um SysAdmin para SysAdmins




Wednesday, August 8, 12
Eficiente para uso DevOps




Wednesday, August 8, 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)
Wednesday, August 8, 12
Cases Puppet




Wednesday, August 8, 12
Arquitetura
                          Como funciona o Puppet?




Wednesday, August 8, 12
Resource Abstraction Layer
                                    (RAL)



Wednesday, August 8, 12
Puppet: RAL

                    Resource Abstraction Layer = RAL
                    Camada de Abstração de Recursos
                    Fale o que você quer que seja feito
                    Não se preocupe em como será feito
                    O Puppet sabe como fazer

Wednesday, August 8, 12
Instale Pacote X


Wednesday, August 8, 12
Remova usuário Z


Wednesday, August 8, 12
(Re)inicie serviço Y


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




Wednesday, August 8, 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


Wednesday, August 8, 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.




Wednesday, August 8, 12
Processamento
             do Catálogo
       1) Agente Requisita Catálogo
       1.1) Agente envia Fatos para Master
       2) Master Processa Fatos e Compara
       2.1) Master Produz e envia Catálogo
       3) Node Recebe, Compara e Aplica
       4) Node informa estado atual ao Master
       5) Sistema reflete catálogo

Wednesday, August 8, 12
Idempotência


Wednesday, August 8, 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
Wednesday, August 8, 12
Puppet Master

        8140 TCP                           8139 TCP
          Client                SSL          Server
        puppetd -t                         puppetrun

                           Puppet Client



                    Puppet Visão em Rede
Wednesday, August 8, 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.

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




Wednesday, August 8, 12
Adicionando Nodes
                                ZABBIX
                      NGINX

                                                 JBOSS


                                         POSTGRESQL


                                MEMCACHED




Wednesday, August 8, 12
Adicionando Nodes
                                ZABBIX
                      NGINX

                                                 JBOSS


                                         POSTGRESQL


                                MEMCACHED


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


Wednesday, August 8, 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


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



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




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




Wednesday, August 8, 12
Como funciona o modo cliente/servidor?

Wednesday, August 8, 12
Arquitetura Cliente/Servidor

                    O agente gera um certificado digital
                    O master precisa autorizar o certificado
                    Sem autorização o agente não pode se comunicar
                    Toda a comunicação entre agente e master é segura


Wednesday, August 8, 12
Fluxo Cliente/Servidor
                  Instalação do
                      node




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




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




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



                                                   Envio de
                                                  Certificado




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



                                  Master Assina     Envio de
                                   Certificado      Certificado




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



                       Agente     Master Assina     Envio de
                     Sincroniza    Certificado      Certificado




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



                       Agente           Master Assina             Envio de
                     Sincroniza          Certificado              Certificado


    Modalidades de Assinatura de Certificado
         Assinatura pode ser manual
         Assinatura pode ser automática por domínio
         Assinatura pode ser automática em qualquer requisição
Wednesday, August 8, 12
O agente se comunica com o
                            master a cada N minutos




Wednesday, August 8, 12
Quais recursos estão disponíveis?




Wednesday, August 8, 12
Recursos do Puppet

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

Wednesday, August 8, 12
Puppet Resource Types
                          Arquivos e Diretórios   Yum Repos

                          Usuários                Augeas

                          Alias                   Hosts

                          Pacotes                 SSH

                          Serviços                Cron

     O puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo.


Wednesday, August 8, 12
Resource Type: Packages
                    Suporte a 23 tipos de
                    provedores de pacotes

                    Faz a abstração do OS

                    Declare se o pacote deve estar
                    presente ou ausente

                    Declare se o pacote deve
                    sempre estar em sua última
                    versão


Wednesday, August 8, 12
Resource Type: Services
                    Suporta 11 tipos de sistemas
                    INIT para inicializar serviços

                    Declare se um serviço deve
                    estar sempre rodando

                    Declare se um serviço deve ser
                    carregado no boot

                    Declare se um serviço depende
                    de um pacote ou arquivo


Wednesday, August 8, 12
Resource Type: File
                    Especifique permissões e
                    owners
                    Declare arquivos,
                    diretórios e links
                    Controle de mudanças
                    usando até 15 tipos de
                    checksums

Wednesday, August 8, 12
Exemplos
Wednesday, August 8, 12
Instala, Configura e Inicia
     debian-way

          # aptitude install apache2
          # update-rc.d -f apache2 defaults
          # cp ~/httpd.conf /etc/apache2/
          # invoke-rc.d apache2 start


Wednesday, August 8, 12
Instala, Configura e Inicia
         package { 'apache2':
           ensure => present,
           }
          
         service { 'apache2':
           ensure => running,
           enable => true,
           }

         file { 'httpd.conf':
           path => “/etc/apache2/httpd.conf”,
           source => “/etc/puppet/files/httpd.conf”,
           }
Wednesday, August 8, 12
Instala, Configura e Inicia
         package { 'apache2':
           ensure => present,
           }                                  resource type
          
         service { 'apache2':
                                                parameter
           ensure => running,                      title
           enable => true,                        value
           }

         file { 'httpd.conf':
           path => “/etc/apache2/httpd.conf”,
           source => “/etc/puppet/files/httpd.conf”,
           }
Wednesday, August 8, 12
Base Class
                 class linux-server {
                   include sysadmin-utils
                   include zabbix-agent
                   include ntpconf
                   include locales
                   include hosts
                   include users
                   include localmta
                   include vimrc
                   include backup-agent
                   include apt-repos
                 }

Wednesday, August 8, 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
           }

Wednesday, August 8, 12
Variáveis e Fatos
         Fatos (facter)

        domain            => hacklab,
                                                     Variáveis
        fqdn              => puppetmaster.hacklab,
        hostname          => puppetmaster,
                                                     vimpackage => vim-puppet,
        interfaces        => eth0,eth1,lo,
        ipaddress_eth0    => 10.0.2.15,
                                                     apacheservice => apache2,
        ipaddress_eth1    => 192.168.56.150,
        ipaddress_lo      => 127.0.0.1,
                                                     ntpconfrhel   => ntp.conf.rhel,
        lsbdistid         => debian,
        lsbdistrelease    => 6.0.5,



Wednesday, August 8, 12
Condicionais
                case $operatingsystem {
                  CentOS,RedHat: {
                    $package_name = 'ntp',
                    $service_name = 'ntpd',
                    $conf_file      = 'ntp.conf.el',
                  }
                  Debian,Ubuntu: {
                    $package_name = 'ntp',
                    $service_name = 'ntp',
                    $conf_file      = 'ntp.conf.debian',
                  }
                }
                ....
Wednesday, August 8, 12
Definições
      proxy::squid { 'ProxyFilial' :
          http_port                       => '3128',
          squid_mode                      => 'transparent',
          squid_hostname                  => 'proxy.4linux',
          cache_mem                       => '2 GB',
          maximum_object_size_in_memory   => '6 MB',
          maximum_object_size             => '128 MB',
          memory_replacement_policy       => 'heap GDSF',
          cache_replacement_policy        => 'heap LFUDA',
          cache_dir                       => 'aufs /var/spool/squid 1024 16 256',
          cache_mgr                       => 'monitora@4linux.com.br',
          cache_effective_user            => 'proxy',
          cache_effective_group           => 'proxy',
          dns_nameservers                 => '127.0.0.1 10.61.12.2 172.16.1.1',
          ips_squid                       => '127.0.0.1 192.168.12.3',
        }


Wednesday, August 8, 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



Wednesday, August 8, 12
Como acompanho mudanças?



Wednesday, August 8, 12
Puppet Dashboard




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


Wednesday, August 8, 12
Marionette Collective
                    Orquestrador de nodes

                    Execução de Tarefas Paralelas

                    Interação com centenas de nodes

                    Inventário descentralizado

                    Leitura de meta-dados do Puppet

                    Similar a Fabric e Capistrano


Wednesday, August 8, 12
Qual o resultado concreto?
Wednesday, August 8, 12
Documentação Instantânea




Wednesday, August 8, 12
Restore e backup de mudanças




Wednesday, August 8, 12
Processos bem definidos




Wednesday, August 8, 12
Ambiente Padronizado




Wednesday, August 8, 12
Tarefas Automatizadas




Wednesday, August 8, 12
Benefícios Reais
                    Maior produtividade em menor tempo
                    Poucos SysAdmins para muitos nodes
                    Diminuição de falhas humanas
                    Maior controle de todo o seu parque
                    Diminuição do tempo gasto em mudanças
                    Diminuição do custo de manutenção
Wednesday, August 8, 12
Tecnologia trabalhando para você




Wednesday, August 8, 12
Puppet e a nuvem
Wednesday, August 8, 12
Puppet & Cloud IaaS
                          Cloud Tools (FOSS)   Cloud Hosts




                          Ganeti


Wednesday, August 8, 12
Boas Práticas
Wednesday, August 8, 12
Use API do fornecedor


Wednesday, August 8, 12
Desenvolva sua Infra


Wednesday, August 8, 12
Versione suas configurações



Wednesday, August 8, 12
Reaproveite Código


Wednesday, August 8, 12
GitHub & PuppetForge


Wednesday, August 8, 12
Pesquise!


Wednesday, August 8, 12
Puppet em números
                    727 pessoas online no canal
                    #puppet da irc.freenode.net

                    8.500 repositórios no GitHub

                    450 módulos no PuppetForge

                    4457 usuários ativos na lista
                    puppet-users com 7795 tópicos de
                    discussão

 Dados coletados em 2012-08-06 às 10:34 PM
Wednesday, August 8, 12
4Linux & PuppetLabs
                          1o Parceiro no Brasil

                          Consultores Especializados

                          Cases no Governo Federal

                          Suporte Puppet Enterprise

                          Treinamentos Puppet Master




Wednesday, August 8, 12
Puppet na rede
              Site/Blog                         Google Groups
              http://www.puppetlabs.com         Puppet-camp,
              http://www.puppetlabs.com/blog/   puppet-users,
              http://puppet-br.org/             puppet-users-br,
                                                puppet-dev
              Twitter
              @puppetlabs                       IRC
                                                irc.freenode.org
              GitHub                            #puppet
              http://www.github.com/puppelabs   #puppet-br




Wednesday, August 8, 12
Perguntas?


Wednesday, August 8, 12
Contato

       Twitter @gutocarvalho
       gutocarvalho@gmail.com
        slideshare.net/gutocarvalho
        gutocarvalho.net



                          Obrigado!
Wednesday, August 8, 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


Wednesday, August 8, 12

Contenu connexe

En vedette

VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern ApplicationsVMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
Puppet
 

En vedette (13)

Paasta: Application Delivery at Yelp
Paasta: Application Delivery at YelpPaasta: Application Delivery at Yelp
Paasta: Application Delivery at Yelp
 
Infrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / PuppetInfrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / Puppet
 
SCM PPT
SCM PPTSCM PPT
SCM PPT
 
Puppet Camp Berlin 2014: Advanced Puppet Design
Puppet Camp Berlin 2014: Advanced Puppet DesignPuppet Camp Berlin 2014: Advanced Puppet Design
Puppet Camp Berlin 2014: Advanced Puppet Design
 
VMware vCHS, Puppet, and Project Zombie - PuppetConf 2013
VMware vCHS, Puppet, and Project Zombie - PuppetConf 2013VMware vCHS, Puppet, and Project Zombie - PuppetConf 2013
VMware vCHS, Puppet, and Project Zombie - PuppetConf 2013
 
PuppetConf 2016: Puppet and UCS: Policy-Based Management All the Way Down – C...
PuppetConf 2016: Puppet and UCS: Policy-Based Management All the Way Down – C...PuppetConf 2016: Puppet and UCS: Policy-Based Management All the Way Down – C...
PuppetConf 2016: Puppet and UCS: Policy-Based Management All the Way Down – C...
 
Building self-service on demand infrastructure with Puppet and VMware
Building self-service on demand infrastructure with Puppet and VMwareBuilding self-service on demand infrastructure with Puppet and VMware
Building self-service on demand infrastructure with Puppet and VMware
 
VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern ApplicationsVMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
 
Intro to-puppet
Intro to-puppetIntro to-puppet
Intro to-puppet
 
PuppetConf 2016: Watching the Puppet Show – Sean Porter, Heavy Water Operations
PuppetConf 2016: Watching the Puppet Show – Sean Porter, Heavy Water OperationsPuppetConf 2016: Watching the Puppet Show – Sean Porter, Heavy Water Operations
PuppetConf 2016: Watching the Puppet Show – Sean Porter, Heavy Water Operations
 
PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...
PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...
PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...
 
Demystifying TLS
Demystifying TLSDemystifying TLS
Demystifying TLS
 
Puppets ppt
Puppets pptPuppets ppt
Puppets ppt
 

Similaire à Puppet Cloud IaaS

App Web Escalaveis Fisl
App Web Escalaveis FislApp Web Escalaveis Fisl
App Web Escalaveis Fisl
Elton Minetto
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
4LinuxCursos
 

Similaire à Puppet Cloud IaaS (20)

Oficina Puppet latinoware
Oficina Puppet latinowareOficina Puppet latinoware
Oficina Puppet latinoware
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISL
 
Palestra Puppet Hora Livre
Palestra Puppet Hora LivrePalestra Puppet Hora Livre
Palestra Puppet Hora Livre
 
Open a Window, see the clouds - TechEd 2011
Open a Window, see the clouds - TechEd 2011Open a Window, see the clouds - TechEd 2011
Open a Window, see the clouds - TechEd 2011
 
App Web Escalaveis Fisl
App Web Escalaveis FislApp Web Escalaveis Fisl
App Web Escalaveis Fisl
 
Alex Vitola
Alex VitolaAlex Vitola
Alex Vitola
 
Apresentacao_Puppet
Apresentacao_PuppetApresentacao_Puppet
Apresentacao_Puppet
 
Automação de Ambientes com Puppet
Automação de Ambientes com Puppet Automação de Ambientes com Puppet
Automação de Ambientes com Puppet
 
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
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Otimizacao de aplicações Zend Framework
Otimizacao de aplicações Zend FrameworkOtimizacao de aplicações Zend Framework
Otimizacao de aplicações Zend Framework
 
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
 
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
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Backup e Armazenamento na Nuvem [WEBINAR]
Backup e Armazenamento na Nuvem [WEBINAR]Backup e Armazenamento na Nuvem [WEBINAR]
Backup e Armazenamento na Nuvem [WEBINAR]
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHP
 

Plus de Jose Augusto Carvalho

Plus de Jose Augusto Carvalho (10)

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

Puppet Cloud IaaS

  • 1. Gerência de Configurações em Cloud Puppet em ambientes IaaS José Augusto (Guto) Carvalho gutocarvalho@gmail.com Wednesday, August 8, 12
  • 2. 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 Wednesday, August 8, 12
  • 4. Plano de Trabalho 40 minutos de apresentação 5 minutos para perguntas Wednesday, August 8, 12
  • 5. 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 Wednesday, August 8, 12
  • 6. Cloud Computing - Tendência Wednesday, August 8, 12
  • 7. Cloud e seus Benefícios Hiper escalável Rápida e elástica Abstração de hardware Infraestrutura dinâmica Alta disponibilidade Investimento atraente Wednesday, August 8, 12
  • 8. Provisionamento Podemos criar 500 VM’s em poucos minutos Wednesday, August 8, 12
  • 9. Como Administrar 500 VM’s? Wednesday, August 8, 12
  • 11. Acesso Secure Shell (ssh)? Wednesday, August 8, 12
  • 12. Host a Host? Wednesday, August 8, 12
  • 13. Quantos SysAdmins são necessários para administrar 500 servidores? Wednesday, August 8, 12
  • 14. Qual a velocidade nas mudanças em seu ambiente? Wednesday, August 8, 12
  • 15. Qual a probabilidade de falhas decorrentes de mudanças manuais? Wednesday, August 8, 12
  • 16. Você consegue manter todo o seu ambiente padronizado? Wednesday, August 8, 12
  • 17. Seu custo com manutenção e equipes técnicas está aumentando? Wednesday, August 8, 12
  • 18. Está difícil colocar suas configurações nos trilhos? Wednesday, August 8, 12
  • 19. Como resolver isto? Como obtenho controle e padronização em meu ambiente ? Wednesday, August 8, 12
  • 27. Puppet Ferramenta de nova geração que implementa gerência de configurações para seu ambiente. Wednesday, August 8, 12
  • 28. 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) Wednesday, August 8, 12
  • 29. 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 Wednesday, August 8, 12
  • 30. Feito por um SysAdmin para SysAdmins Wednesday, August 8, 12
  • 31. Eficiente para uso DevOps Wednesday, August 8, 12
  • 32. 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) Wednesday, August 8, 12
  • 34. Arquitetura Como funciona o Puppet? Wednesday, August 8, 12
  • 35. Resource Abstraction Layer (RAL) Wednesday, August 8, 12
  • 36. Puppet: RAL Resource Abstraction Layer = RAL Camada de Abstração de Recursos Fale o que você quer que seja feito Não se preocupe em como será feito O Puppet sabe como fazer Wednesday, August 8, 12
  • 40. Tratamento de Informações O grande diferencial do Puppet é a forma como ele trata as informações de seus nodes Wednesday, August 8, 12
  • 41. 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 Wednesday, August 8, 12
  • 42. 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. Wednesday, August 8, 12
  • 43. Processamento do Catálogo 1) Agente Requisita Catálogo 1.1) Agente envia Fatos para Master 2) Master Processa Fatos e Compara 2.1) Master Produz e envia Catálogo 3) Node Recebe, Compara e Aplica 4) Node informa estado atual ao Master 5) Sistema reflete catálogo Wednesday, August 8, 12
  • 45. 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 Wednesday, August 8, 12
  • 46. Puppet Master 8140 TCP 8139 TCP Client SSL Server puppetd -t puppetrun Puppet Client Puppet Visão em Rede Wednesday, August 8, 12
  • 47. 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. Wednesday, August 8, 12
  • 48. Quando seu ambiente IaaS começar a crescer demais você vai perceber administrá-lo não é tão simples. Wednesday, August 8, 12
  • 49. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Wednesday, August 8, 12
  • 50. Adicionando Nodes ZABBIX NGINX JBOSS POSTGRESQL MEMCACHED Adicionar um novo node representa N mudanças Wednesday, August 8, 12
  • 51. Adicionando Nodes sysadmin-utils ZABBIX zabbix-agent NGINX ntpconf locales JBOSS hosts users POSTGRESQL localmta smtpd vimrc MEMCACHED backup-agent apt-repos Wednesday, August 8, 12
  • 52. 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 Wednesday, August 8, 12
  • 53. Insira o Puppet na imagem de instalação de seus nodes. Wednesday, August 8, 12
  • 54. Não tenha medo de realizar atualizações, o puppet faz pra você! Wednesday, August 8, 12
  • 55. Você pode fazer deploy de sua APP Você pode controlar a versão de sua APP Wednesday, August 8, 12
  • 56. Como funciona o modo cliente/servidor? Wednesday, August 8, 12
  • 57. Arquitetura Cliente/Servidor O agente gera um certificado digital O master precisa autorizar o certificado Sem autorização o agente não pode se comunicar Toda a comunicação entre agente e master é segura Wednesday, August 8, 12
  • 58. Fluxo Cliente/Servidor Instalação do node Wednesday, August 8, 12
  • 59. Fluxo Cliente/Servidor Instalação do Inicialização node do puppet Wednesday, August 8, 12
  • 60. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Wednesday, August 8, 12
  • 61. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Envio de Certificado Wednesday, August 8, 12
  • 62. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Master Assina Envio de Certificado Certificado Wednesday, August 8, 12
  • 63. Fluxo Cliente/Servidor Instalação do Inicialização Geração de node do puppet Certificado Agente Master Assina Envio de Sincroniza Certificado Certificado Wednesday, August 8, 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 Modalidades de Assinatura de Certificado Assinatura pode ser manual Assinatura pode ser automática por domínio Assinatura pode ser automática em qualquer requisição Wednesday, August 8, 12
  • 65. O agente se comunica com o master a cada N minutos Wednesday, August 8, 12
  • 66. Quais recursos estão disponíveis? Wednesday, August 8, 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 Wednesday, August 8, 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. Wednesday, August 8, 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 Wednesday, August 8, 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 Wednesday, August 8, 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 Wednesday, August 8, 12
  • 73. Instala, Configura e Inicia debian-way # aptitude install apache2 # update-rc.d -f apache2 defaults # cp ~/httpd.conf /etc/apache2/ # invoke-rc.d apache2 start Wednesday, August 8, 12
  • 74. Instala, Configura e Inicia package { 'apache2': ensure => present, }   service { 'apache2': ensure => running, enable => true, } file { 'httpd.conf': path => “/etc/apache2/httpd.conf”, source => “/etc/puppet/files/httpd.conf”, } Wednesday, August 8, 12
  • 75. Instala, Configura e Inicia package { 'apache2': ensure => present, } resource type   service { 'apache2': parameter ensure => running, title enable => true, value } file { 'httpd.conf': path => “/etc/apache2/httpd.conf”, source => “/etc/puppet/files/httpd.conf”, } Wednesday, August 8, 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 } Wednesday, August 8, 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 } Wednesday, August 8, 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, Wednesday, August 8, 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', } } .... Wednesday, August 8, 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', } Wednesday, August 8, 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 Wednesday, August 8, 12
  • 84. Posso fazer mudanças em tempo real? Wednesday, August 8, 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 Wednesday, August 8, 12
  • 86. Qual o resultado concreto? Wednesday, August 8, 12
  • 88. Restore e backup de mudanças Wednesday, August 8, 12
  • 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 Wednesday, August 8, 12
  • 93. Tecnologia trabalhando para você Wednesday, August 8, 12
  • 94. Puppet e a nuvem Wednesday, August 8, 12
  • 95. Puppet & Cloud IaaS Cloud Tools (FOSS) Cloud Hosts Ganeti Wednesday, August 8, 12
  • 97. Use API do fornecedor Wednesday, August 8, 12
  • 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 Wednesday, August 8, 12
  • 104. 4Linux & PuppetLabs 1o Parceiro no Brasil Consultores Especializados Cases no Governo Federal Suporte Puppet Enterprise Treinamentos Puppet Master Wednesday, August 8, 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 Wednesday, August 8, 12
  • 107. Contato Twitter @gutocarvalho gutocarvalho@gmail.com slideshare.net/gutocarvalho gutocarvalho.net Obrigado! Wednesday, August 8, 12
  • 108. 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 Wednesday, August 8, 12

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. Instala&amp;#xE7;&amp;#xE3;o de novo agente de monitoramento em um parque de 500 VM&amp;#x2019;s?\nComo fazer?\n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n