CONSEGI 2011



Assuma o controle do seu
   parque virtualizado

                               Palestrantes:
              Guto Carvalho @gutocarvalho
                   Daniel Sobral @dcsobral
Já teve a sensação de estar perdendo o
 controle do seu ambiente virtualizado?




        Foto tirada do site sysadminday.com por Frank Schicksal
O que se busca com a virtualização?
●   Melhor consumo de energia
●   Administração Centralizada
●   Uso eficiente dos recursos de hardware
●   Agilidade na instalação de novos ambientes
●   Isolamento de ambientes
●   Flexibilidade para ajustar recursos das Vms
     ●   Memória
     ●   Processamento
     ●   Armazenamento
     ●   Rede
●   Maior controle do ambiente
●   Consolidação de seu ambiente físico
●   Aumentar disponibilidade do ambiente
Quais os problemas de percurso?
●   Crescimento sem Padronização
●   Crescimento sem Monitoramento
●   Crescimento sem Documentação
●   Tecnologias híbridas que combinam softwares
    proprietários e livres que tem dificuldades para
    funcionarem em conjunto e que demandam
    manutenções e ajustes constantes.
●   Ambiente com grande complexidade de manutenção
CASE

EBC
Necessidades do cliente
●   Isolamento de ambientes e serviços em vm's
●   Facilidade de migração entre sites em uma mesma cidade
●   Ter maior estabilidade nos serviços oferecidos
●   Ter maior disponibilidade
●   Curta curva de aprendizagem – na tecnologia de
    virtualização - para a equipe de administradores.
●   CPDs geograficamente separados, permitindo movimentar
    máquinas entre eles de forma transparente.
●   Otimizar o uso de armazenamento em disco
Desafios
Centralização da administração e configuração
●


Padronização do ambiente
●


    ●   Sistemas operacionais
    ●   Ferramentas de administração
    ●   Configuração dos serviços
●Rápida implantação e implementação de
soluções
Conversão de infraestrutura
●


Ter uma manutenção descomplicada
●
Decisões Importantes
●   Utilização de tecnologia livre ou open-source
●   Internalizar suporte da solução
●   Utilização coerente de recursos e orçamento
●   Investimento em conhecimento e equipe
●   Investimento financeiro em hardware
●   Investimento financeiro mínimo em software
●   Renovação do parque de servidores
Caso de Estudo
       ●   EBC - Empresa Brasil de
           Comunicação
       ●   Cerca de 160 máquinas virtuais
           rodando em um 'cluster' com 15
           nós
       ●   Gestão e distribuição de
           configurações
       ●   Administração compartilhada de
           4 DevOps
       ●   Automação de serviços e
           procedimentos
       ●   Monitoramento robusto
Especialistas Envolvidos

Equipe Tecnisys
José Augusto Carvalho @gutocarvalho
Daniel Sobral @dcsobral
Jefferson Santos @jalexandre0

Equipe EBC
Tadeu Ibns N. Rocha – tadeuibns@gmail.com
José Eufrásio @coredump
Nieson Santos – nieson.santos@gmail.com
VIRTUALIZAÇÃO
Terminologia


Virtualização consiste em executar vários
sistemas operacionais em uma mesma máquina.

Cluster Node = Máquina Física

Instance = Máquina Virtual
Nossa escolha
●   Produto criado pelo Google: GANETI
●   Case interessante de uso interno no Google
●   Facilidade de implementação
●   Utilização de hypervisors livres XEN e KVM
●   Funciona em modo Cluster
●   Permite migração de máquinas entre nós do cluster
●   Administração simplificada via CLI ou WEB (frontends)
●   Boa documentação, desenvolvimento ativo e comunidade
    crescente
Visão Geral da Ferramenta
Gerenciador Open Source           para
virtualização em Cluster

Combina virtualização e replicação de
disco em tempo real

Oferece uma aplicação de alta
disponibilidade   promovendo     uma
melhor utilização dos recursos do seu
datacenter.

É utilizado pelo Google internamente.
Estrutura Lógica do Ganeti
●   Cluster
●   Nó mestre
●   Nós
●   Instâncias
Migração entre Nodes
Replicação
●   Replicação de dados em tempo real via DRBD
●   Node secundário assume em caso de falha
Administração Centralizada

