On Jul 13, 2010, at 6:54 AM, Marco Marongiu wrote:

> Dear puppeteers
> 
> I am trying to build a tree hierarchy of puppetmasters. The architecture
> is aimed to distribute the load among a number of datacenters, while
> keeping the puppetmasters in sync by means of puppet itself.
> 
> The architecture I am trying to build is:
> 
> - one "main puppetmaster";
> - many "distribution servers", that will be client of the main
>  puppetmaster, and masters to other clients
> - plain clients
> 
> 
> Unfortunately puppetmasterd gets in the way (maybe thinking it's so
> smart?), screwing up the SSL setup. This was discussed yesterday on IRC;
> Volcano suspects that there something in the certificates is at the root
> of the problem, and that's why I added a certdnsnames directive, but
> with no result so far.
> 
> I am testing this setup on VirtualBox VMs on my desktop (which is
> actually a luck since I can use snapshot and rewind back and forth to
> different working states). The main puppetmaster is called
> mastertest.oslo.osa and has address 192.168.56.108; the distribution
> server is called distserver.oslo.osa and has address 192.168.56.111.
> Both are on each other's /etc/hosts file.
> 
> First, I configure distserver as a plain puppet client of mastertest. A
> couple of runs of puppetd --test will bring it up to speed, and it will
> work as expected.
> 
> Then, on mastertest, I create a node file for distserver, which will
> define it as a distribution server, and run puppetd again.
> /etc/puppet/puppet.conf is rewritten so that it contains the following
> certdnsnames in the puppetmasterd section:
> 
> certdnsnames="distserver.oslo.osa:distserver"
> 
> while the server directive is the puppetd section is:
> 
> server=mastertest.oslo.osa
> 
> Eventually, after the new puppet.conf is already in place, puppetmasterd
> starts, and screws up the SSL setup:
> 
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Creating a new SSL key for ca
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Using cached certificate for 
>> ca, good until Sun Jul 05 12:44:33 UTC 2015
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Expiring the certificate 
>> cache of ca
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Removing file 
>> Puppet::SSL::Certificate ca at '/var/lib/puppet/ssl/certs/ca.pem'
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Retrieved certificate does 
>> not match private key
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Creating a new SSL 
>> certificate request for ca
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Signed certificate request 
>> for ca
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Rebuilding inventory file
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Using cached 
>> certificate_revocation_list for ca, good until 
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Using cached certificate for 
>> ca, good until Sat Jul 11 12:00:38 UTC 2015
>> Jul 13 14:00:38 distserver puppetmasterd[2861]: Using cached certificate for 
>> distserver.oslo.osa, good until Sat Jul 11 09:25:03 UTC 2015
>> Jul 13 14:00:38 distserver puppetmasterd[2888]: Reopening log files
> 
> (note the "Removing file" line...)
> 
> 
> Now, next time I run puppetd --test, all I get is:
> 
>> Jul 13 14:01:08 distserver puppetd[3212]: Could not retrieve catalog from 
>> remote server: undefined method `closed?' for nil:NilClass
>> Jul 13 14:01:08 distserver puppetd[3212]: Not using cache on failed catalog
>> Jul 13 14:01:08 distserver puppetd[3212]: Could not retrieve catalog; 
>> skipping run
> 
> Needless to say, if I stop puppetmasterd and put the old, "client" files
> back in place into /var/lib/puppet, this machine starts working again as
> a client.
> 
> On mastertest (which has a nginx reverse proxy to four puppetmasterd
> instances, again for scalability) I see that the request from distserver
> is wrong. In fact, for distserver I have:
> 
>> 192.168.56.111 - - [13/Jul/2010:15:30:09 +0200] "-" 400 0 "-" "-"
> 
> while for working clients (e.g.: mastertest itself) I have something like:
> 
>> 192.168.56.109 - - [13/Jul/2010:15:30:28 +0200] "GET 
>> /production/catalog/mastertest.oslo.osa?facts_format=b64_zlib_yaml&facts=LONG_BASE64_STRING_HERE
> 
> I honestly can't understand what is going on here...

Basically, the puppet packages you are using (and I suspect most others) assume 
that the client and the server on a given machine are part of the same PKI.  It 
also might be assuming a couple of other things, but my experiments never got 
that far.  

> Is there a way to make this all work as intended?


WARNING: This fix is almost as destructive as rm -Rf /var/lib/puppet 

I think everything will just work if you set puppetd and puppetmaster to have a 
different "ssldir" like this:

[main]
#remove the ssldir entry from here.

[puppetmasterd]
ssldir=/var/lib/puppet/ssl_server

[puppetd]
ssldir=/var/lib/puppet/ssl_client


I won't say this is working as intended.  The normal way is to make a real PKI 
that includes all the servers, but this is probably much easier, and will 
probably do what you want.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to