Isso pode não ser uma solução ideal, mas é o que eu estava fazendo antes de passar para o palheiro:
Ao lançar uma nova caixa EC2 (estou usando o tecido para conseguir isso, tudo isso é feito no mestre de marionetes):
1) No PuppetMaster (certificado e nome do host da máquina já era conhecido; convenção de nomenclatura):
local('sudo puppetca -c {}' .format(cert_name));
local('sudo puppetca -g {}' .format(cert_name));
Isso cuidaria do antigo problema de certificado que você mencionou.
Após essa cópia dos arquivos a seguir para a nova caixa de rolagem usando scp:
1) /var/lib/puppet/ssl/ca/signed/signed-cert_name.pem
2) /var/lib/puppet/ssl/private_keys/private-cert_name.pem
3) /var/lib/puppet/ssl/certs/ca.pem
Código de tecido para o acima mencionado:
local("sudo cp /var/lib/puppet/ssl/ca/signed/{}.pem /tmp/signed-{}.pem" .format(cert_name,cert_name))
local("sudo chown ubuntu:ubuntu /tmp/signed-{}.pem" .format(cert_name))
local("sudo cp /var/lib/puppet/ssl/private_keys/{}.pem /tmp/private-{}.pem" .format(cert_name,cert_name))
local("sudo chown ubuntu:ubuntu /tmp/private-{}.pem" .format(cert_name))
local("sudo cp /var/lib/puppet/ssl/certs/ca.pem /tmp/ca.pem")
local("sudo chown ubuntu:ubuntu /tmp/ca.pem")
put("/tmp/signed-{}.pem" .format(cert_name), "/home/ubuntu/signed-{}.pem" .format(cert_name))
put("/tmp/private-{}.pem" .format(cert_name) , "/home/ubuntu/private-{}.pem" .format(cert_name))
put("/tmp/ca.pem" , "/home/ubuntu/ca.pem")
Agora, na nova caixa, execute o seguinte (eu tive um script bash simples fazendo isso e fqdn foi um param passado):
sudo chown root:root /home/ubuntu/ca.pem /home/ubuntu/signed-$fqdn.pem /home/ubuntu/private-$fqdn.pem
sudo chmod 600 /home/ubuntu/private-$fqdn.pem
sudo mkdir -p /var/lib/puppet/ssl/certs/ /var/lib/puppet/ssl/ca/signed/ /var/lib/puppet/ssl/private_keys/
sudo mv /home/ubuntu/ca.pem /var/lib/puppet/ssl/certs/ca.pem
sudo mv /home/ubuntu/signed-$fqdn.pem /var/lib/puppet/ssl/ca/signed/$fqdn.pem
sudo mv /home/ubuntu/private-$fqdn.pem /var/lib/puppet/ssl/private_keys/$fqdn.pem
Espero que isso seja um pouco útil.
note: local e put são operações de Fabric