Ніж SSH не знаходить моїх вузлів


12

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

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

Будь-які ідеї?

Відповіді:


16

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

Що я зробив, щоб пройти це, було помістити ім'я хоста шеф-кухаря у мій / 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
Дякую за відповідь, але я ставлю на "Без вузлів" для обох id: * та імені: *
Макс

Гаразд, це химерно (тобто, це працює на мене). Іноді мені доводилося бити шеф-кухаря, щоб отримати нові об’єкти, які з'являться в пошуку, але, якщо ви отримуєте результати від "вузла пошуку ножа", вам слід отримати той самий список вузлів, який використовує "нож сш" . Я не знаю, де шукати далі, якщо список результатів відрізняється.
cjc

0

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

Я використовую шеф-кухаря 10.x, і це працює на мене.

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


Я думаю, що відповідь @cjc означає те саме.
лей

0

Я вирішив це за допомогою ssh / config та підключення через fqdn.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.