Nóż SSH nie znajduje moich węzłów

12

knife sshnie znajduje moich węzłów. Wiem, że powinno być w stanie, ponieważ kiedy mogę je wyszukać, znajduję je

# knife search node name:*
2 items found

Node Name:   web_01
...

Node Name:   admin
...

Jednak kiedy uruchamiam knife ssh(pokażę to z flagą „debugowania”), dostaję

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

(tak, host ma rację, właśnie ocenzurowałem go dla postu).

Próbowałem zmodyfikować parametr QUERY i zawsze otrzymuję te same wyniki. Próbowałem:

  • węzeł:*
  • rola:*
  • *
  • *: *

Jakieś pomysły?

Max
źródło

Odpowiedzi:

16

Rozgryzłem to. moje węzły nie miały fqdn. Musiałem sprecyzować -a ipaddress. komunikat o błędzie nie był pomocny. Zrozumiałem to przez debugowanie kodu ssh noża. istnieje również błąd polegający na tym, że nie odczytuje atrybutu z pliku konfiguracyjnego noża. Otworzę bilet na ten temat i być może prześlę łatkę.

Aby to zrobić, umieściłem nazwę hosta węzła szefa kuchni w moim pliku / etc / hosts ze wskaźnikiem na adres IP. Na przykład:

10.3.3.100 chef-client.int

Oczywiście możesz zawsze umieścić go również na serwerze DNS wraz z resztą swoich węzłów. To całkowicie rozwiązałoby problem.

Max
źródło
7
Aby wyjaśnić innym czytelnikom, „ -a ipaddress” jest dosłowne. Najwyraźniej nakazuje knife sshpołączenie przez IP, a nie FQDN. To zachowanie jest głupie - domyślnie powinno zostać cofnięte.
Steve Bennett,
@ SteveBennett Zgadzam się, że powinno to być zachowanie domyślne. Widzę, jak mój post może być mylący. Dzięki za wytłumaczenie.
Maks.
4

Ponadto, jeśli -a ipaddressnie działa, spróbuj-a cloud.public_ipv4

Pokazano mi to rozwiązanie po tym, jak zorientowałem się, że knife sshpróbuję użyć wewnętrznych adresów IP dla moich węzłów i zajęło to trochę pytania w kanale IRC szefa kuchni (#chef na irc.freenode.net), zanim ktoś o imieniu retr0h pokazał mi to .

jLi
źródło
niesamowite, dziękuję! @ all, jeśli używasz ec2, a twoje instancje zostały utworzone z publicznym knife ssh 'name:mydc1*' interactive -a node.node_name
poleceń
0

Spróbować knife ssh "id:*" "uptime".

Pamiętaj, że knife sshzasadniczo działa knife search node, więc twoje zapytanie powinno być tym, które działa knife search node(tzn. knife search node "node:*"Nie działa). knife ssh "role:*"powinien również działać, ale tylko jeśli twoje węzły mają przypisane role. W tym przypadku oryginał knife search node "name:*"powinien również działać po zmianie przeznaczenia zapytania knife ssh. Więc knife ssh "name:*" "uptime".

cjc
źródło
1
Dzięki za odpowiedź, ale założę się, że „Brak węzłów” zarówno dla identyfikatora: *, jak i imienia: *
Max
OK, to dziwne (tzn. Działa dla mnie). Czasami musiałem wykopać szefa kuchni, aby nowe obiekty pojawiały się w wyszukiwaniu, ale jeśli otrzymujesz wyniki z „węzła wyszukiwania noża”, powinieneś otrzymywać tę samą listę węzłów, której używa „nóż ssh” . Nie wiem, gdzie szukać dalej, jeśli lista wyników jest inna.
cjc
0

Czy kiedykolwiek próbowałeś knife ssh "name:*" "uptime"?

Używam szefa kuchni 10.x i to działa dla mnie.

Moim zdaniem, gdy używasz knife search [INDEX] [QUERY], pierwszy parametr INDEXsłuży do określenia rodzaju elementu, który ma być zapytany. Korzystając z knife sshpolecenia, wie, że próbujesz wyszukać węzły, więc wszystko, co musisz zrobić, to podać [QUERY]część, która jest name:*w twoim przypadku.

ley
źródło
Myślę, że odpowiedź @cjc oznacza to samo.
ley
0

Rozwiązałem to za pomocą ssh / config i połączenia przez fqdn.

h4ck3rm1k3
źródło