Here are the steps i use to change the host name of a puppet client:
On the client side stop Puppet, remove old certificates and change host name:
service puppet stop find /var/lib/puppet/ssl -type f -print | xargs rm -v
Change the host name in /etc/sysconfig/network and /etc/hosts, then reboot the client.
Remove the old certificate on the server:
puppet cert clean hostname.domain.tld
If you’re using Foreman, change the host name there too.
Finally, initialize a manual update on the client:
puppet agent --waitforcert 60 --test
and sign the new certificate as usual:
puppet cert list puppet cert sign hostname.domain.tld