Na infraestrutura XEN a administração é
descentralizada, precisávamos entrar em cada
máquina para fazer manutenções nas VM.


Hoje fazemos isto de forma centralizada no
master node.
Visão dos recursos disponíveis
Usando apenas XEN, para criar máquinas
precisávamos entrar em cada servidor para
avaliar os recursos disponíveis e escolher um
servidor ideal para instalar o serviço.


Com o Ganeti temos um visão completa de todo o
cluster a partir do nó Master.
Ferramenta Sólida
●   Não depende de hardware específico
●   Escala linearmente
●   Redundância N+1
Administrando




Até agora tudo bem, mas e a administração como
funciona, será que é realmente descomplicado e
                 transparente?
Operações em seu cluster via CLI
1. Criando um cluster (resumidamente)

# gnt-cluster init gnt-node01.empresa

2. Adicionando nó ao cluster (após instalar o node)

# gnt-instance add node02
# gnt-instance add node03

3. Criando máquina virtual

# gnt-instance add -n node1 -t plain -H memory=1G -s 10G -o
debian apache01
Comandos básicos
4. desligando
# gnt-instance shutdown maquina


5. ligando
# gnt-instance startup maquina

6. reiniciando
# gnt-instance reboot maquina

7. acessando console de maquinas em qualquer lugar do cluster mestre

# gnt-instance console maquina

8. removendo instancia

# gnt-instance remove maquina
Comandos básicos
9. Movendo máquinas entre nós

# gnt-instance move -n gnt-node05 maquina

10. Exportando instancia

# gnt-backup export -n gnt-node05 maquina

11. Importando instância

# gnt-backup import -n gnt-node06 --src-node=gnt-node05 –
src-dir=/diretorio maquina
Comandos Básicos
14. Montando discos localmente para manutenções

# gnt-instance activate-disks maquina
# ssh gnt-nodeXX
# kpartx -av /dev/mapper/xenvg-xxx.disk0
# mount /dev/xenvg/xxxx /mnt/disco
Alterando recursos de VMs
1. Adicionando mais memoria

# gnt-instance modify -B memory=4G maquina


2. Adicionando mais processadores


# gnt-instance modify -B vcpus=3 maquina


3. Adicionando mais placas de rede


# gnt-instance modify -B --net add:ip=192.168.50.173 maquina


4. Adicionando disco/partição


# gnt-instance gnt-instance modify --disk add:size=1g smtp02
Hooks
●   Execução de comandos na instalação da instância
●   Criação de Perfis de Instalação
●   Padronização de configurações do OS durante a
    instalação
    ●   Instalação e configuração dos pacotes básicos
    ●   Configurações de idioma
    ●   Configurações de localização
    ●   Configurações de repositórios
    ●   Configurações de rede e segurança
    ●   Configurações de usuários e grupos
Ganhos com essa tecnologia
Cliente
●   Uso coerente dos recursos de hardware/rede
●   Investimento em conhecimento da equipe
●   Investimento de SW direcionado para HW

Equipe
●   Facilidade na criação e adm. de máquinas
●   Movimentação de VM's entre nós e SITES
●   Replicação DRDB = Alta disponibilidade
Limitações
●   Uso de Múltiplos volumes – storage area
    network (SAN)
●   SNAPSHOTs
●   Clonagem de máquinas
●   DRDB e desempenho
●   I/O
●   Uso de Múltiplas Redes
GanetI Web Manager
Ganeti Web Manager
GANETI: Web Manager
GANETI: Web Manager
GANETI: Web Manager
Comparando
Instalação de Máquina Física – Debian Lenny

Tempo de criação de maquina virtual - 40 minutos
Tempo de configuração/update* via internet – 40 minutos
* Levando em conta configurações da rede, locale, ntpdate, backup,
monitoramento, criação de usuários, instalação de pacotes básicos do
sysadmin.

Instalação de Máquina Virtual – Debian Lenny

Tempo de criação de maquina virtual - 2 minutos
Tempo de configuração/update* usando Hooks – 2 a 4 minutos
* Levando em conta configurações da rede, locale, ntpdate, backup, monitoramento,
criação de usuários, instalação de pacotes básicos do sysadmin.
Dicas importantes
●   Atenção com DNS, dependência grande para criar a
    VMs
●   Uso e abuse de Activate Disks para montar e `clonar`
    máquinas
