4511

Gerência de Configurações com
Puppet

www.4linux.com.br

Projetos na sua empresa
com a qualidade dos treinamentos

ence
Business Intelig lx8
F
u/
.m
va
http://

BPM
http://va.mu/EuiT

Servidor Java EE
http://va.mu/FlyB

PostgreSQL
http://va.mu/EuhV

Monitoramento
http://va.mu/EukN

Virtualização
http://va.mu/Flxl

Groupware Yj
u/FN
http://va.m

Backup
http://va.mu/Flxr

Auditoria e Análise
http://va.mu/Flxu

Segurança
http://va.mu/Flxy

Ensino à Distância
http://va.mu/Flxc

Integração Continua
http://va.mu/FlyD

GED - ECM
http://va.mu/Flx3

Alta Disponibilidade
http://va.mu/FNbL

Infraestrutura Web
http://va.mu/Flxi

Implantação garantida
http://va.mu/GcFv

. .5.6. . . . . . . . . . . . . . . . . . 16 2. . . . . . . . . . . .5. .7 Plataformas suportadas . . . . . . . . . . 16 2. . .3 Vantagens associadas a Gerência de Configurações . 1 2. . . . 14 2. . 19 2. . . . . . . . . . .2 Efeito Cascata . . . . . . . . . . . . . . . . . . . . . .2 Funcionalidades do Puppet . . . . . .8 Puppetlabs . . . . . . . . . 7 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2. . . . . . .1. . . . . . . 9 2. .1 Introdução teórica . . . 19 2.2. . . . . . . . . 11 2. . . . . . . . . . . . . . . . . 13 2.1 Gerenciamento de usuários . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . 15 2. .3 Mudanças no ambiente . . . . . . . . . . . . . . . . . . . . 2 2. . . . .7. 19 2. . . . . . . . . . . . . . . . . . . . . . . . . . .5 Buscando um novo caminho . . .1 Características do Puppet . . . . . . 4 2. . . . . . . . . . . . . . . . . . . . . . . . .3 Sistemas Unix . . . . . . . . .1. . . . . . . . . . .6. . . 19 2. . . . . . . . . 18 2. . . . . . . . . . . . . . .2 Gerenciamento de serviços .9 Projetos Internos Puppetlabs . . . . 18 2. . . . . . . . . . .2. . . . .2 Automação e padronização . . . . . . . . . . . . . . . 10 2. . . . . . 7 2. . . . . . . . . . . . .1 Trabalho Artesanal . . . . . . . . . . . 20 i . . . 15 2. . . . . . . . . . . . . . . . . . . . . . . .3 Documentação e planejamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . . . . . . . . . . . . . .Conteúdo 2 Introdução a Gerência de Configurações + Instalação do Puppet 1 2. . . . . . . . 11 2. . .1 Entendendo o que é a Gerência de Configurações . . . . . . . . . . . .7. . . 5 2. . . . . . . . . . . . . . . .3 Ambiente não padronizado . 12 2. . .4 Criação de novos ambientes . . . .2. . . . . . . . . .4 Sistemas Windows . . .6 Conhecendo o Puppet na prática . . . . . . . . . . . . . . . . . . . . . . . . .5. . . . .1. . . . .7. . . . . .1 Sistemas Linux . . . . .2 Sistemas BSD . . . . .2 Tratamento de demandas .4 Desvantagens do modelo artesanal . . . . .

. . . . . . . . . . . . 31 2. . . 29 2. . . . . . . . 27 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.Oracle Solaris . . .13. . . . . . . . . 30 2. .13. . . . . . . .3 Instalando o Puppet na distribuição Ubuntu . . . . . . . . . . . . . . . . . .14. . .4 Instalando o Puppet na distribuição CentOS . . . . . . .11 Camada de Abstração . . . 24 2. . . . . . 34 Página ii Gerência de Configurações com Puppet . . . . . . . . . . . . . . .14. . . . . . . . . . . . . . 32 2. . . .5 Instalando o Puppet na distribuição OpenSuSE . . . . . . 21 2. 23 2. . . . . . . . .6 Instalando o Puppet em Ambiente Unix . . . . . . . . . . . .13 Mão na Massa . .2 Instalando o Puppet na distribuição Debian . . . . .13. . . . . . . . . . . . . . . .1 Infraestrutura do Curso .4linux.12 Idempotência . .br 2. . . . . . . . . 26 2. . . . .10 Sintaxe Declarativa . . . . . . . . . 21 2. . . . . . . . . .Conteúdo 4Linux – www. . . . . . . . . . . . . . . . . . . .13. . . . . . . . . . . . .14 Primeiros passos com o Puppet .2 Puppet Man . . .13. . . .com. . . 23 2. . . . . . . . . . . . . . . . . . . .13. . .1 Puppet Help . . .

nosso ambiente de servidores tende a crescer rapidamente. e tudo isto pode acontecer em poucos meses. Sabemos que criar máquinas virtuais é relativamente fácil em qualquer hypervisor. e da mesma forma. clientes cada vez mais exigentes desejam ambientes dedicados e independentes. com isto. normalmente uma nova demanda gera uma nova instância ou uma nova máquina virtual.1 Introdução teórica Hoje em dia com a crescente adoção das tecnologias de virtualização e computação em nuvem. são necessários poucos minutos para executar essa demanda em ambas tecnologias. 1 . pode se tornar um parque com dezenas. um parque em que antes possuía algumas máquinas físicas.Capítulo 2 Introdução a Gerência de Configurações + Instalação do Puppet 2. criar instâncias em sistemas CLOUD IaaS também. No entanto. atualmente o grande desafio dos sysadmins é encontrar a melhor forma de administrar centenas ou milhares de servidores após sua criação. centenas ou milhares de instâncias e máquinas virtuais.

