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.