●   GrowDisk e Parted
●   Nunca dê CTRL+C
●   Usar - - submit
●   Tenha paciência, não use KILL em um processo de
    MOVE ou CREATE. Espere terminar.
Expandindo os Hooks



Sabendo que os hooks só podem ser utilizados
instalação das VMS, como ir além dos hooks...?

Como podemos atuar no gerenciamento de
configurações no momento em que precisarmos?
Gestão de Configuração
Gestão de Configuração
●   Facilitar o trabalho de administração de
    servidores
●   Padronizar as configurações utilizadas
●   Possibilitar auditoria de configuração
●   Centralizar a administração
●   Acelerar a criação de novos servidores
●   Acelerar a configuração de serviços
Exemplos de Itens de Configuração
●   Usuários
●   Grupos
●   Arquivos de Configuração
●   Pacotes instalados
●   Execução periódica de scripts
Nossa Escolha
       ●   Puppet (2005)
           ●   Ruby, GPL
           ●   AIX, BSD, HP-UX,
               Linux, MaxOS,
               Solaris, Windows(*)
           ●   Wikipedia:
           ●   Configuration_management
           ●   Comparison_of_open_sourc
               e_configuration_manageme
               nt_software
PUPPET: Funcionamento
●   Tipos:                           ●   Passos:
    ●   Autônomo                         ●   Cliente obtém plugins
        –   Configuração local           ●   Cliente envia fatos
    ●   Cliente/Servidor                 ●   Servidor produz
        –   HTTPS                            catálogo
        –   Certificado de Cliente       ●   Cliente processa
        –   Pull por default                 catálogo
        –   Push opcional                ●   Cliente envia relatório
Puppet: Fácil Aprendizado
               Sintaxe Declarativa
●   Pacote ntpdate
     ●   Garantir que esteja instalado
●   Crontab
     ●   Usuário root
     ●   Comando 'ntpdate ntp.dominio'
     ●   Executar de hora em hora

    package { 'ntpdate':
        ensure => installed,
    }

    cron { 'sincroniza horario':
        user    => 'root',
        command => '/usr/sbin/ntpdate ntp.dominio',
        minute => 0,
    }
Puppet: Fácil Aprendizado
          Independente de Plataforma
c l as s edi t or {
       $v i m = $oper at i ngs y s t em ? {
              ' RedHat ' => ' v i m enhanc ed',
                                     -
              ' Cent OS' => ' v i m enhanc ed',
                                     -
              ' Fedor a' => ' v i m enhanc ed',
                                     -
              def aul t  => ' v i m  ',
       }
       pac k age { " $v i m":
              ens ur e => pr es ent,
              al i as => ' v i m',
       }
}
node “ hos t 01. dom n. c om br ” {
                        ai         .
       i nc l ude edi t or
}
node “ hos t 02. dom n. c om br ” {
                        ai         .
       i nc l ude edi t or
}
Puppet: Auto documentado

class linux-server {
   # Include classes common to all linux servers
   include localmta
   include ntpdate
   include puppet::conf
   include ssh::server
   include sudoers
   include users
   include utils
   include zabbix-agent
   include editor
   include snmpd
   include rsyslog

  #...
Puppet: Controle de Versão e
                 Rollback
#gi t l og
c om i t 263b2239cc f f 746f 345c448d723f 4f f 52d3f 8c0f
    m
Aut hor : Dani el Sobr al <dcs obr al @ ai l . com
                                       gm         >
Dat e:     Thu Mar 31 22: 11: 16 2011 - 0300

    Ex cl ui a bol et i ns das máqui nas c onf i gur adas c om m a s at él i t e.
                                                              o t

    Li m t a a conf i gur aç ão do ex i m às m
        i                                4    áqui nas Ubunt u e Debi an.

c om i t 8f bed5a4b8095b7560941c598454d47f 3b3dec7e
    m
Aut hor : Dani el Sobr al <dcs obr al @ ai l . com
                                       gm         >
Dat e:    Thu M ar 31 22: 08: 22 2011 - 0300

      Cl as se debi an- c om on adapt ada par a l i dar com Ubunt u. Basi cam
                            m                                                  ent e,
f or ça
      l i dar com s er vi ços no padr ão Debi an ( Ubunt u s upor t a padr ão Fr eeBSD
      t am bém , e não m
              )            exe no sour ce l i st ( por hor a).