vamos imaginar que em poucos meses o parque de servidores que uma equipe de sysadmins administra saltou de dezenas para centenas de servidores virtuais. Veja alguns exemplos de demandas comuns que devem ser aplicadas em praticamente todos os servidores de sua rede: • Adicionar.4linux. • Instalar. imagine também que estas distribuições linux estão em diferentes versões (Debian e Centos 5/6) e que temos ainda servidores com sistemas operacionais UNIX (Solaris. remover ou trocar senha de usuários.1 Introdução teórica 4Linux – www. imagine fazer isto em um parque híbrido com diversas distribuições linux em arquiteturas com 32 e 64 bits. remover e atualizar pacotes. e com isso. 2. Página 2 Gerência de Configurações com Puppet . o sysadmin precisa encontrar a melhor forma de administrar este parque de servidores. HPUX) e até algumas distribuições BSD (FreeBSD. AIX. porém administrar ambientes híbridos em pleno crescimento é uma tarefa bem mais complexa.2. normalmente utiliza-se acesso secure shell (SSH) e shellscript para resolver demandas cotidianas.com. A administração artesanal de ambientes tem em suas principais características tarefas que são executadas de forma repetitiva. vamos avaliar os principais aspectos e os desafios de se fazer a administração destes servidores utilizando metodologias tradicionais. principalmente se você deseja e precisa mantê-lo padronizado.1 Trabalho Artesanal A administração tradicional é um processo praticamente artesanal. Executar tais tarefas em ambientes pequenos é bastante fácil.br Para um melhor entendimento. porém. OpenBSD).1. A partir deste ponto. Neste tipo de cenário a complexidade do ambiente aumenta rapidamente.

com. No entanto — mesmo utilizando SSH em Loop — esse tipo de demanda leva tempo e nem sempre o resultado obtido é o mesmo o que fora planejado pela equipe de sysadmins. com isto.4linux. com isto. por esta razão é natural que algumas equipes partam para administração usando SSH em Loop com auxílio de programas como o ClusterSSH. não funcionam a medida que mais e mais servidores são criados. normalmente vários ajustes precisam ser executados no meio do caminho para que a equipe consiga atingir o objetivo desejado — fazendo o tratamento de exceções. Isto tende a aumentar o custo necessário para manter seu ambiente. Gerência de Configurações com Puppet Página 3 .1 Introdução teórica • Criar e modificar arquivos de configuração. você será forçado a ampliar sua equipe — e seus custos — para dar conta das tarefas. Avaliando este cenário. Isto será cansativo e demorado. gera uma grande sobrecarga em cima de sua equipe e principalmente nos membros mais experientes. Debian. a equipe de sysadmins terá de investir muitas horas na manutenção desses scripts e provavelmente terá de criar scripts para cada tipo de sistema operacional. Neste caso. Em algum momento a equipe que administra este parque vai perceber que as técnicas que antes os ajudavam na resolução de demandas. a partir daí acessará e executará comandos em Loop. podemos dizer que a administração manual não escala. OpenBSD. deixando então os scripts de lado. de madrugada. • Iniciar e manter serviços rodando – mesmo após um boot.4Linux – www. Isto significa que eles não conseguem dar vazão as demandas e provavelmente vão se tornar o gargalo de muitos processos na empresa em que trabalham.br 2. e além de não escalar. afinal sobrecarga significa hora extra a noite. tentando assim cumprir suas metas. provavelmente os scripts utilizados não vão conseguir prever as exceções e tratar todas as diferenças entre os diferentes sistemas operacionais. a equipe provavelmente vai separar os servidores em grupos ou contextos como RHEL. nos finais de semana e feriados. FreeBSD. as vezes é até preciso alocar vários analistas de foma simultânea para resolver este tipo de tarefa repetitiva dentro do prazo estipulado. Veja que em um ambiente como este.

Estas são as percepções mais comuns em ambientes que ainda utilizam metologia artesanal de administração de servidores e serviços. você começa a perceber algumas coisas. dentre elas: • Você percebe que fica mais difícil encontrar problemas em seu parque. • Você percebe que não é tão simples manter os sistemas funcionando. • Você percebe que a medida que sua produtividade diminui.br 2. • Você pode levar dias ou duas semanas para instalar um novo programa ou serviço em todas as instâncias/VM’s de seu parque (ex. você não consegue mais documentar.1 Introdução teórica 4Linux – www. • Você percebe que sua produtividade diminui a medida que o ambiente cresce. • Não há tempo para se preocupar com segurança e performance.2. • Trabalhar fora de expediente se torna a regra e não a exceção. • Sua equipe está sempre exausta e desmotivada.com.4linux. planejar e entregar o que seu cliente solicita no tempo acordado.1. Página 4 Gerência de Configurações com Puppet . • Você percebe que é quase impossível manter todos os seus sistemas operacionais “Padronizados”.: Um novo agente de monitoramento).2 Efeito Cascata Quando uma metodologia ou técnica de administração de configuração não é escalável.

