Knife SSH non trova i miei nodi


12

knife sshnon sta trovando i miei nodi. So che dovrebbe essere possibile perché quando posso cercarli li trovo

# knife search node name:*
2 items found

Node Name:   web_01
...

Node Name:   admin
...

Tuttavia, quando corro knife ssh(lo mostrerò con il flag 'debug') ottengo

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

(sì, l'host è corretto, l'ho appena censurato per il post).

Ho provato a modificare il parametro QUERY e ottengo sempre gli stessi risultati. Ho provato:

  • nodo:*
  • ruolo:*
  • *
  • *: *

Qualche idea?

Risposte:


16

L'avevo capito. i miei nodi non avevano un fqdn. Ho dovuto specificare -a ipaddress. il messaggio di errore non è stato utile. L'ho capito eseguendo il debug del codice ssh del coltello. c'è anche un bug che non legge l'attributo dal file di configurazione del coltello. Ho intenzione di aprire un biglietto per il problema e forse inviare una patch.

Quello che ho fatto per superare questo è stato inserire il nome host del nodo chef nel mio file / etc / hosts con un puntatore all'indirizzo IP. Per esempio:

10.3.3.100 chef-client.int

Naturalmente, potresti sempre inserirlo anche in un server DNS, insieme al resto dei tuoi nodi. Ciò risolverebbe completamente il problema.


7
Per chiarire gli altri lettori, " -a ipaddress" è letterale. Apparentemente dice knife sshdi connettersi tramite IP non FQDN. Questo comportamento è stupido - dovrebbe ricadere in questo modo per impostazione predefinita.
Steve Bennett,

@SteveBennett Sono d'accordo che dovrebbe essere un comportamento predefinito. Vedo come il mio post può essere fonte di confusione. Grazie per il chiarimento.
Max

4

Inoltre, se -a ipaddressnon funziona, prova-a cloud.public_ipv4

Mi è stata mostrata questa soluzione dopo aver capito che knife sshstavo cercando di utilizzare gli indirizzi IP interni per i miei nodi e ci sono voluti alcuni nel canale IRC dello chef (#chef su irc.freenode.net) prima che qualcuno di nome retr0h me lo mostrasse .


fantastico, grazie! @tutto se stai eseguendo ec2 e le tue istanze sono state create con IP pubblico, ma il nome host è puntato a quello locale, utilizza quanto segue:knife ssh 'name:mydc1*' interactive -a node.node_name
Ilja

0

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

Ricorda che knife sshessenzialmente fa un knife search node, quindi la tua query dovrebbe essere quella che funziona knife search node(cioè, knife search node "node:*"non funziona). knife ssh "role:*"dovrebbe anche funzionare, ma solo se ai tuoi nodi sono assegnati ruoli. Del knife search node "name:*"resto , l'originale dovrebbe funzionare anche dopo aver riutilizzato la query knife ssh. Quindi knife ssh "name:*" "uptime".


1
Grazie per la risposta, ma scommetto "Nessun nodo" per entrambi id: * e nome: *
Max

OK, è bizzarro (vale a dire, funziona per me). Occasionalmente ho dovuto dare dei calci a chef-solr per ottenere nuovi oggetti da mostrare nella ricerca, ma, se stai ottenendo risultati da "node di ricerca del coltello", dovresti ottenere lo stesso elenco di nodi utilizzato da "knife ssh" . Non so dove cercare se l'elenco dei risultati è diverso.
cjc

0

Ci hai mai provato knife ssh "name:*" "uptime"?

Sto usando lo chef 10.x e funziona per me.

A mio avviso, quando si utilizza knife search [INDEX] [QUERY], il primo parametro INDEXviene utilizzato per specificare il tipo di elemento da interrogare. Mentre usa il knife sshcomando, sa che stai cercando di cercare nodi, quindi tutto ciò che devi fare è specificare la [QUERY]parte, che è name:*nel tuo caso.


Penso che la risposta di @cjc abbia lo stesso significato.
ley

0

Ho risolto questo problema usando ssh / config e connettendomi tramite fqdn.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.