Назад | Перейти на главную страницу

Knife SSH не находит мои узлы

knife ssh не находит мои узлы. Я знаю, что это должно быть возможно, потому что, когда я могу их искать, я нахожу их

# knife search node name:*
2 items found

Node Name:   web_01
...

Node Name:   admin
...

Однако когда я бегу knife ssh (Я покажу это с флагом отладки) Я получаю

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

(да, хозяин правильный, я его только что подверг цензуре).

Я пробовал изменять параметр QUERY и всегда получаю одни и те же результаты. Я пробовал:

Любые идеи?

Я понял. у моих узлов не было fqdn. Я должен был указать -a ipaddress. сообщение об ошибке не помогло. Я понял это, отладив SSH-код ножа. также есть ошибка, что он не читает атрибут из файла конфигурации ножа. Я собираюсь открыть тикет о проблеме и, возможно, отправить патч.

Чтобы обойти это, я поместил имя хоста узла chef в мой файл / etc / hosts с указателем на IP-адрес. Например:

10.3.3.100 chef-client.int

Вы, конечно, всегда можете поместить его на DNS-сервер вместе с остальными узлами. Это полностью решило бы проблему.

Кроме того, если -a ipaddress не работает, попробуйте -a cloud.public_ipv4

Мне показали это решение после того, как я выяснил, что knife ssh пытался использовать внутренние IP-адреса для моих узлов, и до этого потребовалось несколько запросов в IRC-канале шеф-повара (#chef на irc.freenode.net) кто-то по имени retr0h показал мне это.

Пытаться knife ssh "id:*" "uptime".

Помни это knife ssh по существу делает knife search node, поэтому ваш запрос должен работать с knife search node (т.е. knife search node "node:*" не работает). knife ssh "role:*" также должен работать, но только если вашим узлам назначены роли. Если на то пошло, ваш оригинал knife search node "name:*" также должен работать, если вы измените назначение запроса для knife ssh. Так, knife ssh "name:*" "uptime".

Ты когда нибудь пробовал knife ssh "name:*" "uptime"?

Я использую Chef 10.x, и он мне подходит.

На мой взгляд, при использовании knife search [INDEX] [QUERY], первый параметр INDEX используется для указания типа запрашиваемого элемента. При использовании knife ssh команда, она знает, что вы пытаетесь искать узлы, поэтому все, что вам нужно сделать, это указать [QUERY] часть, которая name:* в твоем случае.

Я решил это, используя ssh / config и подключившись через fqdn.