O documento apresenta uma palestra sobre a ferramenta Puppet para gestão e automação de configurações em ambientes de TI. Ele discute como o Puppet pode ajudar a padronizar configurações, facilitar a administração de servidores e acelerar processos como implantação de novos sistemas. A palestra também demonstra conceitos e funcionalidades básicas do Puppet por meio de exemplos práticos.
1. CONSEGI 2011
Assuma o controle de
suas configurações
Palestrantes:
Daniel Sobral @dcsobral
Guto Carvalho @gutocarvalho
2. Já teve a sensação de estar
perdendo o controle do seu
ambiente?
Foto tirada do site sysadminday.com por Frank Schicksal
3. Você passa horas e horas configurando e
reconfigurando sistemas de forma repetitiva e
cansativa?
4. Você gostaria de ter um
ambiente padronizado e de
fácil implementação de
mudanças e configurações?
Você sabe que o seu ambiente
vai crescer e se preocupa em
como mantê-lo?
5. Já pensou em investir na gestão de suas
configurações?
6. Porque eu me interessaria por isto?
● 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
7. Que tipo de configuração?
● Usuários
● Grupos
● Arquivos de configuração
● Pacotes instalados
● Serviços ativos
● Execução periódica de scripts
9. Onde estamos usando?
EBC - Empresa Brasil de Comunicação
Cerca de 160 máquinas virtuais e físicas sendo
●
gerenciadas pelo Puppet.
●Administração compartilhada de 4 devops
11. Puppet: Fácil Aprendizado
Independente de Plataforma
class editor {
$vim = $operatingsystem ? {
'RedHat' => 'vim-enhanced',
'CentOS' => 'vim-enhanced',
'Fedora' => 'vim-enhanced',
default => 'vim',
}
package { "$vim":
ensure => present,
alias => 'vim',
# provider => yum, apt, ports?
}
}
node “host01.domain.com.br” {
include editor
}
node “host02.domain.com.br” {
include editor
}
12. 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
#...
}
13. Puppet: Controle de Versão e
Rollback
#git log
commit 263b2239ccff746f345c448d723f4ff52d3f8c0f
Author: Daniel Sobral <dcsobral@gmail.com>
Date: Thu Mar 31 22:11:16 2011 -0300
Exclui a boletins das máquinas configuradas como mta satélite.
Limita a configuração do exim4 às máquinas Ubuntu e Debian.
commit 8fbed5a4b8095b7560941c598454d47f3b3dec7e
Author: Daniel Sobral <dcsobral@gmail.com>
Date: Thu Mar 31 22:08:22 2011 -0300
Classe debian-common adaptada para lidar com Ubuntu. Basicamente, força
lidar com serviços no padrão Debian (Ubuntu suporta padrão FreeBSD
também), e não mexe no source list (por hora).
Sistemas Ubuntu também incluirão a classe debian-server.
Verifica se o kernel é xen, e, se for, inclui o linux modules
correspondente.
14. Puppet: Altamente Flexível
node "eleicoesconcurvm01" {
include linux-server
jboss::app { 'conselho':
conf => 'default',
pgdb => 'conselhoprod', # Altera pg_hba.conf
}
}
node “eleicoesconcurvmbd01” {
include linux-server
pgdb { 'conselhoprod': # Gera XML para datasource
password => '********',
pgversion => '8.4',
}
}
18. Conceitos
● Resource user { 'ze':
ensure => present,
● Type gid => 1000,
– User, File, Package require => Group['ze'],
}
● Name
● Attributes
● Meta Attributes
● Classes
● Definitions
● Modules
19. Experimentando com a linha de
Comando
● ralsh
puppet:~# ralsh user bob
user { 'bob':
ensure => 'absent'
}
puppet:~# ralsh user bob ensure=present
notice: /User[bob]/ensure: created
user { 'bob':
ensure => 'present'
}
puppet:~# ralsh user bob ensure=absent
notice: /User[bob]/ensure: removed
user { 'bob':
ensure => 'absent'
}
29. Exemplo Configuração Padrão -
Código
class padrao {
include sudoers
include ntpdate
include locale
}
node default {
include padrao
}
30. O que faço com tudo isso?
Afinal, onde toda essa flexibilidade e agilidade
pode nos levar?
Quais são os ganhos para uma equipe devops e
para o cliente?
31. Situação Anterior
Máquina Física – Debian Lenny
● Tempo de criação de maquina física – 40 minutos (CD)
● Tempo de configuração/update OS* - 40 minutos
● Tempo de instalação e configuração Apache2, PHP5,
MYSQL – 2 a 4 horas**
* 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 do os, tuning do os, configuração e tuning do apache2,
php5 e mysql5.
32. Situação Atual
Máquina Virtual (GANETI+XEN) – Debian Lenny
● Tempo de criação de maquina virtual - 2 minutos
● Tempo de configuração/update OS* usando Hooks Ganeti
– 2 a 4 minutos
● Tempo de instalaçã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
33. 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
34. Conclusão
O Puppet é uma ferramenta essencial para
gerenciar e distribuir configurações, ele é um
batalhão de devops trabalhando para você, sua
equipe e sua empresa.