    Si st emas Ubunt u t ambém i nc l ui r ão a c l as s e debi an- s er ver.

    Ver i f i ca se o k er nel é xen, e, s e f or , i nc l ui o l i nux modul es
    cor r es pondent e.
Puppet: Altamente Flexível

node " el ei c oes c onc ur v m 01" {
    i nc l ude l i nux - s er v er
    j bos s : : app { ' c ons el ho':
           c onf => ' def aul t ',
           pgdb => ' c ons el hopr od' , # Al t er a pg_ hba. c onf
    }
}

node “ el ei c oes c onc ur v m bd01” {
    i nc l ude l i nux - s er v er
    pgdb { ' c ons el hopr od' :               # Ger a XM par a dat as our c e
                                                         L
           pas s wor d => ' * * * * * * * * ',
           pgv er s i on => ' 8. 4',
    }
}
Puppet: Expansível
                           def i ne pgcl i ent ( $ens ur e = pr esent ,
●   Puppet                 $i p = $i paddr ess) {
                                   @ l i ne { " pgcl i ent ${ i p} ":
                                     @
    ●   Classes                           ens ur e => $ensur e,
                                          l i ne     => " ${ i p} / 32 n",
                                          r equi r e => Fi l e[ ' c l i ent i p' ],
    ●   Definições                        t ag       => " pgcl i ent _ $
                           { t i t l e} " ,
●   Templates (ERB)        }
                                   }

●   Ruby                   # augeas v er s i on. r b
                           Fact er . add( " augeasv er si on" ) do
    ●   Fatos                 set code do
                                  begi n
                                    r equi r e ' augeas '
    ●   Funções                     aug = Augeas: : open( ' ' , ' ' ,
                           Augeas: : NO_LOAD & Augeas : : NO_ STDI NC)
    ●   Tipos                       aug. get ( ' / augeas/ v er s i on' ) | |
                           ni l
    ●   Provedores         #. . .
Puppet: Problemas
●   Mensagens de erro ruins
●   Servidor default nao segura mais de 20
    máquinas
    ●   Com Apache/Passenger, já temos +160 servidores
●   Não distribui arquivos grandes
    ●   Usar pacotes ou execução de comandos como
        wget
●   Grande investimento de tempo para ir do nível
    médio ao de expert
Frontends – Puppet Dashboard
Frontends – The Foreman
●   Visualiza
    ●   Inventário (fatos)
    ●   Relatório
    ●   Configurações
●   Provisiona servidores
    ●   Kickstart
    ●   Jumpstart
    ●   Preseed
PUPPET + GANETI

Onde podemos chegar com essa combinação?
Comparação Final
Máquina Física – Debian Lenny + LAMP
 ●   Tempo de instalação de maquina física – 40 minutos sem atualizações (CD)
 ●   Tempo de configuração/update OS* – padrão - de maquina física – 40 minutos
 ●   Tempo de instalação e configuração Apache2, PHP5, MYSQL – 2 horas**


Máquina Virtual – Debian Lenny

 ●   Tempo de criação de maquina virtual - 2 minutos
 ●   Tempo de configuração/update OS* usando Hooks – 2 a 4 minutos
 ●   Tempo de instação e configuração Apache2, PHP5, MYSQL – 2 a 4 minutos**


* Levando em conta configurações da rede, locale, ntpdate, backup, monitoração, criação de usuários,
instalação de pacotes básicos do sysadmin.

** Levando em conta hardening, tuning os, apache2, php5, mysql, considerando ter as classes prontas
Conclusão
O Ganeti é uma alternativa viável, moderna
estável, largamente utilizado no google, em
franco desenvolvimento com um comunidade
crescente e ativa.


O Puppet é uma ferramenta essencial para
gerenciar e distribuir configurações, ele é um
batalhão de sysadmins trabalhando para você.
Informações dos projetos
Site/Blog                         Site/Blog
Http://ww.puppetlabs.com          http://code.google.com/p/ganeti/
Http://www.puppetlabs.com
                                  Docs
Twitter                           http://docs.ganeti.org
@puppetlabs
                                  Twitter (manager web do ganeti)
Http://www.github.com/puppelabs   @ganetiwebmgr
Google Groups                     Google Groups
Puppet-camp,                      ganeti,
puppet-users,                     ganeti-devel
puppet-dev                        ganeti-webmgr
IRC                               IRC
Irc.freenode.org                  Irc.freenode.org
#puppet                           #ganeti
Contato, Dúvidas, Perguntas
Guto Carvalho:                     Daniel Sobral
gutocarvalho@gmail.com             dcsobral@gmail.com
@gutocarvalho                      @dcsobral
http://gutocarvalho.net/dokuwiki   http://dcsobral.blogspot.com
Http://github.com/dcsobral         Http://github.com/dcsobral


