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

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

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

pode se tornar um parque com dezenas. um parque em que antes possuía algumas máquinas físicas. 1 . No entanto. atualmente o grande desafio dos sysadmins é encontrar a melhor forma de administrar centenas ou milhares de servidores após sua criação.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.1 Introdução teórica Hoje em dia com a crescente adoção das tecnologias de virtualização e computação em nuvem. com isto. normalmente uma nova demanda gera uma nova instância ou uma nova máquina virtual. criar instâncias em sistemas CLOUD IaaS também. nosso ambiente de servidores tende a crescer rapidamente. são necessários poucos minutos para executar essa demanda em ambas tecnologias. centenas ou milhares de instâncias e máquinas virtuais. Sabemos que criar máquinas virtuais é relativamente fácil em qualquer hypervisor. e da mesma forma. e tudo isto pode acontecer em poucos meses.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Condições.6. Expressões.br 2. 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.2 Funcionalidades do Puppet Dentre as principais funcionalidades do Puppet podemos citar: • Fatos • Manifests • Resource Types • Parâmetros • Meta-parâmetros • Variáveis.com.4Linux – www.4linux.

version 4 ou superior • CentOS.04 LTS ou superior • Fedora. version 15 ou superior • SUSE Linux Enterprise Server. version 5 (Lenny) ou superior • Ubuntu.7 Plataformas suportadas 4Linux – www. version 4 ou superior • Debian.4linux.2.7.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 8.com. 2. version 4 ou superior • Scientific Linux.br • Definições • Módulos 2.7 Plataformas suportadas Atualmente o Puppet consegue gerenciar 19 tipos de sistemas operacionais. version 4 ou superior • Oracle Linux.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful