So, I’ve been hacking away in my homelab as of late, building out a CentOS kickstart server, a Git server, and a puppet server. Right now, I am working on how to roll my puppet agent installs into my kickstart process. I just started on this, so I have yet to nail it down.
So currently, when kicking a VM, I am not yet setting my new CentOS node’s hostname before the install process. Sadly I am setting it manually as I am still building my kickstarts, and they are no where near where I want them to be.
Well, this whole hostname mumbo-jumbo just creates all sorts of issues for puppet… the hostname is one thing initially, then puppet installs as part of the post, and the hostname is set manually to finalize the install. Well this is no good, as you are are not going to be able to add your new node properly until you step in and provide a bit of manual persuasion.
Now while its not hard to find documentation on how to troubleshoot puppet node and master certificate issues — see here and here for example — none of it was written to help troubleshoot the mess that I had created.
Here was my specfic error.
Error: Could not request certificate: The certificate retrieved from the master does not match the agent’s private key.
Certificate fingerprint: BE:B6:B6:5E:AC:B8: ..truncated
And here verbatim, is the output that you get in response to the error above.
To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certficate.
On the master:
puppet cert clean localhost.localdomain
On the agent:
rm -f /etc/puppetlabs/puppet/ssl/certs/localhost.localdomain.pem
puppet agent -t
So we try that and it doesn’t work. The next cert I generate identifies my node as localhost again.
So heres how to fix the issue.
# rm -rf /etc/puppetlabs/puppet/ssl
Now before we generate another certificate for our node, lets test what hostname a new cert would have using the command below.
#puppet agent –verbose –configprint certname
If the command above does not spit out the correct hostname, then you my friend, are in luck. Edit the file below
# vi /etc/puppetlabs/puppet/puppet.conf
Now change the entry below by removing the localhost.localdomain, and replacing that mess with the correct hostname
certname = correcthostname.localdomain
Now kickoff a puppet run on the node
#puppet agent -t
Log into the UI, or ssh into the puppet master, and accept the new node request.
Kick off another puppet run after you have accepted the request to seal the deal and update the new node properly.