Couteau SSH ne trouve pas mes nœuds

12

knife sshne trouve pas mes nœuds. Je sais que ça devrait pouvoir parce que quand je peux les chercher je les trouve

# knife search node name:*
2 items found

Node Name:   web_01
...

Node Name:   admin
...

Cependant, lorsque je lance knife ssh(je vais le montrer avec le drapeau de «débogage»), je reçois

# knife ssh "node:*" "uptime" -VV
DEBUG: Using configuration from /root/.chef/knife.rb
DEBUG: Signing the request as dev
DEBUG: Sending HTTP Request via GET to ec2-xx-xx-xx-xx.compute-1.amazonaws.com:4000/search/node
FATAL: No nodes returned from search!

(oui l'hôte est correct, je l'ai juste censuré pour le post).

J'ai essayé de modifier le paramètre QUERY et j'obtiens toujours les mêmes résultats. J'ai essayé:

  • nœud:*
  • rôle:*
  • *
  • *: *

Des idées?

Max
la source

Réponses:

16

Je l'ai compris. mes nœuds n'avaient pas de fqdn. Je devais préciser -a ipaddress. le message d'erreur n'était pas utile. Je l'ai compris en déboguant le code ssh du couteau. il y a aussi un bogue qui ne lit pas l'attribut du fichier de configuration du couteau. Je vais ouvrir un ticket sur le problème et peut-être soumettre un patch.

Ce que j'ai fait pour surmonter cela a été de mettre le nom d'hôte du nœud chef dans mon fichier / etc / hosts avec un pointeur sur l'adresse IP. Par exemple:

10.3.3.100 chef-client.int

Bien sûr, vous pouvez toujours le mettre dans un serveur DNS, avec le reste de vos nœuds. Cela résoudrait complètement le problème.

Max
la source
7
Pour clarifier pour les autres lecteurs, " -a ipaddress" est littéral. Il indique apparemment knife sshde se connecter par IP et non par FQDN. Ce comportement est stupide - il devrait se replier de cette façon par défaut.
Steve Bennett
@SteveBennett Je suis d'accord que ce devrait être un comportement par défaut. Je vois à quel point mon message peut être déroutant. Merci de clarifier.
Max
4

De plus, si -a ipaddresscela ne fonctionne pas, essayez-a cloud.public_ipv4

On m'a montré cette solution après avoir compris que knife sshj'essayais d'utiliser des adresses IP internes pour mes nœuds et il a fallu demander au canal IRC du chef (#chef sur irc.freenode.net) avant que quelqu'un nommé retr0h ne me le montre .

jLi
la source
incroyable, merci! @all si vous exécutez ec2 et que vos instances ont été créées avec une adresse IP publique, mais que le nom d'hôte est pointé vers une adresse locale, utilisez ce qui suit:knife ssh 'name:mydc1*' interactive -a node.node_name
Ilja
0

Essayez knife ssh "id:*" "uptime".

N'oubliez pas que cela fait knife sshessentiellement un knife search node, donc votre requête doit être celle qui fonctionne knife search node(c'est-à-dire, knife search node "node:*"ne fonctionne pas). knife ssh "role:*"devrait également fonctionner, mais uniquement si vos nœuds ont des rôles qui leur sont attribués. Pour cette question, votre original knife search node "name:*"devrait également fonctionner une fois que vous réutilisez la requête knife ssh. Ainsi, knife ssh "name:*" "uptime".

cjc
la source
1
Merci pour la réponse, mais je parie "Pas de nœuds" pour l'identifiant: * et le nom: *
Max
OK, c'est bizarre (c'est à dire que ça marche pour moi). J'ai parfois dû donner un coup de pied à chef-solr pour que de nouveaux objets apparaissent dans la recherche, mais, si vous obtenez des résultats à partir du "nœud de recherche de couteau", vous devriez obtenir la même liste de nœuds utilisée par "couteau ssh" . Je ne sais pas où chercher ensuite si la liste des résultats est différente.
cjc
0

Avez-vous déjà essayé knife ssh "name:*" "uptime"?

J'utilise chef 10.x et cela fonctionne pour moi.

À mon avis, lors de l'utilisation knife search [INDEX] [QUERY], le premier paramètre INDEXest utilisé pour spécifier le type de l'élément à interroger. Tout en utilisant la knife sshcommande, il sait que vous essayez de rechercher des nœuds, donc tout ce que vous avez à faire est de spécifier la [QUERY]pièce, ce qui est name:*dans votre cas.

ley
la source
Je pense que la réponse de @cjc signifie la même chose.
ley
0

J'ai résolu cela en utilisant ssh / config et en me connectant par le fqdn.

h4ck3rm1k3
la source