objetivos

abordar instalação do puppetmaster-passenger no debian squeeze

premissas

ter o debian squeeze instalado e funcional, com acesso a internet

ambiente

Duas VMs debian squeeze rodando em virtualbox no OSX

puppet, 192.168.56.101
puppetagent, 192.168.56.102

procedimentos

ajustando repositórios

habilitar repositório squeeze backports

deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
deb http://apt.puppetlabs.com/debian squeeze main

instalando puppetmaster

atualize os indices

aptitude update

instale o puppetmaster

aptitude -t squeeze-backports install puppet puppetmaster-passenger

verificando arquivos

verifique no arquivo /etc/puppet.conf se existem as seguintes linhas na seção [master], elas devem estar presentes

ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

verifique se existe o arquivo /etc/apache2/sites-enabled/puppetmaster, seu conteúdo será similar ao abaixo

/etc/apache2/sites-enabled/puppetmaster
# you probably want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
# PassengerMaxRequests 1000
PassengerStatThrottleRate 120
RackAutoDetect Off
RailsAutoDetect Off
 
Listen 8140
 
<VirtualHost *:8140>
        SSLEngine on
        SSLProtocol -ALL +SSLv3 +TLSv1
        SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
 
        SSLCertificateFile      /var/lib/puppet/ssl/certs/puppetmaster.pem
        SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/puppetmaster.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/certs/ca.pem
        SSLCACertificateFile    /var/lib/puppet/ssl/certs/ca.pem
        # If Apache complains about invalid signatures on the CRL, you can try disabling
        # CRL checking by commenting the next line, but this is not recommended.
        SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem
        SSLVerifyClient optional
        SSLVerifyDepth  1
        SSLOptions +StdEnvVars
 
        RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e
 
        DocumentRoot /usr/share/puppet/rack/puppetmasterd/public/
        RackBaseURI /
        <Directory /usr/share/puppet/rack/puppetmasterd/>
                Options None
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

verifique se o arquivo /usr/share/puppet/rack/puppetmasterd/config.ru foi criado, seu conteúdo será similar ao abaixo

# a config.ru, for use with every rack-compatible webserver.
# SSL needs to be handled outside this, though.
 
# if puppet is not in your RUBYLIB:
# $:.unshift('/opt/puppet/lib')
 
$0 = "master"
 
# if you want debugging:
# ARGV << "--debug"
 
ARGV << "--rack"
require 'puppet/application/master'
# we're usually running inside a Rack::Builder.new {} block,
# therefore we need to call run *here*.
run Puppet::Application[:master].run

verificando módulos

verifique se as configuracao do puppetmaster no apache está ativada

puppet:/etc/apache2/sites-enabled#  a2ensite puppetmaster
Site puppetmaster already enabled

verifique se os módulos passenger, ssl e headers estão habilitados

puppetmaster:/etc/apache2/conf.d# a2enmod passenger
Module passenger already enabled

puppetmaster:/etc/apache2/conf.d# a2enmod ssl
Module ssl already enabled

puppetmaster:/etc/apache2/conf.d# a2enmod headers
Enabling module headers.
Run '/etc/init.d/apache2 restart' to activate new configuration! 

se necessário for, reinicie o apache2.

/etc/init.d/apache2 restart

verificando portas

verifique se a porta 8140 está aberta

puppet:/etc/apache2/sites-enabled# netstat -ntpl|grep 8140
tcp6       0      0 :::8140                 :::*                    LISTEN      20515/apache2 

só para garantir reinicie a máquina e veja se o serviço sobe sem problemas por padrão.

verificando serviço

outra forma de verificar se o puppet está rodando via passenger é acessar o endereço

https://ip_do_servidor:8140/

se receber o retorno abaixo, seu puppetmaster-passenger está funcionando.

The environment must be purely alphanumeric, not ''

puppetmaster

acessando master

o agente vai procurar sempre o puppetmaster através do nome puppet ou puppet.dominio.

via dns

se possível crie um registro de DNS tipo A com o nome puppet apontando para máquina puppetmaster , se não for possível registro do tipo A, faça um registro do tipo CNAME.

via hosts

caso a configuração de DNS não seja uma opção, uma forma de resolver é inserir uma entrada no /etc/hosts

192.168.56.102 puppet

isso será suficiente para o agente funcionar, coloque o ip do seu puppetmaster

via puppet.conf

se ainda não for uma opção, pode ainda editar o arquivo /etc/puppet.conf e inserir a diretiva

server=nomedoservidor

na seção [agente], mas prefira sempre a configuração de DNS.

testando master

ao instalar o puppetmaster, o puppet-agent também é instalado, através dele podemos verificar se está tudo funcionando adequadamente no master.

root@puppetmaster:/etc/apt# puppet agent --test
info: Caching catalog for puppet.dominio
info: Applying configuration version '1337281239'
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 0.02 seconds

se você tiver um retorno como este, está tudo funcionando bacana.

entendendo arquivos e diretórios default

Ao instalar você verá o seguinte conteúdo no diretório /etc/puppet

puppet:/etc/puppet# ls -lah
total 40K
drwxr-xr-x  5 root root 4.0K May 15 16:27 .
drwxr-xr-x 70 root root 4.0K May 15 16:25 ..
-rw-r--r--  1 root root 2.5K Apr 10 15:23 auth.conf
-rw-r--r--  1 root root  459 Apr 11 00:19 fileserver.conf
drwxr-xr-x  2 root root 4.0K Apr  5 13:01 manifests
drwxr-xr-x  2 root root 4.0K Apr  5 13:01 modules
-rw-r--r--  1 root root  462 Apr 11 00:19 puppet.conf
drwxr-xr-x  2 root root 4.0K Apr  5 13:01 templates

O arquivo auth.conf define as permissões dos agentes para acessar o servidor puppet

O arquivo fileserver.conf define quais redes podem acessar arquivos servidos pelo puppet.

No diretório manifests nós iremos declarar as configurações chamadas de manifests e os nodes que vão utilizá-las.

O diretório templates tem arquivos de configuração que serão aproveitados pelos nodes, estes arquivos são dinâmicos, contém variáveis.

O arquivo puppet.conf contém tanto configurações do agent quanto do master.

Dependendo de como for usar o Puppet, muitos outros arquivos e diretórios serão criados nessa estrutura, mas isso será assunto para outra wiki.

problemas conhecidos

nao encontrou o servidor

caso não tenha sido configurado o dns, host ou puppet.conf com o endereço do servidor puppet, provavelmente vai receber este erro.

root@puppetmaster:/etc/apt# puppet agent --test
err: Could not retrieve catalog from remote server: getaddrinfo: Name or service not known
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
err: Could not send report: getaddrinfo: Name or service not known

para corrigir isto veja as instruções em 'acessando master'.

referências



puppet_instalando_puppet_master_em_debian.txt · Last modified: 2012/06/01 17:12 by gutocarvalho
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0