2. Oficina infraestrutura como código
Apresentando: Puppet
Guto Carvalho
gutocarvalho@gmail.com
sexta-feira, 16 de agosto de 13
3. José Augusto (Guto) Carvalho
Consultor/SysAdmin/DevOp (LPIC-3 e PCP-201);
14 anos de experiência com TI e FOSS;
Blogueiro TI/FOSS há 10 anos no site gutocarvalho.net;
Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS,
MPS/DATAPREV, ITI/PR, CAIXA, MD/SIPAM, DETRAN/DF;
Entusiasta DevOps (sysadmin em recuperação) desde 2010.
whoami
FOSS => Free and Open Source Software
sexta-feira, 16 de agosto de 13
4. Plano de Trabalho
50 minutos de apresentação
10 minutos para perguntas
3 horas de mão na massa
Slidedeck disponível em slideshare.com/gutocarvalho
sexta-feira, 16 de agosto de 13
12. Tarefas Repetitivas
Criação de usuários
Elaboração de scripts
Configuração de serviços
Configurações de monitoramento
Criação de imagens de ambientes
Configuração do sistema operacional
Instalação, atualização e remoção de pacotes
sexta-feira, 16 de agosto de 13
13. A medida que o parque aumenta
administrá-lo fica mais complicado
sexta-feira, 16 de agosto de 13
14. Você vai percerber que...
Fica mais difícil identificar e corrigir problemas
Fica mais difícil manter ambientes complexos funcionando
Fica mais difícil manter seu parque padronizado
Sua produtividade diminui a media que o ambiente cresce
Sua capacidade de entrega não é mais a mesma
Você nunca chega em casa no mesmo horário
Você trabalha muitos finais de semana e madrugadas
sexta-feira, 16 de agosto de 13
16. Maior tempo gasto para
executar mudanças
sexta-feira, 16 de agosto de 13
17. Criação de
usuário
450 máquinas
3 minutos por máquina
1350 minutos ou 22,5 horas
450 trocas de senhas
sexta-feira, 16 de agosto de 13
18. Procedimento para criar usuário
Acessar o servidor por ssh
Se tornar root
Criar usuário
Especificar senha temporária
Especificar permissões no sudoers
sexta-feira, 16 de agosto de 13
34. Puppet em poucas palavras
Nos permite parar de administrar e começar a desenvolver nossa infra
Nos permite reaproveitar código para construir configurações
Oferece linguagem declarativa para criar configurações
Sintaxe simples, prática e natural para sysadmins
Oferece suporte a Linux, BDBs, OSX e Windows
sexta-feira, 16 de agosto de 13
36. Sobre a ferramenta
Ferramenta Open Source - Apache License
Ferramenta mantida pela empresa Puppetlabs
Empresa oferece suporte e versão enterprise
Criado por Luke Kaines (CEO e Fundador Puppetlabs)
Cases de uso com gandes players (HP, CISCO, VMWARE...)
Recebeu pesados investimentos (VMWARE 30bi)
sexta-feira, 16 de agosto de 13
37. Sobre a ferramenta
Ferramenta Open Source - Apache License
Ferramenta mantida pela empresa Puppetlabs
Empresa oferece suporte e versão enterprise
Criado por Luke Kaines (CEO e Fundador Puppetlabs)
Cases de uso com gandes players (HP, CISCO, VMWARE...)
Recebeu pesados investimentos (VMWARE 30bi)
sexta-feira, 16 de agosto de 13
38. Feito por um SysAdmin para SysAdmins
sexta-feira, 16 de agosto de 13
45. Tech Specs
Escrito em Ruby
Extensível usando código Ruby
Funciona em modo autônomo e serverless
Funciona em modo cliente.servidor
Usa RESTful API
Oferece comunicação segura com uso de certificados digitais
sexta-feira, 16 de agosto de 13
47. Cases Puppet Gov Brasil
Detran/DF
EBC - Empresa Brasil de Comunicação
CAIXA (expresso)
CAIXA (estação financeira)
CAIXA (proinfo)
SERPRO
....
sexta-feira, 16 de agosto de 13
51. Resource Abstraction Layer
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
sexta-feira, 16 de agosto de 13
57. 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
sexta-feira, 16 de agosto de 13
58. 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.
sexta-feira, 16 de agosto de 13
59. Processamento
do Catálogo
1) Agente Requisita Catálogo
2) Agente envia Fatos para Master
3) Master Processa Fatos e Compara
4) Master Produz e envia Catálogo
5) Node Recebe, Compara e Aplica
6) Node informa estado atual ao Master
7) Sistema reflete catálogo
sexta-feira, 16 de agosto de 13
60. Processamento
do Catálogo
1) Agente Requisita Catálogo
2) Agente envia Fatos para Master
3) Master Processa Fatos e Compara
4) Master Produz e envia Catálogo
5) Node Recebe, Compara e Aplica
6) Node informa estado atual ao Master
7) Sistema reflete catálogo
sexta-feira, 16 de agosto de 13
62. Configurações
Voláteis e Dados
Puppet
Master
Módulos Estáticos
Visão ampla do Puppet
LDAP DNS MONIT SYSLOG
JBOSS APACHE MYSQL PGSQL
Puppet Agents
Camada de Aplicação
Camada de Serviços Estruturantes
sexta-feira, 16 de agosto de 13
63. Você pode fazer deploy de sua APP
Você pode controlar a versão de sua APP
sexta-feira, 16 de agosto de 13
65. Como funciona o modo cliente/servidor?
sexta-feira, 16 de agosto de 13
66. Modo 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
sexta-feira, 16 de agosto de 13
67. Puppet Visão em Rede
Puppet Master
Puppet Client
8140 TCP
Client
puppetd -t
8139 TCP
Server
puppetkick
SSL
sexta-feira, 16 de agosto de 13
74. Fluxo Cliente/Servidor
Instalação do
node
Geração de
Certificado
Agente
Sincroniza
Master Assina
Certificado
Envio de
Certificado
Inicialização
do puppet
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
sexta-feira, 16 de agosto de 13
75. O agente se comunica com o
master a cada N minutos
sexta-feira, 16 de agosto de 13
79. Recursos do Puppet
Resource Types
Parâmetros e Meta-parâmetros
Templates e Definições
Classes e Módulos
Funções e Condicionais
sexta-feira, 16 de agosto de 13
80. Puppet Resource Types
Arquivos e Diretórios
Usuários
Alias
Pacotes
Serviços
Yum Repos
Augeas
Hosts
SSH
Cron
O puppet oferece 38 tipos de recursos nativos, e você pode estendê-lo.
sexta-feira, 16 de agosto de 13
81. 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
sexta-feira, 16 de agosto de 13
82. 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
sexta-feira, 16 de agosto de 13
83. Resource Type: File
Especifique permissões e
owners
Declare arquivos,
diretórios e links
Controle de mudanças
usando até 15 tipos de
checksums
sexta-feira, 16 de agosto de 13
85. Instala, Configura e Inicia
# aptitude install apache2
# update-rc.d -f apache2 defaults
# cp ~/httpd.conf /etc/apache2/
# invoke-rc.d apache2 start
debian-way
sexta-feira, 16 de agosto de 13
86. package { 'apache2':
ensure => present,
}
service { 'apache2':
ensure => running,
enable => true,
}
file { 'httpd.conf':
path => “/etc/apache2/httpd.conf”,
source => “/etc/puppet/files/httpd.conf”,
}
Instala, Configura e Inicia
sexta-feira, 16 de agosto de 13
87. package { 'apache2':
ensure => present,
}
service { 'apache2':
ensure => running,
enable => true,
}
file { 'httpd.conf':
path => “/etc/apache2/httpd.conf”,
source => “/etc/puppet/files/httpd.conf”,
}
Instala, Configura e Inicia
resource type
parameter
title
value
sexta-feira, 16 de agosto de 13
88. 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
}
sexta-feira, 16 de agosto de 13
89. 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
}
sexta-feira, 16 de agosto de 13
98. 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
sexta-feira, 16 de agosto de 13
129. 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
Você chegará cedo em casa e suas madrugas e finais de semana serão seus
sexta-feira, 16 de agosto de 13
130. Comparando
Ambiente com 450 nodesAmbiente com 450 nodesAmbiente com 450 nodes
modo manual puppet
instalando zabbix 75 horas 10 minutos
criando usuário 22 horas 10 minutos
sexta-feira, 16 de agosto de 13
133. Insira o puppet nos templates
de seu hypervisor
sexta-feira, 16 de agosto de 13
134. Use o puppet para executar e
controlar mudanças em seu parque
sexta-feira, 16 de agosto de 13
135. Para de administrar e comece a
desenvolver a sua infraestrutura
sexta-feira, 16 de agosto de 13
136. Nova demanda? Já execute utilizando o Puppet,
escreva classes e módulos para que você só tenha
que fazer isto 1 vez e reaproveitar o código depois.
sexta-feira, 16 de agosto de 13
139. Não precisa começar do zero, use
módulo prontos do GitHub e
PuppetForge.
sexta-feira, 16 de agosto de 13
140. Pesquise, há muita informação
sobre puppet na rede!
sexta-feira, 16 de agosto de 13
141. 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
sexta-feira, 16 de agosto de 13