Wie kann ich unsere vorhandenen Puppet-Clients migrieren, um auf einen neuen Puppetmaster-Server zu verweisen? Ich möchte lieber nicht manuell zu jeder Client-Box gehen und ein neues Zertifikat generieren.
Beim Versuch des Offensichtlichen - rsync alle Dateien von / etc / puppet und / var / lib / puppet auf den neuen Server - haben wir den Zertifikatfehler erhalten
/etc/init.d/puppetmaster start
* Starting puppet master
Could not run: Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key
Ich konnte das umgehen, indem ich die /var/lib/ssl/certs
und /var/lib/ssl/private_key
-Dateien von old_hostname
nach kopierte. Dies new_hostname
wird im Grunde bei der Migration von Puppet-Clients auf einen neuen Puppet-Master empfohlen
(alter Puppet-Master-Server weg, nur mit Backup).
Leider wissen meine Kunden immer noch, dass etwas nicht stimmt, und geben mir den folgenden Fehler:
sudo puppetd --test --server newservername.example.net --noop
info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': hostname was not match with the server certificate
err: /File[/var/lib/puppet/lib]: Could not evaluate: hostname was not match with the server certificate Could not retrieve file metadata for puppet://newservername.example.net/plugins: hostname was not match with the server certificate
err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
Ich vermute also, dass die Client-Zertifikate immer noch den Hostnamen kennen, mit dem sie verknüpft sind, und sich nicht über einen Wechsel freuen.
Gibt es eine Möglichkeit, mit Marionette (die auf den alten Puppenmeister verweist) neue Zertifikate bereitzustellen oder den Signaturprozess irgendwie zu automatisieren?
ZUSAMMENFASSUNG: Es wurden zwei Lösungen vorgestellt: 1) Aktivieren Sie autosign
den Master, wodurch die Zertifizierung vollständig übersprungen wird, oder 2) Setzen Sie den alten CNAME so, dass er auf den neuen Master verweist, da Zertifikate an den Hostnamen des Masters gebunden sind. Ich habe mich für Nummer 2 entschieden, weil Autosign das Gefühl hatte, die Sicherheit nur auszuschalten (wenn auch nur für eine begrenzte Zeit).
quelle
puppetca --sign --all
wird den Trick für die Client-Zertifikate tun; Der Server ist derjenige, der Ihnen Probleme mit den Nichtübereinstimmungsfehlern gibt.Sie können einfach den
$ssldir
des alten Puppenspielers verwenden und diesen im neuen Puppenspieler verwenden.Ansonsten sollte es möglich sein, ein Skript bereitzustellen, das:
Hässlich, aber solange sich das do-Migrationsmodul nur auf dem alten Server befindet und sichergestellt ist, dass es kein Migrationsmodul gibt, befindet es sich nur auf dem neuen Server. Es ist eine One-Shot-Sache und sollte einfach die Magie machen ...
quelle
autosign
Trick ist gut, scheint aber riskant. Behebt diese Lösung ohne sie tatsächlich das Problem der Nichtübereinstimmung von Clientzertifikaten?