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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 .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.com.2.14.4linux.

Sign up to vote on this title
UsefulNot useful