Knife SSH findet meine Knoten nicht

12

knife sshfinde meine Knoten nicht. Ich weiß, dass es möglich sein sollte, denn wenn ich nach ihnen suchen kann, finde ich sie

# knife search node name:*
2 items found

Node Name:   web_01
...

Node Name:   admin
...

Wenn ich jedoch starte knife ssh(ich zeige es mit dem "Debug" -Flag), bekomme ich

# 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!

(Ja, der Gastgeber ist korrekt, ich habe es nur für den Beitrag zensiert).

Ich habe versucht, den Parameter QUERY zu ändern, und erhalte immer die gleichen Ergebnisse. Ich habe es versucht:

  • Knoten:*
  • Rolle:*
  • *
  • *: *

Irgendwelche Ideen?

Max
quelle

Antworten:

16

Ich habe es herausgefunden. Meine Knoten hatten keine FQDN. Ich musste angeben -a ipaddress. Die Fehlermeldung war nicht hilfreich. Ich fand es heraus, indem ich den ssh-Code des Messers debuggte. Es gibt auch einen Fehler, der besagt, dass das Attribut nicht aus der Messerkonfigurationsdatei gelesen wird. Ich werde ein Ticket für das Problem eröffnen und vielleicht einen Patch einreichen.

Was ich getan habe, um darüber hinwegzukommen, war, den Hostnamen des Chef-Knotens mit einem Zeiger auf die IP-Adresse in meine Datei / etc / hosts zu schreiben. Beispielsweise:

10.3.3.100 chef-client.int

Sie können es natürlich auch immer in einen DNS-Server einfügen, zusammen mit dem Rest Ihrer Knoten. Das würde das Problem komplett lösen.

Max
quelle
7
Zur Verdeutlichung für andere Leser ist " -a ipaddress" wörtlich. Es wird anscheinend gesagt knife ssh, dass eine Verbindung über IP und nicht über FQDN hergestellt werden soll. Dieses Verhalten ist dumm - es sollte standardmäßig auf diese Weise zurückgreifen.
Steve Bennett
@SteveBennett Ich bin damit einverstanden, dass es Standardverhalten sein sollte. Ich sehe, wie verwirrend mein Beitrag sein kann. Danke fürs klarstellen.
Max
4

-a ipaddressVersuchen Sie es auch, wenn dies nicht funktioniert-a cloud.public_ipv4

Mir wurde diese Lösung gezeigt, nachdem ich herausgefunden hatte, dass knife sshversucht wurde, interne IP-Adressen für meine Knoten zu verwenden, und es dauerte einige Fragen im Chef-IRC-Kanal (#chef auf irc.freenode.net), bevor mir jemand namens retr0h dies zeigte .

jLi
quelle
super danke @all Wenn Sie ec2 ausführen und Ihre Instanzen mit öffentlicher IP erstellt wurden, der Hostname jedoch auf die lokale IP verweist, verwenden Sie Folgendes:knife ssh 'name:mydc1*' interactive -a node.node_name
Ilja
0

Versuchen Sie es knife ssh "id:*" "uptime".

Denken Sie daran, dass dies im knife sshWesentlichen eine Funktion hat knife search node, sodass Ihre Abfrage eine Funktion sein sollte, die funktioniert knife search node(dh knife search node "node:*"nicht funktioniert). knife ssh "role:*"sollte auch funktionieren, aber nur, wenn Ihren Knoten Rollen zugewiesen sind. In diesem Fall sollte Ihr Original knife search node "name:*"auch funktionieren, wenn Sie die Abfrage für erneut verwenden knife ssh. Also knife ssh "name:*" "uptime".

cjc
quelle
1
Vielen Dank für die Antwort, aber ich wette, "Keine Knoten" für beide ID: * und Name: *
Max
OK, das ist bizarr (dh es funktioniert bei mir). Ich musste gelegentlich chef-solr kicken, um neue Objekte in der Suche anzuzeigen, aber wenn Sie Ergebnisse von "Knotensuche" erhalten, sollten Sie die gleiche Knotenliste erhalten, die von "Knotensuche" verwendet wird. . Ich weiß nicht, wo ich als nächstes suchen soll, wenn die Ergebnisliste unterschiedlich ist.
cjc
0

Hast du es jemals versucht knife ssh "name:*" "uptime"?

Ich benutze Koch 10.x und es funktioniert für mich.

Meiner Meinung nach wird bei der Verwendung knife search [INDEX] [QUERY]der erste Parameter INDEXverwendet, um den Typ des abzufragenden Elements anzugeben. Bei der Verwendung von knife sshBefehl, weiß es , dass Sie Knoten suchen sind tryting, so alles , was Sie tun müssen, ist die angeben [QUERY]Teil, das ist name:*in Ihrem Fall.

ley
quelle
Ich denke, die Antwort von @cjc bedeutet dasselbe.
Ley
0

Ich löste dieses Problem, indem ich ssh / config verwendete und über den fqdn eine Verbindung herstellte.

h4ck3rm1k3
quelle