O documento apresenta uma introdução sobre infraestrutura ágil e gerência de configurações com Puppet. Ele discute tendências como virtualização e nuvem, desafios de administração de TI, e como o modelo tradicional de "sysadmin artesão" pode ser ineficiente. O documento então introduz o Puppet como uma ferramenta de gerência de configurações que permite padronização, controle e agilidade na infraestrutura.
2. José Augusto (Guto) Carvalho
Consultor/SysAdmin/DevOp (LPIC-3, RHCE e PCP-201);
14 anos de experiência com TI e FOSS;
Blogueiro TI/FOSS há 13 anos (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
3. Plano de Trabalho
70 minutos de apresentação
25 minutos de demonstração
25 minutos para perguntas
Faça perguntas quando quiser
Slidedeck disponível em slideshare.com/gutocarvalho
5. Infraestrutura ágil é um conceito ainda em
formação, mas ele envolve principalmente
gerência de configurações, orquestração,
provisionamento dinâmico e metodologias
ágeis de trabalho em grupo.
8. Virtualização
Hoje podemos rodar centenas
de servidores virtuais, com
d i f e r e n t e s s i s t e m a s
operacionais em um mesmo
host em nosso datacenter
9. Cloud Computing
Hoje podemos rodar todos os
nossos sistemas em nodes
(vms) em nuvens públicas ou
privadas e nosso parque pode
aumentar ou diminuir de
forma dinâmica e automática
10. Diminuição de Custos
As empresas hoje buscam
aumentar a qualidade de seus
produtos e serviços mas sem
aumentar os seus custos de
manutenção e operação
11. Agilidade e Flexibilidade
As empresas querem hoje
ferramentas que lhes
permitam atuar de forma ágil
e flexível dentro do seu
negócio, algo que se adapte
as suas necessidades de
forma plena e concreta
12. Novo tipo de profissional
As empresas estão buscando
no mercado profissionais
m u l t i - d i s c i p l i n a r e s ,
dinâmicos, criativos, com
domínio em diferentes
tecnologias para dar vazão a
demandas e trabalhar com
inovação
14. Desafios na TI de hoje
Como administrar parques crescentes?
Como manter nosso parque padronizado?
Como manter nosso parque seguro?
Como manter a qualidade do serviço executado?
Como manter o custo de manutenção baixo, sem perder qualidade?
Como saber quantos profissionais eu preciso para administrar meu
ambiente?
18. Dúvidas comuns
Como faço mudanças rápidas em diversos ambientes e servidores?
Como faço para atender demandas em tempo hábil?
Como faço para manter a documentação atualizada?
Como evitar ao máximo downtime durante as mudanças?
21. Sysadmin Artesão
Hoje ainda é comum encontrar
sysadmins que trabalham com
administração manual,
utilizando um método quase
artesanal, executando tarefas
repetitivas cotidianamente
24. Criação de Usuários?
ssh servidor001.dominio.local
ssh servidor002.dominio.local
ssh servidor003.dominio.local
…
ssh servidor800.dominio.local
25. Tarefas Repetitivas
Criação de usuário em servidores
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
26. Exemplo de processo 1
Atualização de um agente de monitoramento (ubuntu)
ssh servidor001.dominio.local
sudo -i
apt-get install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
restart agente-monitoramento
exit
27. Exemplo de processo 2
Atualização de um agente de monitoramento (centos)
ssh servidor002.dominio.local
su -
yum install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
service agente-monitoramento restart
exit
28. Exemplo de processo 3
Atualização de um agente de monitoramento (debian)
ssh servidor003.dominio.local
su -
aptitude install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
/etc/init.d/agente-monitoramento restart
exit
29. Exemplo de processo 4
Atualização de um agente de monitoramento (fedora)
ssh servidor004.dominio.local
sudo -i
yum install agente-monitoramento-2.0
vim /etc/agente-monitoramento/agent.conf
systemctl restart agente-monitoramento
exit
30. Cada sistema operacional lida de uma
forma muito particular com seus recursos,
e todas estas exceções precisam ser
cuidadosamente avaliadas e tratadas.
31. O uso de scripts ajuda, mas o sysadmin vai
passar a dividir seu tempo administrando
VMs e ajustando seus scripts para atender
as mais diferentes exceções.
32. Fatalmente uma das duas
atividades será negligenciada,
isto vai gerar falhas e
problemas.
33. Cada sysadmin executará demandas
de uma forma distinta, isto gera um
ambiente sem padrões, impossível
de rastear mudanças.
34. A medida que o parque aumentar
ficará cada vez mais difícil
administrar, identificar e corrigir
problemas.
36. Com o excesso de demandas e
ambiente crescendo cada vez mais,
documentar perderá prioridade e
isto criará um ambiente de alto
risco, obscuro e desconhecido
44. Percepções da empresa
Aumenta o custo de manutenção devido a retrabalho
Aumenta o desgaste físico e psíquico da equipe
A produtividade da equipe diminui (entregas)
A qualidade do serviço oferecido diminui (uptime)
Ocorre uma grande rotatividade de funcionários
49. Desperdício de tempo
é uma característica comum
n e s t e m o d e l o d e
a d m i n i s t r a ç ã o d e
infraestrutura
50. Exemplo
O cliente deseja instalar um agente de monitoramento
em todas as 800 VMs, removendo qualquer traço do
produto antigo no final do procedimento
51. Procedimento para instalar o agente
Acessar servidor via ssh
Adicionar repositório APT/YUM
Instalar pacote
Ajustar arquivo de configuração
Reiniciar agente
Remover agente antigo
53. Considerando o modelo manual de
administração e o retrabalho
decorrente de falhas humanas, teremos
um analista focado em uma demanda
simples por cerca de 1 mês.
59. Puppet em poucas palavras
É documentação executável
Nos permite parar de administrar e começar a desenvolver nossa infra
Sintaxe simples, prática e natural para sysadmins
Oferece suporte a diversos tipos de sistemas operacionais unix, linux windows
60. Sobre a ferramenta
Ferramenta Open Source - Apache License
Ferramenta mantida pela empresa Puppetlabs
Suporte comercial
Criado por Luke Kaines (CEO e Fundador Puppetlabs)
Cases de uso com grandes players (HP, CISCO, VMWARE...)
Recebeu pesados investimentos em 2012/2013
64. Tech Specs
Escrito em Ruby
Extensível usando código Ruby
Funciona em modo autônomo (sem servidor)
Funciona em modo cliente e servidor
Usa RESTful API
Oferece comunicação segura com uso de certificados digitais
70. O Puppet pode funcionar em modo
masterless, isto significa sem
servidor. Você pode aplicar uma
configuração do Puppet diretamente a
um sistema operacional apenas com o
agente instalado.
71. O Puppet também funciona em modo
cliente e servidor. Isto significa que vicê
instalará o puppet master em
alguma VMs e seus agentes irão se
comunicar com ele para obter
configurações.
72. Existem cenários de uso de Puppet
masterless distribuído, usando GIT.
Neste modelo as configurações do
Puppet são obtidas via GIT e o agente é
acionado via cron periódicamente
74. Todas as informações de uma sistema
operacional, seja um pacote, usuário,
arquivo ou serviço são consideradas um
'dado' para o puppet.
75. Quando construímos configurações,
estas são convertidas em catálogos
XML, estes por sua vez são lidos pelos
agentes e a configuração é então
aplicada ao sistema operacional.
78. Tudo é feito pelo agente localmente, o
servidor não se conecta na máquina
para aplicar as configurações.
79. O servidor puppet é apenas o
repositório de configurações, ele tem
apenas o dever de construir e enviar o
catálogo quando isso for solicitado por
um agente.
81. 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 precisa fazer o que você pediu
88. Modo cliente e 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
89. Puppet Visão em Rede
Puppet Master
Puppet Agent
8140 TCP
puppet agent -t SSL
envio do
catálogo
96. 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
97. O agente se comunica com o
master a cada N minutos, você configura N
100. Recursos do Puppet
Resource Types
Parâmetros e Meta-parâmetros
Templates e Definições
Classes e Módulos
Funções e Condicionais
101. 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.
102. 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
103. 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
104. Resource Type: File
Especifique permissões e
owners
Declare arquivos,
diretórios e links
Controle de mudanças
usando até 15 tipos de
checksums
106. Instala, Configura e Inicia
instalar um pacote!
ativar um serviço no boot!
copiar arquivo de configuração!
iniciar serviço instalado
o que queremos fazer?
107. Instala, Configura e Inicia
# aptitude install apache2!
# insserv apache2!
# cp ~/httpd.conf /etc/apache2/!
# invoke-rc.d apache2 start
no debian seria assim:
108. Instala, Configura e Inicia
# yum install httpd!
# chkconfig httpd on!
# cp ~/httpd.conf /etc/httpd/conf/!
# service httpd start
no redhat/centos seria assim:
113. package { 'apache2':!
ensure => present,!
}!
!
service { 'apache2':!
ensure => running,!
enable => true,!
}!
!
file { '/etc/apache2/httpd.conf':!
ensure => present,!
mode => ‘0644’,!
owner => ‘root’,!
group => ‘root’,!
ensure => “puppet:///files/apache/httpd.conf”,!
}
resource type
parameter
title
value
114. A mesma configuração atende a
diversos sistemas operacionais, a
sintaxe é simples e direta. É uma
declaração de estados que o Puppet vai
interpretar e aplicar.
117. Declarando um node (site.pp)
node “servidor.dominio” {!
include linux-server!
include module!
}
node “balancer.dominio” {!
include linux-server!
include cyrus::backend!
include postfix::hub
include haproxy::mailproxy!
}
118. Apenas com as informações do node, já
podemos entender o que ele faz e
quais ferramentas o puppet gerencia
nele, é outro tipo de documentação.
127. 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!
}
135. Outros projetos Puppetlabs
PuppetDB (coletor de dados)
Razor (provisionador)
Hiera (separa dados de código)
Facter (fatos do sistema)
Mcollective (orquestrador)
141. 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
147. A o e s c r e v e r m o s a s n o s s a s
configurações, estamos expressando o
que desejamos ter em nossos nodes,
com isto, já estamos construindo nossa
documentação.
148. Aos escrevermos uma configuração,
estamos definindo como aquilo de ser
instalado, configurado e como deve
funcionar. Toda a equipe passa a usar a
mesma receita, isto significa que
teremos processos padronizados.
149. O Puppet oferece recursos para você
fazer backup e restore de arquivos
modificados, portanto, você tem a
segurança de poder recuperar
ambientes caso precise.
150. Ao adotar Puppet você não vai mais
sentir vontade de executar nada sem
ele, tudo já nascerá automatizado e
controlado, com processos e
documentação instantânea.
152. Um sysadmin que não usa Puppet
consegue administrar no máximo 30
servidores, com alguma dificuldade e
muito retrabalho.
153. Um sysadmin que usa Puppet consegue
administrar entre 250 e 1000
servidores com facilidade, a
quantidade vai depender do nível de
automatização e maturidade do
profissional e sua equipe.
154. Para administrar 800 VMs, utilizando
Puppet, você precisará de 4 sysadmins,
e afirmo que dependendo do nível de
automação até menos.
156. 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
157. O sysadmin fará jornadas de trabalho
normais, ficará mais tempo com a
família, terá mais qualidade de vida e
com isso irá produzir mais e melhor.
158. O negócio de sua empresa vai fluir, ter
m e l h o r q u a l i d a d e , m a i o r
disponibilidade e menor custo
operacional, sendo gerido por uma
equipe qualificada e eficiente.
160. Puppetlabs
Suporte Comercial (em inglês)
Programa de treinamento presencial
Programa de certificação para Sysadmins - PCP 201
Programa de certificação para Developers - PCP 301
Puppet Enterprise Dashboard (Gerenciador)
161. Puppet em números
700+ pessoas online no canal
#puppet da irc.freenode.net
8.500+ repositórios no GitHub
1000+ módulos no PuppetForge
5000+ usuários ativos na lista
puppet-users com 8000+ tópicos de
discussão
Comunidade brasileira!
164. • Suporte Oficial Puppetlabs no Brasil
• Empresa especializada em Puppet
• Cursos oficiais, Puppet Enterprise, consultoria e suporte
• 1o Parceiro oficial Puppetlabs Brasil
• 1o empresa com pessoas certificados PCP na América Latina
• Acesse http://www.instruct.com.br
166. PUPPET COMO SERVIÇO
• Gerenciamento de Configuração COMO SERVIÇO
!
• Automatizar Infraestrutura de GRANDES CORPORAÇÕES
!
• Interface intuitiva focada em AGILIDADE e AUTONOMIA
!
• Suporte com PROFISSIONAIS CERTIFICADOS (PCP, RHCE, LPI-3)
!
• SERVIÇO PIONEIRO para Gestão de Infraestrutura no Brasil
www.configr.com