          Palestras de hoje disponíveis em nossos sites.
       Palestra sob licença Creative Commons – Atribuição.

Consegi 2011: Ganeti + Puppet

  • 1.
    CONSEGI 2011 Assuma ocontrole do seu parque virtualizado Palestrantes: Guto Carvalho @gutocarvalho Daniel Sobral @dcsobral
  • 2.
    Já teve asensação de estar perdendo o controle do seu ambiente virtualizado? Foto tirada do site sysadminday.com por Frank Schicksal
  • 3.
    O que sebusca com a virtualização? ● Melhor consumo de energia ● Administração Centralizada ● Uso eficiente dos recursos de hardware ● Agilidade na instalação de novos ambientes ● Isolamento de ambientes ● Flexibilidade para ajustar recursos das Vms ● Memória ● Processamento ● Armazenamento ● Rede ● Maior controle do ambiente ● Consolidação de seu ambiente físico ● Aumentar disponibilidade do ambiente
  • 4.
    Quais os problemasde percurso? ● Crescimento sem Padronização ● Crescimento sem Monitoramento ● Crescimento sem Documentação ● Tecnologias híbridas que combinam softwares proprietários e livres que tem dificuldades para funcionarem em conjunto e que demandam manutenções e ajustes constantes. ● Ambiente com grande complexidade de manutenção
  • 5.
  • 6.
    Necessidades do cliente ● Isolamento de ambientes e serviços em vm's ● Facilidade de migração entre sites em uma mesma cidade ● Ter maior estabilidade nos serviços oferecidos ● Ter maior disponibilidade ● Curta curva de aprendizagem – na tecnologia de virtualização - para a equipe de administradores. ● CPDs geograficamente separados, permitindo movimentar máquinas entre eles de forma transparente. ● Otimizar o uso de armazenamento em disco
  • 7.
    Desafios Centralização da administraçãoe configuração ● Padronização do ambiente ● ● Sistemas operacionais ● Ferramentas de administração ● Configuração dos serviços ●Rápida implantação e implementação de soluções Conversão de infraestrutura ● Ter uma manutenção descomplicada ●
  • 8.
    Decisões Importantes ● Utilização de tecnologia livre ou open-source ● Internalizar suporte da solução ● Utilização coerente de recursos e orçamento ● Investimento em conhecimento e equipe ● Investimento financeiro em hardware ● Investimento financeiro mínimo em software ● Renovação do parque de servidores
  • 9.
    Caso de Estudo ● EBC - Empresa Brasil de Comunicação ● Cerca de 160 máquinas virtuais rodando em um 'cluster' com 15 nós ● Gestão e distribuição de configurações ● Administração compartilhada de 4 DevOps ● Automação de serviços e procedimentos ● Monitoramento robusto
  • 10.
    Especialistas Envolvidos Equipe Tecnisys JoséAugusto Carvalho @gutocarvalho Daniel Sobral @dcsobral Jefferson Santos @jalexandre0 Equipe EBC Tadeu Ibns N. Rocha – tadeuibns@gmail.com José Eufrásio @coredump Nieson Santos – nieson.santos@gmail.com
  • 11.
  • 12.
    Terminologia Virtualização consiste emexecutar vários sistemas operacionais em uma mesma máquina. Cluster Node = Máquina Física Instance = Máquina Virtual
  • 13.
    Nossa escolha ● Produto criado pelo Google: GANETI ● Case interessante de uso interno no Google ● Facilidade de implementação ● Utilização de hypervisors livres XEN e KVM ● Funciona em modo Cluster ● Permite migração de máquinas entre nós do cluster ● Administração simplificada via CLI ou WEB (frontends) ● Boa documentação, desenvolvimento ativo e comunidade crescente
  • 14.
    Visão Geral daFerramenta Gerenciador Open Source para virtualização em Cluster Combina virtualização e replicação de disco em tempo real Oferece uma aplicação de alta disponibilidade promovendo uma melhor utilização dos recursos do seu datacenter. É utilizado pelo Google internamente.
  • 15.
    Estrutura Lógica doGaneti ● Cluster ● Nó mestre ● Nós ● Instâncias
  • 17.
  • 19.
    Replicação ● Replicação de dados em tempo real via DRBD ● Node secundário assume em caso de falha
  • 20.
    Administração Centralizada Na infraestruturaXEN a administração é descentralizada, precisávamos entrar em cada máquina para fazer manutenções nas VM. Hoje fazemos isto de forma centralizada no master node.
  • 21.
    Visão dos recursosdisponíveis Usando apenas XEN, para criar máquinas precisávamos entrar em cada servidor para avaliar os recursos disponíveis e escolher um servidor ideal para instalar o serviço. Com o Ganeti temos um visão completa de todo o cluster a partir do nó Master.
  • 22.
    Ferramenta Sólida ● Não depende de hardware específico ● Escala linearmente ● Redundância N+1
  • 23.
    Administrando Até agora tudobem, mas e a administração como funciona, será que é realmente descomplicado e transparente?
  • 24.
    Operações em seucluster via CLI 1. Criando um cluster (resumidamente) # gnt-cluster init gnt-node01.empresa 2. Adicionando nó ao cluster (após instalar o node) # gnt-instance add node02 # gnt-instance add node03 3. Criando máquina virtual # gnt-instance add -n node1 -t plain -H memory=1G -s 10G -o debian apache01
  • 25.
    Comandos básicos 4. desligando #gnt-instance shutdown maquina 5. ligando # gnt-instance startup maquina 6. reiniciando # gnt-instance reboot maquina 7. acessando console de maquinas em qualquer lugar do cluster mestre # gnt-instance console maquina 8. removendo instancia # gnt-instance remove maquina
  • 26.
    Comandos básicos 9. Movendomáquinas entre nós # gnt-instance move -n gnt-node05 maquina 10. Exportando instancia # gnt-backup export -n gnt-node05 maquina 11. Importando instância # gnt-backup import -n gnt-node06 --src-node=gnt-node05 – src-dir=/diretorio maquina
  • 27.
    Comandos Básicos 14. Montandodiscos localmente para manutenções # gnt-instance activate-disks maquina # ssh gnt-nodeXX # kpartx -av /dev/mapper/xenvg-xxx.disk0 # mount /dev/xenvg/xxxx /mnt/disco
  • 28.
    Alterando recursos deVMs 1. Adicionando mais memoria # gnt-instance modify -B memory=4G maquina 2. Adicionando mais processadores # gnt-instance modify -B vcpus=3 maquina 3. Adicionando mais placas de rede # gnt-instance modify -B --net add:ip=192.168.50.173 maquina 4. Adicionando disco/partição # gnt-instance gnt-instance modify --disk add:size=1g smtp02
  • 29.
    Hooks ● Execução de comandos na instalação da instância ● Criação de Perfis de Instalação ● Padronização de configurações do OS durante a instalação ● Instalação e configuração dos pacotes básicos ● Configurações de idioma ● Configurações de localização ● Configurações de repositórios ● Configurações de rede e segurança ● Configurações de usuários e grupos
  • 30.
    Ganhos com essatecnologia Cliente ● Uso coerente dos recursos de hardware/rede ● Investimento em conhecimento da equipe ● Investimento de SW direcionado para HW Equipe ● Facilidade na criação e adm. de máquinas ● Movimentação de VM's entre nós e SITES ● Replicação DRDB = Alta disponibilidade
  • 31.
    Limitações ● Uso de Múltiplos volumes – storage area network (SAN) ● SNAPSHOTs ● Clonagem de máquinas ● DRDB e desempenho ● I/O ● Uso de Múltiplas Redes
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
    Comparando Instalação de MáquinaFísica – Debian Lenny Tempo de criação de maquina virtual - 40 minutos Tempo de configuração/update* via internet – 40 minutos * Levando em conta configurações da rede, locale, ntpdate, backup, monitoramento, criação de usuários, instalação de pacotes básicos do sysadmin. Instalação de Máquina Virtual – Debian Lenny Tempo de criação de maquina virtual - 2 minutos Tempo de configuração/update* usando Hooks – 2 a 4 minutos * Levando em conta configurações da rede, locale, ntpdate, backup, monitoramento, criação de usuários, instalação de pacotes básicos do sysadmin.
  • 38.
    Dicas importantes ● Atenção com DNS, dependência grande para criar a VMs ● Uso e abuse de Activate Disks para montar e `clonar` máquinas ● GrowDisk e Parted ● Nunca dê CTRL+C ● Usar - - submit ● Tenha paciência, não use KILL em um processo de MOVE ou CREATE. Espere terminar.
  • 39.
    Expandindo os Hooks Sabendoque os hooks só podem ser utilizados instalação das VMS, como ir além dos hooks...? Como podemos atuar no gerenciamento de configurações no momento em que precisarmos?
  • 40.
  • 41.
    Gestão de Configuração ● Facilitar o trabalho de administração de servidores ● Padronizar as configurações utilizadas ● Possibilitar auditoria de configuração ● Centralizar a administração ● Acelerar a criação de novos servidores ● Acelerar a configuração de serviços
  • 42.
    Exemplos de Itensde Configuração ● Usuários ● Grupos ● Arquivos de Configuração ● Pacotes instalados ● Execução periódica de scripts
  • 43.
    Nossa Escolha ● Puppet (2005) ● Ruby, GPL ● AIX, BSD, HP-UX, Linux, MaxOS, Solaris, Windows(*) ● Wikipedia: ● Configuration_management ● Comparison_of_open_sourc e_configuration_manageme nt_software
  • 44.
    PUPPET: Funcionamento ● Tipos: ● Passos: ● Autônomo ● Cliente obtém plugins – Configuração local ● Cliente envia fatos ● Cliente/Servidor ● Servidor produz – HTTPS catálogo – Certificado de Cliente ● Cliente processa – Pull por default catálogo – Push opcional ● Cliente envia relatório
  • 45.
    Puppet: Fácil Aprendizado Sintaxe Declarativa ● Pacote ntpdate ● Garantir que esteja instalado ● Crontab ● Usuário root ● Comando 'ntpdate ntp.dominio' ● Executar de hora em hora package { 'ntpdate': ensure => installed, } cron { 'sincroniza horario': user => 'root', command => '/usr/sbin/ntpdate ntp.dominio', minute => 0, }
  • 46.
    Puppet: Fácil Aprendizado Independente de Plataforma c l as s edi t or { $v i m = $oper at i ngs y s t em ? { ' RedHat ' => ' v i m enhanc ed', - ' Cent OS' => ' v i m enhanc ed', - ' Fedor a' => ' v i m enhanc ed', - def aul t => ' v i m ', } pac k age { " $v i m": ens ur e => pr es ent, al i as => ' v i m', } } node “ hos t 01. dom n. c om br ” { ai . i nc l ude edi t or } node “ hos t 02. dom n. c om br ” { ai . i nc l ude edi t or }
  • 47.
    Puppet: Auto documentado classlinux-server { # Include classes common to all linux servers include localmta include ntpdate include puppet::conf include ssh::server include sudoers include users include utils include zabbix-agent include editor include snmpd include rsyslog #...
  • 48.
    Puppet: Controle deVersão e Rollback #gi t l og c om i t 263b2239cc f f 746f 345c448d723f 4f f 52d3f 8c0f m Aut hor : Dani el Sobr al <dcs obr al @ ai l . com gm > Dat e: Thu Mar 31 22: 11: 16 2011 - 0300 Ex cl ui a bol et i ns das máqui nas c onf i gur adas c om m a s at él i t e. o t Li m t a a conf i gur aç ão do ex i m às m i 4 áqui nas Ubunt u e Debi an. c om i t 8f bed5a4b8095b7560941c598454d47f 3b3dec7e m Aut hor : Dani el Sobr al <dcs obr al @ ai l . com gm > Dat e: Thu M ar 31 22: 08: 22 2011 - 0300 Cl as se debi an- c om on adapt ada par a l i dar com Ubunt u. Basi cam m ent e, f or ça l i dar com s er vi ços no padr ão Debi an ( Ubunt u s upor t a padr ão Fr eeBSD t am bém , e não m ) exe no sour ce l i st ( por hor a). Si st emas Ubunt u t ambém i nc l ui r ão a c l as s e debi an- s er ver. Ver i f i ca se o k er nel é xen, e, s e f or , i nc l ui o l i nux modul es cor r es pondent e.
  • 49.
    Puppet: Altamente Flexível node" el ei c oes c onc ur v m 01" { i nc l ude l i nux - s er v er j bos s : : app { ' c ons el ho': c onf => ' def aul t ', pgdb => ' c ons el hopr od' , # Al t er a pg_ hba. c onf } } node “ el ei c oes c onc ur v m bd01” { i nc l ude l i nux - s er v er pgdb { ' c ons el hopr od' : # Ger a XM par a dat as our c e L pas s wor d => ' * * * * * * * * ', pgv er s i on => ' 8. 4', } }
  • 50.
    Puppet: Expansível def i ne pgcl i ent ( $ens ur e = pr esent , ● Puppet $i p = $i paddr ess) { @ l i ne { " pgcl i ent ${ i p} ": @ ● Classes ens ur e => $ensur e, l i ne => " ${ i p} / 32 n", r equi r e => Fi l e[ ' c l i ent i p' ], ● Definições t ag => " pgcl i ent _ $ { t i t l e} " , ● Templates (ERB) } } ● Ruby # augeas v er s i on. r b Fact er . add( " augeasv er si on" ) do ● Fatos set code do begi n r equi r e ' augeas ' ● Funções aug = Augeas: : open( ' ' , ' ' , Augeas: : NO_LOAD & Augeas : : NO_ STDI NC) ● Tipos aug. get ( ' / augeas/ v er s i on' ) | | ni l ● Provedores #. . .
  • 51.
    Puppet: Problemas ● Mensagens de erro ruins ● Servidor default nao segura mais de 20 máquinas ● Com Apache/Passenger, já temos +160 servidores ● Não distribui arquivos grandes ● Usar pacotes ou execução de comandos como wget ● Grande investimento de tempo para ir do nível médio ao de expert
  • 52.
  • 53.
    Frontends – TheForeman ● Visualiza ● Inventário (fatos) ● Relatório ● Configurações ● Provisiona servidores ● Kickstart ● Jumpstart ● Preseed
  • 54.
    PUPPET + GANETI Ondepodemos chegar com essa combinação?
  • 55.
    Comparação Final Máquina Física– Debian Lenny + LAMP ● Tempo de instalação de maquina física – 40 minutos sem atualizações (CD) ● Tempo de configuração/update OS* – padrão - de maquina física – 40 minutos ● Tempo de instalação e configuração Apache2, PHP5, MYSQL – 2 horas** Máquina Virtual – Debian Lenny ● Tempo de criação de maquina virtual - 2 minutos ● Tempo de configuração/update OS* usando Hooks – 2 a 4 minutos ● Tempo de instação e configuração Apache2, PHP5, MYSQL – 2 a 4 minutos** * Levando em conta configurações da rede, locale, ntpdate, backup, monitoração, criação de usuários, instalação de pacotes básicos do sysadmin. ** Levando em conta hardening, tuning os, apache2, php5, mysql, considerando ter as classes prontas
  • 56.
    Conclusão O Ganeti éuma alternativa viável, moderna estável, largamente utilizado no google, em franco desenvolvimento com um comunidade crescente e ativa. O Puppet é uma ferramenta essencial para gerenciar e distribuir configurações, ele é um batalhão de sysadmins trabalhando para você.
  • 57.
    Informações dos projetos Site/Blog Site/Blog Http://ww.puppetlabs.com http://code.google.com/p/ganeti/ Http://www.puppetlabs.com Docs Twitter http://docs.ganeti.org @puppetlabs Twitter (manager web do ganeti) Http://www.github.com/puppelabs @ganetiwebmgr Google Groups Google Groups Puppet-camp, ganeti, puppet-users, ganeti-devel puppet-dev ganeti-webmgr IRC IRC Irc.freenode.org Irc.freenode.org #puppet #ganeti
  • 58.
    Contato, Dúvidas, Perguntas GutoCarvalho: Daniel Sobral gutocarvalho@gmail.com dcsobral@gmail.com @gutocarvalho @dcsobral http://gutocarvalho.net/dokuwiki http://dcsobral.blogspot.com Http://github.com/dcsobral Http://github.com/dcsobral Palestras de hoje disponíveis em nossos sites. Palestra sob licença Creative Commons – Atribuição.