Puppet requires certificates between the client (puppet) being managed and the server (puppetmaster). You can run manually on the client and then go onto the server to sign the certificate, but how do you automate this process for clusters / cloud machines?
On the server (puppetmaster) run:
Then copy the following from the server onto the client:
If you wish to sign
<NAME>
as something other than the hostname use:And add to /etc/puppet/puppet.conf if running the daemon
Simple answer: automatically sign new requests. This of course is dangerous because you're blindly trusting any system that connects to your puppetmaster, which is the purpose for requiring manual signing.
You can specify false and a file to use to determine which keys to sign, too.
See the configuration reference on the Puppet wiki.
Another option is to use a tool like Capistrano, where you specify the puppetmaster node and create the client instance nodes, and in the task:
If you have a host database, you can use the autosign feature. In your
puppet.conf
file, in the[puppetmasterd]
, add:Then use a crontab to generate this file. The autosign file is just a list of hosts to autosign when they first connect to the puppetmaster. I use LDAP to configure my puppet hosts, so my cron looks like:
I'm sure people who use iClassify would be able to write a query to do the same.
Of course, you need to have some trust in the network. I use this on EC2. My puppetmaster server is in a group that only allows connections from other trusted groups. I wouldn't recommend doing this if your puppetmaster is open to the internet.
On the server (puppetmaster) run:
Then copy the following from the server onto the client:
If you wish to has as something other than the hostname use:
And add to /etc/puppet/puppet.conf if running the daemon