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


12

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

# knife search node name:*
2 items found

Node Name:   web_01
...

Node Name:   admin
...

Однако, когда я запускаю knife ssh(я покажу это с флагом 'debug'), я получаю

# 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 и всегда получал одинаковые результаты. Я пробовал:

  • узел:*
  • роль:*
  • *
  • *: *

Есть идеи?

Ответы:


16

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

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

10.3.3.100 chef-client.int

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


7
Чтобы уточнить для других читателей, " -a ipaddress" буквально. По-видимому, он говорит, knife sshчтобы подключиться по IP, а не FQDN. Такое поведение глупо - по умолчанию оно должно быть отменено.
Стив Беннетт

@ SteveBennett Я согласен, что это должно быть поведение по умолчанию. Я вижу, как мой пост может сбить с толку. Спасибо за разъяснение.
Макс

4

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

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


удивительно, спасибо! @all, если вы используете ec2, и ваши экземпляры были созданы с публичным IP, но имя хоста указано на локальный, используйте следующее:knife ssh 'name:mydc1*' interactive -a node.node_name
Ilja

0

Попробуй 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".


1
Спасибо за ответ, но я поставил "Нет узлов" для идентификатора: * и имени: *
Макс

Хорошо, это странно (то есть, это работает для меня). Мне иногда приходилось нажимать chef-solr, чтобы новые объекты отображались в поиске, но, если вы получаете результаты из «узла поиска ножа», вы должны получить тот же список узлов, который используется «ножом ssh» , Я не знаю, где искать дальше, если список результатов отличается.
CJC

0

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

Я использую шеф-повар 10.x, и он работает для меня.

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


Я думаю, что ответ @cjc означает то же самое.
Лей

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.