Knife SSH no encuentra mis nodos

12

knife sshNo está encontrando mis nodos. Sé que debería poder hacerlo porque cuando puedo buscarlos los encuentro

# knife search node name:*
2 items found

Node Name:   web_01
...

Node Name:   admin
...

Sin embargo, cuando ejecuto knife ssh(lo mostraré con el indicador de 'depuración') me sale

# 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í, el host es correcto, solo lo censuré para la publicación).

Intenté modificar el parámetro QUERY y siempre obtengo los mismos resultados. He intentado:

  • nodo:*
  • papel:*
  • * *
  • *: *

¿Algunas ideas?

Max
fuente

Respuestas:

16

Me lo imaginé. mis nodos no tenían un fqdn. Tuve que especificar -a ipaddress. El mensaje de error no fue útil. Lo descubrí depurando el código ssh de cuchillo. También hay un error que no lee el atributo del archivo de configuración de cuchillo. Voy a abrir un ticket sobre el problema y tal vez enviar un parche.

Lo que hice para superar esto fue poner el nombre de host del nodo chef en mi archivo / etc / hosts con un puntero a la dirección IP. Por ejemplo:

10.3.3.100 chef-client.int

Por supuesto, también puede colocarlo en un servidor DNS, junto con el resto de sus nodos. Eso resolvería completamente el problema.

Max
fuente
77
Para aclarar para otros lectores, " -a ipaddress" es literal. Aparentemente le dice knife sshque se conecte por IP, no por FQDN. Este comportamiento es tonto: debería retroceder de esta manera de forma predeterminada.
Steve Bennett
@SteveBennett Estoy de acuerdo en que debería ser un comportamiento predeterminado. Veo cómo mi publicación puede ser confusa. Gracias por aclararlo.
Max
4

Además, si -a ipaddressno funciona, intente-a cloud.public_ipv4

Me mostraron esta solución después de descubrir que knife sshestaba tratando de usar direcciones IP internas para mis nodos y me tomó algunas preguntas en el canal del chef IRC (#chef en irc.freenode.net) antes de que alguien llamado retr0h me mostrara esto .

jLi
fuente
increíble, gracias! @todos si está ejecutando ec2, y sus instancias se han creado con IP pública, pero el nombre de host apunta a local, use lo siguiente:knife ssh 'name:mydc1*' interactive -a node.node_name
Ilja
0

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

Recuerde que knife sshesencialmente hace un knife search node, por lo que su consulta debe ser una que funcione knife search node(es decir, knife search node "node:*"no funciona). knife ssh "role:*"También debería funcionar, pero solo si sus nodos tienen roles asignados. Para el caso, su original knife search node "name:*"también debería funcionar una vez que reutilice la consulta knife ssh. Por lo tanto, knife ssh "name:*" "uptime".

cjc
fuente
1
Gracias por la respuesta, pero apuesto a que "No hay nodos" para ambos id: * y nombre: *
Max
OK, eso es extraño (es decir, funciona para mí). De vez en cuando he tenido que patear chef-solr para que aparezcan nuevos objetos en la búsqueda, pero, si obtiene resultados del "nodo de búsqueda de cuchillo", debería estar obteniendo la misma lista de nodos utilizada por "cuchillo ssh" . No sé dónde mirar a continuación si la lista de resultados es diferente.
cjc
0

¿Alguna vez lo has intentado knife ssh "name:*" "uptime"?

Estoy usando el chef 10.x y funciona para mí.

En mi opinión, cuando se usa knife search [INDEX] [QUERY], el primer parámetro INDEXse usa para especificar el tipo de elemento a consultar. Mientras usa el knife sshcomando, sabe que está intentando buscar nodos, por lo que todo lo que tiene que hacer es especificar la [QUERY]parte, que es name:*en su caso.

ley
fuente
Creo que la respuesta de @cjc significa lo mismo.
ley
0

Resolví esto usando ssh / config y conectando por el fqdn.

h4ck3rm1k3
fuente