Marionette: Der Knotenname scheint von den umgekehrten DNS abhängig zu sein?

20

Ich habe ein kleines Problem damit, zu verstehen, wie das funktioniert. Ich habe einen neuen Server, den ich aufbaue, der hinter dem Büro-NAT bei der Arbeit sitzt, dessen DNS-Zuordnung umgekehrt ist office.mydomain.com, aber ich möchte, dass die Maschine ns2.mydomain.comder Marionette zuliebe ist.

node.pp Snippet:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits basenode {
  info('office.mydomain.com')
}

Und meine 'puppet.conf' auf dem Client:

[main]
#was node_name=ns2.mydomain.com
#was fqdn=ns2.mydomain.com
certname=ns2.mydomain.com
node_name=cert

Mein Syslog auf dem Server meldet:

Sep 16 22:59:12 support puppetmasterd[2800]: Host is missing hostname and/or domain: office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: (Scope(Node[office.mydomain.com])) office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: Compiled catalog for office.mydomain.com in 0.03 seconds
Sep 16 22:59:12 support puppetmasterd[2800]: Caching catalog for ns2.mydomain.com

Wie kann ich dafür sorgen, dass die Konfiguration abgerufen wird, ns2.mydomain.comohne etwas wie das Folgende zu tun:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits 'ns2.mydomain.com' {
  info('office.mydomain.com')
}

UPDATE : Dieses Problem scheint auch andere Probleme zu verursachen. Zum Beispiel, wenn ich, info("$fqdn")während die Maschine dahinter sitzt, office.mydomain.comdie fqdn Tatsache leer ist, sowie die $operatingsystem. Es ist fast so, als würden die Fakten nicht richtig entdeckt. Gibt es vielleicht ein NAT-Problem? Gibt es Vorschläge zum Auffinden dieser Ursache für dieses Problem?

Zwerg
quelle

Antworten:

26

Aaah, Puppet Hostnamenerkennung. Was ein Alptraum...

nodeWelcher Name verwendet wird, um die zu verwendende Definition zu ermitteln, basiert standardmäßig auf dem Inhalt des fqdn-Fakts. Was das tatsächlich zuordnet, hängt von ein paar verschiedenen Dingen ab, und ja, Reverse DNS ist eine davon - und es wird dem Hostnamen des Computers vorgezogen!

Dieser Name gilt jedoch (normalerweise) nur zur Zeit der Zertifikaterstellung. Sie missbrauchen die node_nameVariable tatsächlich - sie sollte auf "cert" oder "facter" gesetzt sein. Der fqdnParameter ist ebenfalls veraltet.

Was Sie wirklich wollen , das zu tun , wird certnameParameter , den Sie auf dem Client an den Knotennamen verwenden möchten, und legen Sie node_nameauf cert(oder einfach weglassen, da certder Standard ist). Dabei wird der Knotenname aus dem CN des vom Client certnamevorgelegten Zertifikats übernommen, und der Parameter stellt sicher, dass er auf einen vernünftigen Wert festgelegt ist, und nicht auf einen Wert, den Facter für sich allein festlegt. Da Sie bereits "falsche" Zertifikate erstellt haben, müssen Sie diese Zertifikate ( rm -rf /var/lib/puppet/sslauf dem Client und Puppet erneut ausführen) nach dem Einrichten der Konfiguration neu generieren, damit die richtigen Zertifikate erstellt und verwendet werden.

Wenn das alles etwas kompliziert klingt, haben Sie Recht - es ist. Willkommen bei Puppet.

womble
quelle
Hey da - also guck dir Puppenspieler und Puppenspieler an - haben beide node_name=certaktualisiert cert_name=ns1.mydomain.comund facter fqdnkehren ns1.mydomain.comauf den Client zurück, aber ich bekomme immer noch die gleichen Fehlermeldungen über office.mydomain.com.
Gnarf
1
re: certname, Sie haben Recht, ich habe mich falsch erinnert und die Dokumente nicht wie gewünscht überprüft. In Bezug auf die fehlende Fixierung müssen Sie das Client-Zertifikat neu generieren. Ich habe meine Antwort aktualisiert, um das abzudecken.
womble
1
Eigentlich - meine CERT-Datei ist ns1.mydomain.com.pemund ihre CN ist auch ns1 ... Das ist "richtig", oder? office.mydomain.comwird als Knotenname verwendet und anscheinend immer dann, wenn versucht wird, beim Parsen Fakten zu erfassen, anstatt den Zertifikatsnamen als Knotennamen zu verwenden. Vielleicht fehlt mir noch etwas? Keiner meiner Fakten scheint an den Parser durchgereicht zu werden, auch info($fqdn)zeigt er nur eine leere Zeile in dem Bereich, in den ich sie
eingefügt habe
Ich weiß nicht, was du getan hast, aber du hast es geschafft, etwas wirklich Gutes zu tun. Ich denke, du bist auf dich allein gestellt.
womble
Noch ein Update: Ich habe es geschafft, all das Zeug "vorab" hinter dem Bürolan zu haben und den neuen Nameserver in Betrieb zu nehmen - sobald er mit dem korrekten Reverse-DNS begann, zeigten sich alle Fakten richtig ...
gnarf
5

Ich habe anscheinend viel Glück (obwohl ich noch ein paar Testfälle sehen möchte) bei der Bearbeitung, /etc/hostsum die gewünschte FQDN unter 127.0.0.1 als erste Option aufzulisten. Es scheint dann, als würde es die Tatsachen richtig erkennen / weitergeben. Obwohl es scheint, dass ich noch einen Knoten namens erstellen muss office.mydomain.com, der den gewünschten Knoten erbt.

Zwerg
quelle
Das hat bei mir funktioniert. (musste das SSL-Verzeichnis wie oben erwähnt entfernen)
bwizzy
Dies hat auch für mich gut funktioniert und wird auch von der Puppet-Dokumentation unterstützt: puppetlabs.com/blog/resolving-dns-issues
DuffJ