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

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

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

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

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

provavelmente os scripts utilizados não vão conseguir prever as exceções e tratar todas as diferenças entre os diferentes sistemas operacionais. OpenBSD. com isto. a partir daí acessará e executará comandos em Loop. não funcionam a medida que mais e mais servidores são criados.4linux. Isto será cansativo e demorado. por esta razão é natural que algumas equipes partam para administração usando SSH em Loop com auxílio de programas como o ClusterSSH. 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. deixando então os scripts de lado. afinal sobrecarga significa hora extra a noite. FreeBSD. Debian. 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. • Iniciar e manter serviços rodando – mesmo após um boot. a equipe provavelmente vai separar os servidores em grupos ou contextos como RHEL.4Linux – www. tentando assim cumprir suas metas.1 Introdução teórica • Criar e modificar arquivos de configuração. Avaliando este cenário. você será forçado a ampliar sua equipe — e seus custos — para dar conta das tarefas. gera uma grande sobrecarga em cima de sua equipe e principalmente nos membros mais experientes. podemos dizer que a administração manual não escala. as vezes é até preciso alocar vários analistas de foma simultânea para resolver este tipo de tarefa repetitiva dentro do prazo estipulado. e além de não escalar. Gerência de Configurações com Puppet Página 3 .com. Veja que em um ambiente como este. 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. Isto tende a aumentar o custo necessário para manter seu ambiente. Neste caso. com isto.br 2. nos finais de semana e feriados. 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 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. de madrugada.

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

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

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

é comum ter parte dos servidores padronizados e parte fora dos mínimos padrões. 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.4linux. Pense no trabalho que você vai ter para criar o usuário do novo colaborador em todos os servidores do parque.2 Tratamento de demandas Nós já falamos de padronização e agora vamos entender o que são demandas repetitivas.br 2. para isto. Um logrotate mal configurado pode fazer seu disco encher rapidamente parando aplicações e serviços de seus clientes. Imagine que você tenha um parque com 450 Servidores. vamos utilizar alguns exemplos bastante comuns. 2. 2. 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 .4Linux – www.2. para isto você precisa de pelo menos 5 passos.com.2 Tratamento de demandas 4.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. e normalmente por negligência ou devido a sobrecarga.

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

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

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

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

você vai ter que estudar o serviço. não há como saber como aquilo foi realmente executado e principalmente quanto tempo vai ficar no ar. os arquivos de configuração e mapear todo o ambiente afim de entender como tudo funciona. a qualidade do que é entregue e a qualidade do serviço que produziu esta entrega é sempre questionável.br No caso de trabalhar em um ambiente deste tipo. é 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.4 Desvantagens do modelo artesanal • Falta de padronização de seu ambiente. seria muito mais simples planejar e executar manutenções neste tipo de local. os processos e os procedimentos envolvidos em todo o ambiente produtivo. 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. • Documentação inexpressiva ou inexistente. O principal problema é que as vezes precisamos de vários meses para entender como funcionam certos ambientes. afinal. Além destas dificuldades. algo que reflita as configurações de seus sistemas ou serviços. porém. 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. principalmente se acabamos de chegar nestes locais caóticos.4 Desvantagens do modelo artesanal 4Linux – www. 2.2. Página 12 Gerência de Configurações com Puppet . Sem documentação e sem planejamento.4linux.com. Se houvesse uma documentação bem-feita.

• Demora na aplicação de mudanças. 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 .5 Buscando um novo caminho • Falta de planejamento para execução de demandas. • Desconhecimento dos riscos envolvidos em mudanças. • Re-trabalho. • Alto custo com horas extras. • Atividades repetitivas e desgastantes. • Baixo índice de disponibilidade de serviços oferecidos. • Equipe sobrecarregada. 2.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. • Equipe desmotivada. esta solução se chama Puppet. • Demora na correção de problemas. • Equipe com credibilidade baixa perante clientes e gestores.4linux.br 2. • Alto índice de falhas humanas.4Linux – www.com.

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. automatização. centralizada e ágil. 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. Página 14 Gerência de Configurações com Puppet . o pacote removido seria reinstalado e os arquivos de configuração modificados seriam corrigidos. Entenda que se este cliente utilizasse alguma ferramenta de gerência de configurações. Ao analisar estes incidentes de forma crítica. minimizando o downtime e o impacto do incidente que foi gerado pelo Sysadmin desatento. 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. Este exemplo é muito comum e acontece em muitas empresas que ainda não tem processos e procedimentos bem definidos.br funcionamento de seus ambientes.5.5 Buscando um novo caminho 4Linux – www. 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. fazendo isto de forma automatizada. o serviço continuaria rodando. vamos descobrir que eles ocorrem em sua maioria devido a erro humano.2. gerência de mudanças. 2. sistemas e serviços. é através dela que podemos trabalhar provisionamento.4linux.com.

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

