problème de nom d'hôte de marionnette

10

J'ai cherché en ligne et je vois que quelques autres personnes ont eu ce problème sur d'autres listes / forums. Lorsque j'exécute sudo puppetd --waitforcert 60 --test pour la 2e fois après avoir signé le certificat sur le serveur maître, j'obtiens cette erreur -

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

Je ne suis pas sûr de comprendre quel est le problème ou comment le résoudre. Voilà pourquoi je demande.

J'installe la marionnette sur deux serveurs sur mon LAN. Le puppetmaster est nommé 'puppet' et l'autre serveur est nommé 'puppetclient'. Je mets puppet dans / etc / hosts sur puppetclient.

l'exécution de hostname -f affichera puppet et pupperclient sur les serveurs respectifs. Je ne sais pas quoi d'autre essayer. Quelqu'un at-il une idée?

quanta
la source

Réponses:

9

On dirait que le certificat de marionnettiste a été créé lorsque l'hôte a été nommé autre chose que "marionnette". Recréez le certificat et vous devriez être bon.

Le nom stocké dans le certificat doit correspondre à celui auquel vous avez configuré votre client pour se connecter (exactement). Par exemple, si vous configurez votre client pour qu'il se connecte à "puppet.domain.com", vous obtiendrez une erreur si le certificat est nommé "puppet" et vice versa.

diq
la source
J'ai eu ça il y a quelques heures. Besoin du nom de domaine complet.
Pete TerMaat,
l'ajout de .local sur le client a fait l'affaire. même si hostname -f ne l'a pas montré. Merci!
1
Peut-être y a-t-il une meilleure façon, mais pour moi, j'ai régénéré les certificats CA en rm -rf /var/lib/puppet/sslredémarrant ensuite le marionnettiste
Peter Sankauskas
6

Si vous souhaitez utiliser DNS CNAME pour votre marionnettiste, vous pouvez démarrer le marionnettiste en utilisant:

puppetmaster --certname cname.domain.org

qui utilisera puppetmaster cname.domain.orgau lieu du nom de domaine complet par défaut.

Martin
la source
2

L' --certname cname.domain.orgoption de drapeau semblait avoir fait l'affaire pour moi (sur Amazon EC2)

quanta
la source
1

vous pouvez demander à facter (facter fqdn) quel est le nom d'hôte et voir si cela correspond à ce que vous attendez. Jetez également un coup d'œil (par défaut) / var / lib / puppet / ssl / et voyez à quoi ressemblent les certificats, s'ils n'ont pas les noms d'hôte corrects qui peuvent être votre problème. Étant donné que la marionnette fait toute sa communication via HTTPS, elle est assez sensible à la résolution et au nom d'hôte.

Bâton
la source
1

Avant d'installer Puppet sur vos clients et serveurs désignés, vérifiez le fichier /etc/resolv.conf et vérifiez que la première entrée de domaine sur la ligne de "recherche" est le domaine sous lequel Puppet doit s'exécuter. Par exemple:

recherchez my.puppetdomain.com my.public.domain.com

serveur de noms 192.168.1.1 serveur de noms xxx.xxx.1.1

Pendant la phase d'installation de Puppet, le serveur Puppet générera ses certificats en fonction de la première entrée de recherche dans /etc/resolv.conf. Je l'ai découvert à la dure. Si vous voyez des erreurs liées au certificat sur un nœud de marionnette, procédez comme suit:

1) Modifiez le fichier /etc/resolv.conf et vérifiez que le premier domaine répertorié dans la ligne "recherche" reflète le domaine dans lequel Puppet doit s'exécuter.

2) Désinstallez la marionnette (laissez le répertoire / etc / puppet intact).

3) rm -rf / var / lib / puppet

4) Réinstallez Puppet (cela générera un nouveau répertoire / var / lib / puppet).

5) Si vous effectuez cette opération sur le serveur Puppet, exécutez / usr / sbin / puppetmasterd --mkusers (ou exécutez / usr / local / sbin / puppetmasterd --mkusers ). Cela générera tous les fichiers requis dans / var / lib / puppet, y compris les nouveaux certificats internes utilisant le nom de domaine approprié.

6) Si vous effectuez cette opération sur le client Puppet, démarrez Puppet en mode détaillé, avec l'indicateur --waitforcert activé: puppetd -server .puppetdomain.com --waitforcert 60 --test Cette étape enverra une demande de certificat au serveur Puppet.

7) Sur le serveur Puppet, listez les certificats en attente:

puppetca --list

Vous devriez voir le nom d'hôte du client Puppet qui fait la demande:

puppetclient1.puppetdomain.com

8) Depuis le serveur Puppet, signez le certificat du client Puppet que vous venez de lister:

puppetca --sign puppetclient1.puppetdomain.com

Alors vous avez terminé.

HTH ....


la source
0

Puppet et puppetclient se résolvent-ils tous les deux dans DNS? Sinon, vous pouvez modifier le fichier / etc / hosts pour mapper les adresses IP et les noms d'hôte. IIRC, vous ne devez effectuer cette opération que sur le client.

slillibri
la source