Puppet: Le nom du nœud semble dépendre du DNS inverse?

20

Il me semble que je rencontre un peu de difficulté à comprendre comment faire fonctionner cela. J'ai un nouveau serveur que je construis assis derrière le bureau NAT au travail, son DNS inverse est mappé office.mydomain.com, mais je veux que la machine soit ns2.mydomain.compour le plaisir de la marionnette.

Extrait nodes.pp:

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

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

Et mon 'puppet.conf' sur le client:

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

Mon syslog sur les rapports du serveur:

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

Comment puis-je lui faire saisir la configuration ns2.mydomain.comsans faire quelque chose comme ça:

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

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

MISE À JOUR : Ce problème semble également causer d'autres problèmes. Par exemple, si je info("$fqdn")pendant que la machine est assise derrière office.mydomain.comle fait fqdn est vide, ainsi que le $operatingsystem. C'est presque comme si les faits n'étaient pas découverts correctement. Y a-t-il peut-être un problème de NAT? Y a-t-il des suggestions pour rechercher cette cause de ce problème?

gnarf
la source

Réponses:

26

Aaah, détection de nom d'hôte Puppet. Quel cauchemard...

Par défaut, quel nom sera utilisé pour trouver la nodedéfinition à utiliser en fonction du contenu du fait fqdn. Ce à quoi cela correspond réellement dépend de quelques choses différentes, et oui, le DNS inversé en fait partie - et il est préféré au nom d'hôte de la machine!

Cependant, ce nom ne s'applique (généralement) qu'au moment de la génération du certificat. Vous utilisez en fait la node_namevariable de manière incorrecte - elle doit être définie sur «cert» ou «facter». Le fqdnparamètre est également obsolète.

Ce que vous voulez réellement faire est de définir le certnameparamètre sur le client sur le nom de nœud que vous souhaitez utiliser, puis définissez node_namesur cert(ou laissez-le simplement, car certc'est la valeur par défaut). Cela prendra le nom de nœud du CN du certificat que le client présente, et le certnameparamètre s'assurera qu'il est défini sur quelque chose de raisonnable plutôt que sur tout facteur qui décide de le faire seul. Malheureusement, puisque vous avez déjà créé de «mauvais» certificats, vous devrez régénérer ces certificats ( rm -rf /var/lib/puppet/sslsur le client et réexécuter Puppet) après avoir configuré la configuration, afin que les bons certificats soient créés et utilisés.

Si tout cela vous semble un peu compliqué, vous avez raison - ça l'est. Bienvenue chez Puppet.

womble
la source
Hé là - donc en regardant puppetmaster et puppet - les deux ont node_name=cert, mis à jour cert_name=ns1.mydomain.comet facter fqdnreviennent ns1.mydomain.comsur le client mais je me retrouve toujours avec les mêmes messages d'erreur à propos office.mydomain.com.
gnarf
1
re: certname, vous avez raison, je me suis souvenu mal et n'ai pas vérifié les documents comme j'aurais dû. En ce qui concerne le manque de fixation, vous devez régénérer le certificat client; J'ai mis à jour ma réponse pour couvrir cela.
womble
1
En fait - mon fichier cert est ns1.mydomain.com.pemet son CN est également ns1 ... C'est "correct" non? office.mydomain.comest ce qu'il utilise comme nom de nœud, et apparemment chaque fois qu'il essaie de saisir des faits lors de l'analyse, au lieu d'utiliser le nom de certificat comme nom de nœud. Peut-être que je manque autre chose? Aucun de mes faits ne semble être transmis à l'analyseur, ni info($fqdn)montre simplement une ligne vide dans la portée dans laquelle je l'ai mis.
gnarf
Je ne sais pas ce que tu as fait, mais tu as réussi à oser quelque chose de vraiment bon. Je pense que vous êtes seul.
womble
Une autre mise à jour: j'ai réussi à obtenir toutes les choses "pré-installées" derrière le réseau local du bureau et à mettre le nouveau serveur de noms en ligne - dès qu'il a commencé à utiliser le DNS inverse correct, tous les faits se sont correctement
affichés
5

Je semble avoir de la chance (bien qu'il y ait encore quelques cas de test que je veux voir) dans l'édition /etc/hostspour répertorier le fqdn souhaité sous 127.0.0.1 comme première option. Il semble le détecter correctement / passer des faits alors. Bien qu'il semble que je doive toujours créer un nœud appelé office.mydomain.comqui hérite du nœud que je veux.

gnarf
la source
Cela a fonctionné pour moi. (a dû supprimer le répertoire ssl comme mentionné ci-dessus)
bwizzy
Cela a bien fonctionné pour moi aussi, et est également pris en charge par la documentation Puppet: puppetlabs.com/blog/resolving-dns-issues
DuffJ