2.com.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. Utilizando o Puppet como tecnologia de gerência de configurações. Ele funciona localmente ou em rede e pode gerenciar sistemas e serviços em diferentes plataformas. 2. • Agilidade na configuração de serviços em servidores existentes.br • Facilidades para distribuir novas configurações para todo o parque de forma rápida. • Agilidade na criação de novos servidores. conseguimos diminuir sensivelmente o tempo de mudanças em diversos projetos.6. 2. eficiente e centralizada.4linux. 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.6 Conhecendo o Puppet na prática 4Linux – www.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 .

Expressões.2 Funcionalidades do Puppet Dentre as principais funcionalidades do Puppet podemos citar: • Fatos • Manifests • Resource Types • Parâmetros • Meta-parâmetros • Variáveis.br 2.6.4Linux – www. Casos e Seletores • Funções • Classes • Templates Gerência de Configurações com Puppet Página 17 . Condições.4linux.com.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.

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

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

4linux. • Mantém toda a documentação da versão enterprise e open source. treinamentos e consultoria de implantação.9 Projetos Internos Puppetlabs • Puppet • Facter • Puppet Dashboard • Puppet Enterprise • PuppetDB • Hiera • Razor Página 20 Gerência de Configurações com Puppet .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.2.9 Projetos Internos Puppetlabs 4Linux – www. • Oferece eventos CamptoCamp e PuppetConf anualmente para entusiastas. • Oferece programa de afiliados para comercializar o Puppet Enterprise.com. 2. No decorrer de nossos estudos entenderemos o que é e como funciona cada um destes recursos e funcionalidades.

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

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

Gerência de Configurações com Puppet Página 23 . 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. logo o que foi declarado é igual a situação atual do sistema. No caso do pacote HTOP se rodarmos a configuração do Puppet que manda instalar tal pacote.12 Idempotência Em matemática e ciência da computação.13 Mão na Massa Agora que já estudamos e entendemos o que é administração artesanal de servidores e serviços. já no CentOS usaríamos o comando yum. se não estiver ele vai instalar. se estiver ele não vai fazer nada. isto não significa que o Puppet vai rodar 10 vezes o comando aptitude install htop. 2. porém.br 2. 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. não importa quantas vezes você as execute em um servidor. isso é a abstração do ’como fazer’. Puppet e suas características. 2. cada um funciona de um jeito.12 Idempotência tro um CentOS. nós só dizemos ’o que fazer’. tanto aptitude quanto yum são gerenciadores de pacotes. na verdade ele vai verificar se o pacote está instalado.4linux. No Puppet isto significa que você obtém o mesmo resultado com a mesma configuração. no entanto. graças ao RAL não precisamos nos preocupar com isto. vamos aprofundar o entendimento desta ferramenta de automação. no Debian usaríamos o comando aptitude para instalar um pacote. e isto não vai mudar mesmo que você rode a configuração centenas de vezes.com. gerência de configurações. 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.4Linux – www.

2.1 Infraestrutura do Curso Para ministrar este curso. 2.com.13 Mão na Massa 4Linux – www.4linux. vamos colocar a mão na massa a partir de agora.13. A melhor forma de aprender a utilizar o Puppet é praticar. exemplos e dicas de aplicação. 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 . por isso. apresentação.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. Cada recurso apresentado terá uma descrição.

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

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

. que utilizam a distribuição Debian! 2. 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.Em seguida instale o pacote 1 root@datacenter :~ # dpkg -i puppetlabs .04 (Precise). deb 2 .4linux.br 2.. conf 2 [ main ] 3 4 .release . siga os passos abaixo para instalar o Puppet utilizando o repositório oficial da Puppetlabs..precise .13. puppetlabs .release . com / puppetlabs .Faça o download do pacote puppetlabs-release 1 root@datacenter :~ # wget http :// apt . 1 root@firewall :~ # vim / etc / puppet / puppet . Executar na máquina Datacenter 1 .com. 5 6 # templatedir = $confdir / templates Repita a instalação do Puppet nas máquinas DMZ Server e Web Server.3 Instalando o Puppet na distribuição Ubuntu Considerando que estamos trabalhando com Ubuntu versão 12.4Linux – www.precise .13 Mão na Massa 4 .

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

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

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

Em seguida instale o Puppet 1 root@unixserver :~ # pkg install puppet 3 .com.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 .br 1 2.4linux.Primeiro vamos confirmar a instalação do Puppet através do seguinte comando: 1 root@firewall :~ # puppet agent -.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 .4Linux – www.Verifique a instalação do Puppet 1 root@unixserver :~ # pkg info -r puppet 2.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 .14 Primeiros passos com o Puppet aluno@unixserver :~ $ su - 2 .

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

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

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.4linux.14.2.14 Primeiros passos com o Puppet 4Linux – www.br Caso queira exibir ajuda somente do subcomando apply use: 1 root@firewall :~ # puppet help apply 2.

Sign up to vote on this title
UsefulNot useful