1. Gestão e Automação de
Servidores com Puppet
Guto Carvalho < gutocarvalho@gmail.com >
Campo Grande/MS - 2012/12/12 - Hora Livre
Wednesday, December 12, 12
4. 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, CAIXA
Há 2 anos trabalhando com gerência de configurações em ambientes virtualizados e clouds
privadas em Brasília
Palestrante em eventos como FISL, LATINOWARE, CONSEGI, ENECOMP, FLISOL e CLOUDCONF
Wednesday, December 12, 12
5. Plano de Trabalho
05 minutos de apresentação
50 minutos de palestra
10 minutos para perguntas
Wednesday, December 12, 12
6. Agenda
Administração de servidores e serviços
Causas, efeitos e consequências da administração artesanal
Um novo caminho com a gerência de configurações
Puppet como solução de gerência de configurações
Apresentando características e recursos do Puppet
Benefícios, resultados concretos e Puppet no Brasil
Wednesday, December 12, 12
8. O que faz um sysadmin?
Administra servidores e serviços e a infraestrutura de rede
Oferece suporte aos desenvolvedores e usuários
Sustenta ambiente de desenvolvimento, testes, homol e produção e faz deploy de aplicações
Sustenta sistemas estruturantes (DHCP, DNS, PROXY, LDAP, MAIL, IM)
Cuida dos ambientes de banco de dados
Sustenta, monitora e trabalha para que aplicações e ambientes funcionem
Cuida do Backup, lava, passa e faz cafézinho...
Wednesday, December 12, 12
19. Virt. e seus Benefícios
Menor consumo de energia
Melhor aproveitamento de espaço físico
Melhor aproveitamento de hardware (sem hw ocioso)
Maior segurança com isolamento de ambientes
Pode-se trabalhar disponibilidade e balanceamento
Facilidade de provisionamento e gerenciamento
Wednesday, December 12, 12
21. Cloud e seus Benefícios
Hiper escalável
Rápida e elástica
Abstração de hardware
Infraestrutura dinâmica
Alta disponibilidade
Investimento atraente para projetos emergentes
Wednesday, December 12, 12
22. O crescimento do
seu parque é
inevitável
Poucas máquinas físicas
podem ser tornar dezenas,
centenas ou milhares de nodes
em poucos meses.
Wednesday, December 12, 12
24. Ambiente híbrido e complexo
Servidores Linux Debian 5.0 e 6.0 em 32 e 64 bits
Servidores Linux Centos 5 e Centos 6 em 32 e 64 bits
Servidores RHEL 4, 5 e 6 em 64 bits
FreeBSD, OpenBSD e OSX
Servidores Windows 2003 e 2008
Wednesday, December 12, 12
39. Administração artesanal
não escala, não importa
quantas pessoas estejam
envolvidas
No entanto, é possível enxergar
as causas, efeitos e consequências
geradas por um modelo
equivocado de administração
Wednesday, December 12, 12
40. Você vai começar a perceber que
Fica mais difícil encontrar problemas em seu parque
Não é mais tão simples manter as coisas funcionando
É quase impossível manter o parque padronizado
Sua produtividade diminui a medida que o ambiente cresce
Você não consegue mais documentar e planejar mudanças
Wednesday, December 12, 12
41. Você vai começar a perceber que
Você não consegue mais entregar demandas no tempo acordado
Sua equipe está sempre exausta e desmotivada
Sua equipe não tem mais direito a finais de semana, feriados
Você não tem tempo para pensar em segurança e performance
Uma simples atualização de software pode levar semanas
Wednesday, December 12, 12
45. 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
Wednesday, December 12, 12
46. Remover Nagios e Instalar
Zabbix em 500 máquinas
Wednesday, December 12, 12
47. Instalação de Zabbix-Agent
Acessar o servidor por ssh e se tornar root
Configurar repositório YUM, APT ou Ports
Instalar pacote zabbix-agent
Remover pacote nagios
Ajustar arquivo de configuração Zabbix
Reiniciar Zabbix Agent
Wednesday, December 12, 12
48. Instalação de Zabbix-Agent
10 minutos por máquina
5000 minutos ou 83.3 horas de trabalho repetitivo
10 dias para instalar o zabbix-agent no parque
1 analista alocado exclusivamente para isto 8HPD
Considere re-trabalho devido ao modelo manual
Wednesday, December 12, 12
49. Criar o usuário do novo sysadmin
em 500 máquinas
Wednesday, December 12, 12
50. Criação de usuário para sysadmin
Acessar o servidor por ssh
Se tornar root
Criar usuário
Setar senha temporária
Configurar privilégios no sudo
Wednesday, December 12, 12
51. Instalação de Zabbix-Agent
7 minutos por máquina
3500 minutos ou 58.3 horas de trabalho repetitivo
7 dias para criar o usuário no parque
1 analista alocado exclusivamente para isto 8HPD
Considere re-trabalho devido ao modelo manual
Considere que o usuário vai ter que trocar a senha nas 500 máquinas
Wednesday, December 12, 12
52. Mas eu não posso usar LDAP para
autenticar meus usuários, não seria
melhor?
Wednesday, December 12, 12
53. Autenticação LDAP em Debian
Você precisa manter as configurações do PAM e módulo LDAP
Arquivos a serem mantidos ldap.conf, nsswitch.conf, libnss-ldap.conf
Pacotes a serem mantidos ldap-utils, libpam-ldap, libnss-ldap e nscd
Você ainda precisa ter um usuário coringa em caso de problema no LDAP
Wednesday, December 12, 12
54. Como alterar vários arquivos de configuração em
500 máquinas em um caso de mudança na
estrutura da árvore LDAP?
Wednesday, December 12, 12
59. O que devemos padronizar?
DNS (resolv.conf) Hosts e Hostnames
Usuários e Privilégios Repositórios
NTP (data/hora) Logs e Autenticação
Pacotes Sysadmins Firewall
Rotas Hardening, Tuning
Wednesday, December 12, 12
60. Falta de processos e procedimentos de execução de
atividades e demandas
Wednesday, December 12, 12
62. Desvantagens do modelo artesanal
Falta de padronização, processos e procedimentos
Documentação inexpressiva ou inexistente
Falta de planejamento para execução das demandas
Desconhecimento dos riscos envolvidos
Alto índice de falhas humanas
Wednesday, December 12, 12
63. Desvantagens do modelo artesanal
Baixo índice de disponibilidade dos serviços oferecidos
Demora na aplicação de mudanças
Demora na correção de problemas
Equipe desmotivada
Atividades repetitivas e desgastantes
Wednesday, December 12, 12
64. Desvantagens do modelo artesanal
Equipe sempre sobrecarregada
Alta rotatividade da equipe
Alto custo com horas extras
Profissionais insatisfeiros
Baixa credibilidade perante clientes e gestores
Wednesday, December 12, 12
65. Como resolvo
estes problemas?
Como obtenho controle e
padronização em meu
ambiente ?
Wednesday, December 12, 12
73. Puppet
Ferramenta de nova geração
que implementa gerência de
configurações para seu
ambiente.
Wednesday, December 12, 12
74. Visão Rápida
Framework Open Source para Gerência de Configurações
Oferece um conjunto de ferramentas para manipular estados
Nos permite trabalhar a Infraestrutura como código
Oferece uma linguagem declarativa para descrever
configurações de sistemas e serviços
Não é programação
Wednesday, December 12, 12
75. Sobre a ferramenta
Criado por Luke Kaines (CEO e Fundador Puppetlabs)
Empresa PuppetLabs mantém a Ferramenta
Ferramenta OpenSource (Licença Apache)
Empresa oferece Suporte Corporativo e Versão Enterpris
Empresa recebeu investimentos da VMWARE, GOOGLE e CISCO
Wednesday, December 12, 12
76. Sobre a ferramenta
Criado por Luke Kaines (CEO e Fundador Puppetlabs)
Empresa PuppetLabs mantém a Ferramenta
Ferramenta OpenSource (Licença Apache)
Empresa oferece Suporte Corporativo e Versão Enterpris
Empresa recebeu investimentos da VMWARE, GOOGLE e CISCO
Wednesday, December 12, 12
77. Feito por um SysAdmin para SysAdmins
Wednesday, December 12, 12
80. Desenvolvedor que lançar novas
versões de forma rápida e eficiente
Sysadmin quer manter o parque integro e funcionando
minimizando riscos de incidentes
Wednesday, December 12, 12
81. Especificações e Características
Escrito em Ruby
Extensível usando código Ruby
Funciona em modo Autônomo (serverless)
Funciona em modo Cliente/Servidor usando API REST
Provê comunicação segura usando SSL
Suporte a 19 sistemas operacionais (Linux, Unix, BSD...)
Wednesday, December 12, 12
85. 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, December 12, 12
89. Tratamento de
Informações
O grande diferencial do Puppet
é a forma como ele trata as
informações de seus nodes
Wednesday, December 12, 12
90. Tratamento de informações
No Puppet tudo é modelado e tratado como ‘dado’
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, December 12, 12
91. Os dados são inseridos em
catálogos para serem utilizados
O catálogo é processado pelo node e as
modificações são aplicadas de acordo com o que foi
declarado.
Wednesday, December 12, 12
92. 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, December 12, 12
94. A idempotência é a propriedade que algumas
operações têm de poderem ser aplicadas várias
vezes sem que o valor do resultado se altere após a
aplicação inicial. (fonte: wikipedia)
Wednesday, December 12, 12
95. Puppet visão geral
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, December 12, 12
96. O que acontece quando adicionamos
um node ao nosso parque?
Wednesday, December 12, 12
97. Adicionando node ao parque
ZABBIX
NGINX
JBOSS
POSTGRESQL
MEMCACHED
Wednesday, December 12, 12
98. Adicionando node ao parque
ZABBIX
NGINX
JBOSS
POSTGRESQL
MEMCACHED
Adicionar um novo node representa N mudanças
Wednesday, December 12, 12
100. Como o Puppet pode ajudar?
Automatizando todo o seu ambiente
Provendo maior produtividade com menor esforço
Padronizando seus nodes logo após a criação e instalação
Modificando configurações de forma controlada
Mantendo o estado declarado para cada node/instância
Wednesday, December 12, 12
101. Insira o Puppet na imagem de
instalação de seus nodes.
Wednesday, December 12, 12
102. Pare de administrar e começe a
desenvolver sua infra
Wednesday, December 12, 12
103. Não tenha medo de realizar
atualizações, o puppet faz pra você!
Wednesday, December 12, 12
104. Você pode fazer deploy de sua APP
Você pode controlar a versão de sua APP
Wednesday, December 12, 12
105. Como é o funcionamento do Puppet em Rede?
Wednesday, December 12, 12
106. Puppet Master
8140 TCP 8139 TCP
Client SSL Server
puppetd -t puppetrun
Puppet Client
Puppet Visão em Rede
Wednesday, December 12, 12
107. 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, December 12, 12
109. Fluxo Cliente/Servidor
Instalação do Inicialização
node do puppet
Wednesday, December 12, 12
110. Fluxo Cliente/Servidor
Instalação do Inicialização Geração de
node do puppet Certificado
Wednesday, December 12, 12
111. Fluxo Cliente/Servidor
Instalação do Inicialização Geração de
node do puppet Certificado
Envio de
Certificado
Wednesday, December 12, 12
112. Fluxo Cliente/Servidor
Instalação do Inicialização Geração de
node do puppet Certificado
Master Assina Envio de
Certificado Certificado
Wednesday, December 12, 12
113. Fluxo Cliente/Servidor
Instalação do Inicialização Geração de
node do puppet Certificado
Agente Master Assina Envio de
Sincroniza Certificado Certificado
Wednesday, December 12, 12
114. 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, December 12, 12
115. O agente se comunica com o
master a cada N minutos
Wednesday, December 12, 12
116. E quais os recursos disponíveis para
gerenciar sistemas e serviços?
Como manipulo estados do meu ambiente?
Wednesday, December 12, 12
117. Funcionalidades do Puppet
Resource Types
Parâmetros e Meta-parâmetros
Templates e Definições
Classes e Módulos
Funções e Condicionais
Wednesday, December 12, 12
118. 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, December 12, 12
119. 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, December 12, 12
120. 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, December 12, 12
121. 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, December 12, 12
129. Templates
Trecho do template postfix/main.cf.erb
myorigin = <%= hostname %>
mydestination = $myhostname, ..., localhost, <%= fqdn %>
Substituição de variáveis por fatos
myorigin = servidor.dominio
mydestination = $myhostname, ..., localhost, servidor.dominio
Wednesday, December 12, 12
130. Use uma base class para
padronizar seus nodes
Wednesday, December 12, 12
131. 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, December 12, 12
132. Como declaro um node e como
empurro uma configuração?
Wednesday, December 12, 12
133. Declarando um node
node “servidor.dominio” {
include linux-server
include module
}
node “balancer.dominio” {
include linux-server
include apache
include php5
include mysql
}
Wednesday, December 12, 12
138. 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, December 12, 12
146. 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, December 12, 12
157. 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, December 12, 12