• Configurações de Hosts. dentre as configurações mais comuns podemos citar: • Configurações de DNS.4linux.br 2. etc. ).com. Focando exclusivamente em ambientes Linux e Unix.4Linux – www. nmap. • Conjunto de pacotes de monitoramento. • Configuração do Hostname. iptraf. . não ter um parque padronizado significa que você não tem como garantir que as configurações fundamentais de seus sistemas estejam devidamente ajustadas em todos os seus servidores.bash_profile). qual sua importância e os impactos em um ambiente de TI. • Conjunto de pacotes de administração (htop. • Configurações de Rota. less. iperf.1 Introdução teórica 2. .traceroute. Gerência de Configurações com Puppet Página 5 .bashrc.3 Ambiente não padronizado Para entendermos melhor e aprofundarmos o que é padronização. • Configurações de editores padrão do sistema (VIM/NANO/EMACS). • Configuração para atualização de pacotes. • Configurações de perfil de usuários (.1. vim. • Configuração padrão de repositórios de pacotes (yum/apt/ports). vamos abordar alguns exemplos práticos. mtr. • Contas de usuários e privilégios (passwd/group/shadow/sudo). . ccze.

bashrc. isto pode afetar aplicações em produção e causar grandes incidentes. Um DNS configurado de forma errada pode afetar o funcionamento de um sistema e dos serviços que dependem de resolução de DNS. • Configurações de SYSLOG/RSYSLOG. • Hardening do OS.1 Introdução teórica 4Linux – www. isto pode gerar uma parada de alguns sistemas ou mesmo arruinar uma tentativa de auditoria nos logs de um ou vários servidores. 3. • Configurações de DATA/HORA (NTP). vamos entender que são na verdade questões críticas. mas se avaliarmos com mais cuidado. em versões experimentais. Algumas destas configurações não parecem ser questões tão sérias.2. Veja abaixo as causas e os efeitos em 4 exemplos: 1. 2. Um repositório mal configurado pode instalar pacotes não homologados. • Configurações de MTA Local e Aliases (envio de mensagens de erros/alertas para algum lugar). skel).br • Configurações de perfil de ambientes (profile. • Configurações de rotinas no CRON. Se a sua data/hora estão erradas. além disto pode gerar dados incorretos em coletas de informações e gráficos de monitoramento. • Configurações de Firewall (Filtro de Pacotes) • Tuning de Kernel. Página 6 Gerência de Configurações com Puppet . enviroment.4linux. • Configurações de LOGROTATE.com.

2. Pense no trabalho que você vai ter para criar o usuário do novo colaborador em todos os servidores do parque. 2.2. e normalmente por negligência ou devido a sobrecarga. Imagine que você tenha um parque com 450 Servidores.com.br 2. Veja que a falta de um ambiente padronizado pode ser uma grande dor de cabeça para a equipe de Sysadmins. agora vamos supor que no início da semana sua equipe recebe um novo administrador de sistemas. vamos utilizar alguns exemplos bastante comuns.1 Gerenciamento de usuários Talvez um dos problemas mais básicos que afligem Sysadmins que administram grandes parques seja a gestão de contas de usuários nestes servidores. Um logrotate mal configurado pode fazer seu disco encher rapidamente parando aplicações e serviços de seus clientes.4Linux – www.4linux. para isto. para isto você precisa de pelo menos 5 passos.2 Tratamento de demandas Nós já falamos de padronização e agora vamos entender o que são demandas repetitivas. são eles: • Acessar um servidor via SSH • Se tornar root • Criar o usuário • Setar senha temporária Gerência de Configurações com Puppet Página 7 . é comum ter parte dos servidores padronizados e parte fora dos mínimos padrões.2 Tratamento de demandas 4.

250 ações repetitivas. no entanto.com. você terá cerca de 450 servidores para executar mudanças. A parte da troca de senhas cai no mesmo problema. conforme os problemas e as necessidades vão surgindo durante o expediente de trabalho. algo que é um grave risco de segurança.2.br • Setar privilégios no SUDO Para executar a criação do novo usuário em todos os servidores serão necessárias 2. as vezes as senhas dos Syadmins são aquelas temporárias como “mudar123”.2 Tratamento de demandas 4Linux – www. Página 8 Gerência de Configurações com Puppet . mesmo assim você vai ter que configurar arquivos referentes a PAM/NSSWITCH/NSSLDAP/LDAP em todos os 450 servidores. o mais comum é criar o usuário do novo colaborador sob demanda nos servidores em que ele precisa de acesso. e nestes casos as vezes só precisamos ajustar uma única linha com o IP de um novo servidor ou uma BASEDN LDAP. se por ventura alguma configuração do LDAP muda.5 horas de trabalho repetitivo. e uma troca de senha em 450 máquinas é virtualmente inviável e desmotiva qualquer iniciativa ou voluntário para fazê-lo. Além disto. sabemos que as coisas não acontecem desta forma. E mesmo que você tenha previsto esta configuração na IMAGEM padrão dos servidores LINUX. Isto é certeza de muito trabalho. Normalmente estas contas ainda existem pois da mesma forma que é difícil criar. é igualmente difícil e trabalhoso removê-las mesmo se formos usar SSH em Loop. Outra coisa muito comum que encontramos em ambientes como este são contas de colaboradores que já saíram da empresa há muito tempo. Se você gastar 5 minutos por servidor isso dará um total de 2250 minutos ou 37. estas contas além de existirem podem e normalmente estão ativas.4linux. desgastante e contínuo. o novo Sysadmin precisará — teoricamente — acessar 450 servidores para trocar sua senha. É claro que pode podemos configurar autenticação LDAP para os servidores LINUX.

• Dificuldade para avaliar quais arquivos foram criados.br 2. alterados. se há algum script no init. POSTGRESQL. quais foram os arquivos criados. Gerência de Configurações com Puppet Página 9 .2. modificados. Logo podemos entender que configurar serviços desta forma resulta em: • Dificuldade para identificar como o serviço foi instalado. dentre os mais comuns temos o OpenLDAP. será sempre necessário ter um usuário coringa — local — para fazer a administração emergencial. teremos de copiar arquivos. Se pedirmos para 2 Sysadmins instalarem qualquer um destes serviços. teremos procedimentos diferentes e será extremante difícil entender e rastrear como a demanda foi atendida. dentre outros. nestes casos se for preciso trocar a senha deste usuário coringa. POSTFIX (SMTP).4Linux – www. caso o backend de autenticação saia do ar.4linux. ProFTPd (FTP).2 Tratamento de demandas É importante lembrar que apesar do uso de autenticação LDAP. ou mesmo saber se está tudo pronto para rodar em produção. se há alguma rotina no cron. Veja que é inviável e cansativo administrar contas de usuários desta forma em um parque com estas dimensões. seja o usuário root ou seja outro usuário genérico (sysadmin/suporte).2 Gerenciamento de serviços A configuração de serviços é outro processo muito comum. se o script está configurado em algum runlevel diferenciado. MYSQL.com. quais foram as dependências atendidas. normalmente fazendo um SCP/RSYNC e isto vai nos gerar um terceiro — distinto — processo de instalação e configuração do mesmo serviço. você passará pela mesma dor de cabeça. Apache (HTTPd). quais foram os pacotes instalados. Veja que não há como garantir um padrão trabalhando deste jeito. Se formos replicar a instalação e a configuração do serviço para outra máquina. 2. modificados ou alterados. SAMBA. CYRUS (IMAP/POP).

com. • Falta de padronização nas configurações do mesmo serviço em servidores diferentes em nosso parque. além disto não podem esquecer de remover o agente antigo (NAGIOS) e as suas configurações. são eles: • Acessar o servidor via SSH • Adicionar um repositório YUM • Atualizar índices do YUM • Instalar o pacote zabbix-agent • Remover o arquivo /etc/zabbix/zabbix_agent.2.conf • Reiniciar o processo zabbix-agent Página 10 Gerência de Configurações com Puppet . • Falta de documentação do processo de instalação e configuração do serviço. 2.br • Dificuldade para replicar a configuração para outra máquina.conf • Editar o arquivo /etc/zabbix/zabbix_agentd.3 Mudanças no ambiente Agora vamos complicar um pouco mais. Este projeto prevê a instalação do agente Zabbix em todos os 450 servidores do seu parque.2 Tratamento de demandas 4Linux – www.2.4linux.conf • Modificar o conteúdo do arquivo /etc/zabbix/zabbix_agentd. imagine que a equipe de monitoramento iniciou um projeto que visa substituir a atual ferramenta de monitoramento. O processo de instalação em um CentOS consiste em pelo menos 10 passos.

isto pode durar horas. Este tempo também depende do conhecimento do profissional que executará a instalação. levando em conta que você gaste 10 minutos por servidor. desgastante e contínuo para terminar esta demanda.4linux. portanto.4 Criação de novos ambientes Eventualmente é necessário reinstalar um servidor ou mesmo criar servidor com as mesmas características.3 Documentação e planejamento Essa dupla é provavelmente o principal problema de muitas organizações de TI.4Linux – www. Gerência de Configurações com Puppet Página 11 .br 2. e isto pode inclusive desmotivar o profissional aumentando a rotatividade de sua equipe. este tipo de demanda é bastante comum. 2. 2. Veja que você vai dedicar cerca de 75 horas de um Sysadmin para executar uma tarefa repetitiva.3 Documentação e planejamento • Remover o pacote nagios • Remover os traços de arquivos de configuração do nagios no sistema São 4.com. podemos dizer inclusive que este tipo receita cria o que chamamos de ambientes caóticos. serão 4500 minutos ou 75 horas de trabalho repetitivo.2. É comum — infelizmente — encontrar parques imensos com quase nada documentado. principalmente se o profissional especializado naquele tipo de sistema ou serviço não estiver disponível para ser alocado para esta demanda. dias ou semanas para ser concluído.500 ações que devem ser executadas em 450 servidores. e o tempo investido para realizar esta tarefa na administração artesanal varia conforme a complexidade dos serviços que deverão ser instalados. locais onde mudanças não são planejadas e alterações não são documentadas.

4 Desvantagens do modelo artesanal • Falta de padronização de seu ambiente. afinal. seria muito mais simples planejar e executar manutenções neste tipo de local. os processos e os procedimentos envolvidos em todo o ambiente produtivo. Além destas dificuldades. Página 12 Gerência de Configurações com Puppet . é muito raro encontrar um Sysadmin ou mesmo gestores que gostem ou que consigam compreender plenamente a importância de se elaborar uma boa documentação. os arquivos de configuração e mapear todo o ambiente afim de entender como tudo funciona. principalmente se acabamos de chegar nestes locais caóticos. Sem documentação e sem planejamento.br No caso de trabalhar em um ambiente deste tipo. 2.4linux.4 Desvantagens do modelo artesanal 4Linux – www. porém.com.2. não há como saber como aquilo foi realmente executado e principalmente quanto tempo vai ficar no ar. algo que reflita as configurações de seus sistemas ou serviços. O principal problema é que as vezes precisamos de vários meses para entender como funcionam certos ambientes. só assim poderá planejar e executar algum tipo de manutenção minimizando os riscos de sua mudança gerar um incidente nos serviços e sistemas envolvidos. a qualidade do que é entregue e a qualidade do serviço que produziu esta entrega é sempre questionável. • Documentação inexpressiva ou inexistente. já vimos que em ambientes com administração artesanal é muito difícil sobrar tempo para documentar ou planejar mudanças uma vez que as equipes responsáveis estão sempre sobrecarregadas executando tarefas repetitivas. Se houvesse uma documentação bem-feita. você vai ter que estudar o serviço.

5 Buscando um novo caminho • Falta de planejamento para execução de demandas.com.4linux.5 Buscando um novo caminho A boa notícia é que existe uma solução que — se bem aplicada — poderá tornar seu ambiente confiável e sua administração mais simples e eficiente. O Puppet é uma ferramenta de nova geração que implementa modernos conceitos de Gerência de Configuração com o objetivo de garantir a integridade e o pleno Gerência de Configurações com Puppet Página 13 . • Alto custo com horas extras. • Equipe desmotivada.br 2. • Demora na aplicação de mudanças. 2. • Atividades repetitivas e desgastantes. • Equipe com credibilidade baixa perante clientes e gestores. • Re-trabalho. • Baixo índice de disponibilidade de serviços oferecidos. • Desconhecimento dos riscos envolvidos em mudanças. • Alto índice de falhas humanas. • Demora na correção de problemas.4Linux – www. • Equipe sobrecarregada. esta solução se chama Puppet.

é através dela que podemos trabalhar provisionamento.com. 2. sistemas e serviços.1 Entendendo o que é a Gerência de Configurações A gerência de configurações é crítica para ambientes que estão crescendo ou que sejam de natureza complexa e heterogenia. fazendo isto de forma automatizada. minimizando o downtime e o impacto do incidente que foi gerado pelo Sysadmin desatento. As vezes um Sysadmin instala um pacote em um servidor e nem imagina que isto pode causar impacto em outra aplicação devido a dependências que por ventura podem remover ou desconfigurar algum arquivo de configuração de outro pacote ou serviço que esteja rodando em produção nesta mesma máquina. centralizada e ágil.5 Buscando um novo caminho 4Linux – www.5. Página 14 Gerência de Configurações com Puppet . Este exemplo é muito comum e acontece em muitas empresas que ainda não tem processos e procedimentos bem definidos. Ao analisar estes incidentes de forma crítica. automatização. gerência de mudanças. o pacote removido seria reinstalado e os arquivos de configuração modificados seriam corrigidos. Hoje — na prática — conseguimos identificar que a maioria dos incidentes em um ambiente ocorre pela falta de gestão dos processos e principalmente por falta de procedimentos claros de administração.2.4linux. manipulação de configurações e além disto ao implantá-la é possível iniciar também um processo sadio de documentação dos ambientes envolvidos além do planejamento de mudanças. vamos descobrir que eles ocorrem em sua maioria devido a erro humano.br funcionamento de seus ambientes. Entenda que se este cliente utilizasse alguma ferramenta de gerência de configurações. o serviço continuaria rodando.

3 Vantagens associadas a Gerência de Configurações Temos certamente algumas vantagens ao trabalharmos com gerência de configuração via Puppet. • Distribuição centralizada das configurações. estes três conceitos andam juntos e se amparam.com. sejam ambientes virtualizados ou computação em nuvem.4linux.br 2. Ao trabalhar com ambientes grandes e complexos. • Maior segurança e controle das aplicações em produção.2 Automação e padronização A partir do momento em que começamos a falar de Gerência de Configurações estamos falando também de padronização e automatização. • Rastreamento das mudanças em seus servidores. Gerência de Configurações com Puppet Página 15 .4Linux – www.5. • Documentação instantânea a partir da construção das configurações.5. você tem que automatizar. • Histórico de todo o clico de vida de uma VM ou Instância Gerenciada. do contrário você não conseguirá dar vazão as demandas e tão pouco manter seu ambiente integro e disponível. 2. não existe padronização sem gerência ou automação sem padronização. • Controle dos serviços rodando em seus servidores. • Controle das configurações em seus servidores.5 Buscando um novo caminho 2. são elas: • Padronização do seu parque.

2. 2.4linux. • Agilidade na configuração de serviços em servidores existentes. Ele funciona localmente ou em rede e pode gerenciar sistemas e serviços em diferentes plataformas.1 Características do Puppet • Foi escrito em Ruby • É extensível em Ruby • Funciona em modo local/autônomo ou em rede • Em modo cliente e servidor usa API REST Página 16 Gerência de Configurações com Puppet . • Agilidade na criação de novos servidores.6 Conhecendo o Puppet na prática O Puppet é um framework Open Source que oferece recursos e ferramentas para implantar um modelo único de gerência de configurações em seu ambiente.br • Facilidades para distribuir novas configurações para todo o parque de forma rápida.2.com. conseguimos diminuir sensivelmente o tempo de mudanças em diversos projetos. Mudanças como o exemplo do Zabbix que demandariam cerca de 75 horas contínuas de trabalho — e retrabalho — foram executadas em poucos minutos no mesmo parque de 450 servidores. eficiente e centralizada.6. Utilizando o Puppet como tecnologia de gerência de configurações.6 Conhecendo o Puppet na prática 4Linux – www.

br 2.6 Conhecendo o Puppet na prática • Em modo cliente e servidor provê comunicação segura usando SSL • Oferece camada de abstração de recursos (RAL) • É Idempotente • Oferece linguagem declarativa para expressar configurações (DSL) • Projeto open-source sob Licença Apache • Código fonte está disponível no Github 2.6. Casos e Seletores • Funções • Classes • Templates Gerência de Configurações com Puppet Página 17 . Condições. Expressões.com.2 Funcionalidades do Puppet Dentre as principais funcionalidades do Puppet podemos citar: • Fatos • Manifests • Resource Types • Parâmetros • Meta-parâmetros • Variáveis.4linux.4Linux – www.

version 15 ou superior • SUSE Linux Enterprise Server. version 4 ou superior • Scientific Linux.com. 2.7 Plataformas suportadas Atualmente o Puppet consegue gerenciar 19 tipos de sistemas operacionais.04 LTS ou superior • Fedora. version 5 (Lenny) ou superior • Ubuntu. version 11 ou superior • Gentoo Linux • Mandriva Corporate Server 4 • ArchLinux Página 18 Gerência de Configurações com Puppet .7.4linux. version 8. version 4 ou superior • CentOS.br • Definições • Módulos 2. version 4 ou superior • Oracle Linux.1 Sistemas Linux • Red Hat Enterprise Linux.2. version 4 ou superior • Debian.7 Plataformas suportadas 4Linux – www.

1 ou superior 2.3 Sistemas Unix • Mac OS X 10.4 Sistemas Windows • Windows Server 2003 and 2008 (Puppet versão 2.7.4Linux – www.com.7.7.4linux.8 Puppetlabs 2.2 Sistemas BSD • FreeBSD 4.br 2.6 e superior) 2.8 Puppetlabs • Fundada em 2005 por Luke Kaines (criador do Puppet).7 ou superior • OpenBSD 4.7.7.6 e superior) • Windows 7 (Puppet versão 2.5 (Leopard) e superior • Oracle Solaris 10 ou superior • AIX 5.3 ou superior • HP-UX 2. • Oferece suporte corporativo e versão enterprise do Puppet. Gerência de Configurações com Puppet Página 19 .

No decorrer de nossos estudos entenderemos o que é e como funciona cada um destes recursos e funcionalidades. 2.9 Projetos Internos Puppetlabs 4Linux – www. • Oferece programa de afiliados para comercializar o Puppet Enterprise.2.br • Mantém uma equipe de desenvolvimento para a versão open source e enterprise. • Mantém um repositório de módulos chamados Puppetforge com mais de 500 módulos prontos para uso.4linux. treinamentos e consultoria de implantação. • Oferece eventos CamptoCamp e PuppetConf anualmente para entusiastas.com.9 Projetos Internos Puppetlabs • Puppet • Facter • Puppet Dashboard • Puppet Enterprise • PuppetDB • Hiera • Razor Página 20 Gerência de Configurações com Puppet . • Mantém toda a documentação da versão enterprise e open source.

4linux. um pacote pode ser considerado um recurso. e até mesmo a execução de um comando pode ser considerado um recurso para o Puppet. podemos observar que os atributos de alguns Gerência de Configurações com Puppet Página 21 . um arquivo pode ser considerado um recurso. Um usuário pode ser considerado um recurso.4Linux – www. já um usuário tem nome (username). portanto pela lógica poderíamos agrupá-los por tipos. tipo de interpretador de comandos (shell) e diretório pessoal (home).10 Sintaxe Declarativa No puppet utilizamos uma linguagem declarativa com sintaxe simples e prática para declarar quais as configurações cada node (servidor) gerenciado pelo Puppet deve ter.com. um serviço que está rodando pode ser considerado um recurso. são através destes recursos que construiremos nossas configurações. indo além. tem um caminho no filesystem (path). Cada recurso em sua essência é similar a uma classe com seus atributos.10 Sintaxe Declarativa • Mcollective 2. um grupo grupo dono (group) e permissões (mode).br 2.11 Camada de Abstração Podemos dizer que o Puppet é composto por um conjunto de recursos (resources) e provedores (providers). uma rotina do cron pode ser considerada um recurso. um dono (owner). identificador de grupo (gid). Um arquivo por exemplo. 2. A sintaxe é natural para sysadmins e não é programação. Observe que temos recursos com contextos similares. identificador do usuário (uid). algumas partes da sintaxe se aproxima muito de linguagens de script como bash script – principalmente no tratamento de exceções usando expressões condicionais. um alias de correio pode ser considerado um recurso.

imagine que você deseja instalar o pacote HTOP em dois servidores. um deles é um Debian o ou- Página 22 Gerência de Configurações com Puppet . • 3. vamos dar um exemplo simples. podemos entender que a descrição de um recurso no Puppet sofre uma abstração quanto a sua forma de implementação. e mesmo em implementações diferentes seu funcionamento e objetivo não muda.com. Essas duas características (agrupar e abstrair) formam no Puppet o que podemos chamar de camada de abstração de recursos (Resource Abstraction Layer) ou RAL. com isto o Puppet nos permite descrever nossas configurações de uma forma abrangente. verifica o estado atual de um recurso usando o RAL. você simplesmente fala para ele “Instale um pacote” e o puppet vai verificar qual é o sistema operacional.4linux. No Puppet você não precisa se preocupar com a camada mais baixa de execução de comandos. O Puppet usa o RAL tanto para ler quanto para modificar o estado dos recursos em um sistema.11 Camada de Abstração 4Linux – www. quais os gerenciadores de pacotes disponíveis e vai então instalar o pacote para você. O RAL divide recursos em resource types (tipos de recursos) e providers (provedores dos recursos). Em outros sistemas de gerência de configuração normalmente teríamos que nos preocupar com isto e declarar de forma explícita o comando. possibilitando que tais configurações sejam aplicadas em praticamente qualquer sistema operacional. graças ao RAL isso não é necessário no Puppet. com isto.2. compara os dados coletados (estado atual) com o estado declarado para o recurso.br tipos são conceitualmente idênticos em alguns sistemas operacionais. Pode parecer complicado mas não é. tais como UID ou PATH. o Puppet o faz da seguinte forma: • 1. aplica mudanças necessárias no ambiente para que o estado do recurso reflita o que foi declarado para ele. • 2. No caso da modificação do estado de um recurso.

no entanto. 2.4Linux – www. cada um funciona de um jeito. Gerência de Configurações com Puppet Página 23 .com. não importa quantas vezes você as execute em um servidor. via Puppet nós apenas dizemos que queremos instalar o HTOP e o Puppet fará o resto para nós usando as ferramentas que estiverem disponíveis em cada sistema operacional. porém. logo o que foi declarado é igual a situação atual do sistema. se estiver ele não vai fazer nada. no Debian usaríamos o comando aptitude para instalar um pacote.12 Idempotência Em matemática e ciência da computação. No Puppet isto significa que você obtém o mesmo resultado com a mesma configuração. já no CentOS usaríamos o comando yum.12 Idempotência tro um CentOS. gerência de configurações. Neste caso específico na primeira vez ele instala e nas próximas 9 vezes ele não fará nada pois o sistema já tem o pacote. e isto não vai mudar mesmo que você rode a configuração centenas de vezes. isto não significa que o Puppet vai rodar 10 vezes o comando aptitude install htop. vamos aprofundar o entendimento desta ferramenta de automação. tanto aptitude quanto yum são gerenciadores de pacotes. graças ao RAL não precisamos nos preocupar com isto. nós só dizemos ’o que fazer’.13 Mão na Massa Agora que já estudamos e entendemos o que é administração artesanal de servidores e serviços. No caso do pacote HTOP se rodarmos a configuração do Puppet que manda instalar tal pacote. se não estiver ele vai instalar. a idempotência é a propriedade em que algumas operações que podem ser aplicadas várias vezes sem que o valor do resultado se altere após a aplicação inicial. na verdade ele vai verificar se o pacote está instalado. isso é a abstração do ’como fazer’.4linux.br 2. 2. Puppet e suas características.

vamos colocar a mão na massa a partir de agora. por isso. exemplos e dicas de aplicação.4linux.13 Mão na Massa 4Linux – www. apresentação. A melhor forma de aprender a utilizar o Puppet é praticar.13.com.br Separamos os principais e mais importantes recursos para apresentá-los de forma prática com exercícios que serão executados durante o treinamento.1 Infraestrutura do Curso Para ministrar este curso. 2. foi criada uma infraestrutura utilizando o VirtualBox como gerenciador das máquinas virtuais como mostra a figura abaixo: Página 24 Gerência de Configurações com Puppet .2. Cada recurso apresentado terá uma descrição.

04 Grupo: Environment 1 . são elas: Grupo: Puppet Configuration Manager • Help Desk Support – Debian 7 • Puppet Master – Ubuntu 12.br 2.Production • Firewall – Debian 7 • Gateway – CentOS 6 • DMZ Server – Debian 7 • Datacenter – Ubuntu 12.2 Grupo: Environment 3 .04 Gerência de Configurações com Puppet Página 25 .4linux.4Linux – www.Development • Windows Server – Windows Server 2008 R2 • Unix Server – Oracle Solaris 11.04 • Puppet Dashboard – Ubuntu 12.com.Testing • Zabbix Server – Ubuntu 12.04 • Mail Server – Debian 7 • Web Server – CentOS 6 Grupo: Environment 2 .13 Mão na Massa Para estes estudos vamos utilizar 13 máquinas virtuais.

br • DB Postgres – OpenSUSE 13.wheezy . siga os passos abaixo para instalar o Puppet utilizando o repositório oficial da Puppetlabs.2 Instalando o Puppet na distribuição Debian Considerando que estamos trabalhando com Debian Wheezy.1 Sugerimos o uso do VirtualBox para importação destas VMs.release . 1 root@firewall :~ # dpkg -i puppetlabs . deb 2 .2.Faça o download do pacote puppetlabs-release. deb 3 . prefira sempre a arquitetura 64 bits.release wheezy .13 Mão na Massa 4Linux – www.4linux.com. 2. com / puppetlabs . 1 root@firewall :~ # apt .13.Atualize os índices e instale o Puppet.Em seguida instale o pacote.get install puppet Página 26 Gerência de Configurações com Puppet .get update 2 root@firewall :~ # apt . puppetlabs . Executar na máquina Firewall 1 . 1 root@firewall :~ # wget http :// apt . É imprescindível que todas as VM’s sejam importadas e estejam prontas para iniciarmos o próximo passo.

release ..br 2. Executar na máquina Datacenter 1 .Em seguida instale o pacote 1 root@datacenter :~ # dpkg -i puppetlabs . siga os passos abaixo para instalar o Puppet utilizando o repositório oficial da Puppetlabs.3 Instalando o Puppet na distribuição Ubuntu Considerando que estamos trabalhando com Ubuntu versão 12.. deb Gerência de Configurações com Puppet Página 27 .Para terminar comente a diretiva templatedir que está obsoleta nesta versão do Puppet. conf 2 [ main ] 3 4 .4linux. 1 root@firewall :~ # vim / etc / puppet / puppet .04 (Precise). deb 2 .release .4Linux – www.13.com.Faça o download do pacote puppetlabs-release 1 root@datacenter :~ # wget http :// apt . com / puppetlabs . 5 6 # templatedir = $confdir / templates Repita a instalação do Puppet nas máquinas DMZ Server e Web Server. puppetlabs .precise . que utilizam a distribuição Debian! 2..precise .13 Mão na Massa 4 .

get update 2 root@datacenter :~ # apt .4linux.release . rpm Página 28 Gerência de Configurações com Puppet .. 5 6 # templatedir = $confdir / templates Repita a instalação do Puppet na máquina Zabbix Server que utiliza a distribuição Ubuntu! 2. conf 2 [ main ] 3 4 .br 3 ..el -6. 1 root@datacenter :~ # vim / etc / puppet / puppet .com.2.get install puppet 4 ..13.Para terminar comente a diretiva templatedir que está obsoleta nesta versão do Puppet. siga os passos abaixo para instalar o Puppet utilizando o repositório oficial da Puppetlabs. puppetlabs . noarch . Executar na máquina Mail Server 1 .Atualize os índices e instale o Puppet 1 root@datacenter :~ # apt . com / puppetlabs .Faça o download do pacote puppetlabs-release 1 root@mailserver :~ # wget http :// yum .4 Instalando o Puppet na distribuição CentOS Considerando que estamos trabalhando com CentOS versão 6.13 Mão na Massa 4Linux – www.

13. siga os passos abaixo para instalar o Puppet utilizando o repositório oficial da Puppetlabs.release .. 5 6 # templatedir = $confdir / templates Repita a instalação do Puppet na máquina Gateway que utiliza a distribuição CentOS! 2. conf 2 [ main ] 3 4 . 1 root@mailserver :~ # vim / etc / puppet / puppet . Executar na máquina DB Postgres Gerência de Configurações com Puppet Página 29 .13 Mão na Massa 2 .5 Instalando o Puppet na distribuição OpenSuSE Considerando que estamos trabalhando com OpenSuSE versão 13.el -6. noarch . rpm 3 .com.ivh puppetlabs .1.E para terminar instale o Puppet 1 root@mailserver :~ # yum install puppet 4 ..4linux.4Linux – www.br 2.Para terminar comente a diretiva templatedir que está obsoleta nesta versão do Puppet.Em seguida instale o pacote 1 root@mailserver :~ # rpm ..

confiar temporariamente ou confiar sempre ? [r/t/s /? exibe todas as op ç õ es ] ( r ) : s ( Enter ) 3 .Adicione o repositório do Puppet para OpenSuSE.2..13 Mão na Massa 4Linux – www. Página 30 Gerência de Configurações com Puppet .Para terminar comente a diretiva templatedir que está obsoleta nesta versão do Puppet.com.1 Puppet Repository 2 .. 5 6 # templatedir = $confdir / templates 2.. conf 2 [ main ] 3 4 .Logue com o usuário aluno e alterne para o usuário root.br 1 . org / repositories / systemsmanagement :/ puppet / openSUSE_13 .13.2.Em seguida instale o Puppet 1 root@dbpostgres :~ # zypper install puppet 2 Voc ê quer rejeitar a chave .4linux. Executar na máquina Unix Server 1 . opensuse .Oracle Solaris Siga os passos abaixo para instalar o Puppet disponível no Oracle Solaris 11. 1 root@dbpostgres :~ # vim / etc / puppet / puppet . 1 root@dbpostgres :~ # zypper ar -f http :// download .6 Instalando o Puppet em Ambiente Unix .

com.configprint confdir 2 / etc / puppet O resultado indica que o Puppet esta instalado e seus arquivos de configuração estão localizados no diretório /etc/puppet 2 .4linux.14 Primeiros passos com o Puppet aluno@unixserver :~ $ su - 2 .4Linux – www.Verifique a instalação do Puppet 1 root@unixserver :~ # pkg info -r puppet 2.Um outro comando que podemos executar é descobrir se o Puppet armazenou o FQDN da maquina: Gerência de Configurações com Puppet Página 31 .br 1 2.14 Primeiros passos com o Puppet Agora que o Puppet esta instalado vamos conhecer algumas opções do comando puppet Executar na máquina Firewall 1 .Em seguida instale o Puppet 1 root@unixserver :~ # pkg install puppet 3 .Primeiro vamos confirmar a instalação do Puppet através do seguinte comando: 1 root@firewall :~ # puppet agent -.

9 cert Manage certificates and requests certificate Provide access to the CA for certificate 10 management . and convert catalogs .14.com. 8 catalog Compile . parâmetros e flags. br O resultado indica que o FQDN firewall. Para fornece ajuda rápida execute o seguinte comando 1 root@firewall :~ # puppet help 2 3 Available subcommands : 4 5 agent The puppet agent daemon 6 apply Apply Puppet manifests locally 7 ca Local Puppet Certificate Authority management .2.com.br 1 root@firewall :~ # puppet agent -. save .Outras opções que podem ser exploradas: 1 vardir 2 rundir 3 ssldir 4 ca_server 5 server 2.dexter. manuais e documentação para consultar comandos. com . Página 32 Gerência de Configurações com Puppet . dexter . 3 .1 Puppet Help O próprio Puppet fornece ajuda rápida.configprint certname 2 firewall .14 Primeiros passos com o Puppet 4Linux – www.br sera usado no certificado para comunicação com o Puppet Master. view .4linux.

com.4linux.4Linux – www. O comando exibe uma lista de todos os subcomandos com uma rápida descrição. installs and searches for modules on the Manage instrumentation listeners . 37 secret_agent Mimics puppet agent . 32 plugin Interact with the Puppet plugin system . 28 master The puppet master daemon 29 module Creates .14 Primeiros passos com o Puppet 11 certificate_request 12 certificate_revocation_list Manage certificate requests . Manage instrumentation probes . and remove certificate keys . defined resource types . 31 parser Interact directly with the parser . 35 resource The resource abstraction layer shell 36 resource_type View classes . 30 node View and manage node definitions . save . 18 file Retrieve and store files in a filebucket 19 filebucket Store and retrieve files in a filebucket 20 help Display Puppet help . Puppet Forge . 26 kick Remotely control puppet agent 27 man Display Puppet manual pages . 21 inspect Send an inspection report 22 instrumentation_data Manage instrumentation listener accumulated data . 38 status View puppet server status . display . and nodes from all manifests . 14 describe Display help about resource types 15 device Manage remote network devices 16 doc Generate Puppet documentation and references 17 facts Retrieve and store facts . Manage the list of revoked certificates . Gerência de Configurações com Puppet Página 33 .br 2. 13 config Interact with Puppet ’ s configuration options . 33 queue Queuing daemon for asynchronous storeconfigs 34 report Create . and submit reports . 23 instrumentation_listener 24 instrumentation_probe 25 key Create .

14.14 Primeiros passos com o Puppet 4Linux – www.4linux.br Caso queira exibir ajuda somente do subcomando apply use: 1 root@firewall :~ # puppet help apply 2.2.2 Puppet Man O Puppet possui um comando próprio para exibir manuais dos subcomandos do help: 1 root@firewall :~ # puppet man apply Para maiores informações use o comando man puppet-man Página 34 Gerência de Configurações com Puppet .com.