Marionette Hostname Problem

10

Ich habe online gesucht und sehe, dass einige andere Personen dieses Problem auf anderen Listen / Boards hatten. Wenn ich sudo puppetd --waitforcert 60 --test zum zweiten Mal nach dem Signieren des Zertifikats auf dem Master-Server ausführe, wird folgende Fehlermeldung angezeigt:

notice: Got signed certificate
warning: Certificate validation failed; considering using the certname configuration option
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Certificates were not trusted: hostname was not match with the server certificate

Ich bin nicht sicher, ob ich das Problem verstehe oder wie ich es beheben kann. Deshalb frage ich.

Ich richte Puppet auf zwei Servern in meinem LAN ein. Der Puppenmeister heißt "Puppe" und der andere Server heißt "Puppenclient". Ich habe Puppet in / etc / hosts auf Puppetclient gesetzt.

Wenn Sie den Hostnamen -f ausführen, werden Puppet und Pupperclient auf den jeweiligen Servern angezeigt. Ich bin mir nicht sicher, was ich sonst noch versuchen soll. Hat jemand einen Einblick?

Quanten
quelle

Antworten:

9

Klingt so, als ob das Puppetmaster-Zertifikat erstellt wurde, als der Host einen anderen Namen als "Puppet" erhielt. Erstellen Sie das Zertifikat neu und Sie sollten gut sein.

Der im Zertifikat gespeicherte Name muss mit dem übereinstimmen, mit dem Sie Ihren Client konfiguriert haben (genau). Wenn Sie beispielsweise Ihren Client so konfigurieren, dass eine Verbindung zu "puppet.domain.com" hergestellt wird, wird eine Fehlermeldung angezeigt, wenn das Zertifikat den Namen "Puppet" trägt und umgekehrt.

diq
quelle
Das ist mir vor ein paar Stunden passiert. Benötigte den vollqualifizierten Domainnamen.
Pete TerMaat
Das Anhängen von .local an den Client hat den Trick gemacht. obwohl Hostname -f es nicht zeigte. Vielen Dank!
1
Vielleicht gibt es einen besseren Weg, aber für mich habe ich die CA-Zertifikate rm -rf /var/lib/puppet/sslneu generiert, indem ich den Puppenspieler
Peter Sankauskas
6

Wenn Sie DNS CNAME für Ihren Puppetmaster verwenden möchten, können Sie den Puppetmaster folgendermaßen starten:

puppetmaster --certname cname.domain.org

Dadurch wird Puppetmaster cname.domain.organstelle des standardmäßigen vollqualifizierten Domainnamens verwendet.

Martin
quelle
2

Die --certname cname.domain.orgFlag-Option schien den Trick für mich getan zu haben (auf Amazon EC2)

Quanten
quelle
1

Sie können facter (facter fqdn) nach dem Hostnamen fragen und prüfen, ob dies mit Ihren Erwartungen übereinstimmt. Schauen Sie sich auch (standardmäßig) / var / lib / puppet / ssl / an und sehen Sie, wie die Zertifikate aussehen, wenn sie nicht die richtigen Hostnamen haben, die Ihr Problem sein könnten. Da Puppet die gesamte Kommunikation über HTTPS übernimmt, reagiert es ziemlich empfindlich auf Auflösung und Hostnamen.

Stock
quelle
1

Überprüfen Sie vor der Installation von Puppet auf den angegebenen Clients und Servern die Datei /etc/resolv.conf und stellen Sie sicher, dass der erste Domäneneintrag in der Suchzeile die Domäne ist, unter der Puppet ausgeführt werden soll. Beispielsweise:

suche my.puppetdomain.com my.public.domain.com

Nameserver 192.168.1.1 Nameserver xxx.xxx.1.1

Während der Puppet-Installationsphase generiert der Puppet-Server seine Zertifikate basierend auf dem ersten Sucheintrag in der Datei /etc/resolv.conf. Ich habe das auf die harte Tour herausgefunden. Wenn auf einem Puppet-Knoten Zertifikatsfehler auftreten, führen Sie die folgenden Schritte aus:

1) Bearbeiten Sie die Datei /etc/resolv.conf und stellen Sie sicher, dass die erste Domain in der Zeile "Suchen" die Domain widerspiegelt, in der Puppet ausgeführt werden soll.

2) Deinstallieren Sie Puppet (lassen Sie das Verzeichnis / etc / Puppet intakt).

3) rm -rf / var / lib / puppet

4) Installieren Sie Puppet erneut (dies generiert ein neues Verzeichnis / var / lib / puppet).

5) Wenn Sie dies auf dem Puppet-Server ausführen, führen Sie / usr / sbin / puppetmasterd --mkusers aus (alternativ führen Sie / usr / local / sbin / puppetmasterd --mkusers aus ). Dadurch werden alle erforderlichen Dateien in / var / lib / puppet generiert, einschließlich der neuen internen Zertifikate unter Verwendung des richtigen Domänennamens.

6) Wenn Sie dies auf dem Puppet-Client ausführen, starten Sie Puppet im ausführlichen Modus mit aktiviertem Flag --waitforcert : puppetd -server .puppetdomain.com --waitforcert 60 --test Dieser Schritt sendet eine Zertifikatanforderung an den Puppet-Server.

7) Listen Sie auf dem Puppet-Server die wartenden Zertifikate auf:

Puppetca - Liste

Sie sollten den Hostnamen des Puppet-Clients sehen, der die Anforderung stellt:

pupetclient1.puppetdomain.com

8) Signieren Sie auf dem Puppet-Server das Zertifikat des gerade aufgelisteten Puppet-Clients:

Puppetca --Sign Puppetclient1.puppetdomain.com

Dann bist du fertig.

HTH ....


quelle
0

Lösen sowohl Marionette als auch Puppenclient in DNS auf? Wenn nicht, können Sie die Datei / etc / hosts bearbeiten, um die IPs und Hostnamen zuzuordnen. IIRC, Sie sollten dies nur auf dem Client tun müssen.

Slillibri
quelle