Wednesday, May 13th, 2009 | Author: Nico

Mon puppetmaster au boulot a toujours été le bon vieux webrick fourni avec puppet. J’ai récemment atteint un nombre de machines qui ne permet plus de l’utiliser, il ne scale pas. Qu’à cela ne tienne, après avoir parcouru le wiki de puppet je me suis lancé : petit résumé et condensé orienté debian.

Tout d’abord les paquets nécessaires :

apt-get install mongrel nginx

Ensuite modifier la conf dans /etc/default/puppetmaster pour démarrer des serveurs de type mongrel en lieu et place de webrick :

SERVERTYPE=mongrel
PUPPETMASTERS=4
PORT=18140

Modifier la section puppetmasterd dans votre puppet.conf en ajoutant la ligne suivante :

ssl_client_header=HTTP_X_SSL_SUBJECT

et enfin le nginx.conf, copie quasi conforme de celui du wiki :

user root;
worker_processes 5;
 
error_log /var/log/nginx/error-puppet.log;
pid /var/run/nginx-puppet.pid;
 
events {
     worker_connections  1024;
}
 
http {
     default_type  application/octet-stream;
     access_log  /var/log/nginx/access.log;
 
     sendfile       on;
     tcp_nopush     on;
 
     keepalive_timeout  65;
     tcp_nodelay        on;
 
     ssl                     on;
 
     ssl_certificate         /var/lib/puppet/ssl/certs/puppet.XXXXX.pem;
     ssl_certificate_key     /var/lib/puppet/ssl/private_keys/puppet.XXXXXt.pem;
     ssl_client_certificate  /var/lib/puppet/ssl/ca/ca_crt.pem;
     ssl_ciphers             SSLv2:-LOW:-EXPORT:RC4+RSA;
     ssl_session_cache       shared:SSL:8m;
     ssl_session_timeout     5m;
 
     upstream puppet-production {
          server 127.0.0.1:18140;
          server 127.0.0.1:18141;
          server 127.0.0.1:18142;
          server 127.0.0.1:18143;
     }
 
     server {
          listen                  8140;
          ssl_verify_client       on;
          root                    /var/empty;
          access_log              /var/log/nginx/access-8140.log;
          rewrite_log             /var/log/nginx/rewrite-8140.log;
 
     location / {
          proxy_pass          http://puppet-production;
          proxy_redirect      off;
          proxy_set_header    Host             $host;
          proxy_set_header    X-Real-IP        $remote_addr;
          proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
          proxy_set_header    X-Client-Verify  SUCCESS;
          proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
          proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
     proxy_read_timeout  65;
     }
   }
 
    server {
        listen                  8141;
        ssl_verify_client       off;
        root                    /var/empty;
        access_log              /var/log/nginx/access-8141.log;
        rewrite_log             /var/log/nginx/rewrite-8141.log;
 
        location / {
            proxy_pass         http://puppet-production;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   X-Client-Verify  FAILURE;
            proxy_set_header   X-SSL-Subject    $ssl_client_s_dn;
            proxy_set_header   X-SSL-Issuer     $ssl_client_i_dn;
            proxy_read_timeout  65;
        }
    }
 
}

Et OUI il tourne en root, à cause des certificats, flemme de gruiker sur les permissions.

You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.
Leave a Reply