knife ssh
nie 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?
-a ipaddress
” jest dosłowne. Najwyraźniej nakazujeknife ssh
połączenie przez IP, a nie FQDN. To zachowanie jest głupie - domyślnie powinno zostać cofnięte.Ponadto, jeśli
-a ipaddress
nie działa, spróbuj-a cloud.public_ipv4
Pokazano mi to rozwiązanie po tym, jak zorientowałem się, że
knife ssh
pró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 .źródło
knife ssh 'name:mydc1*' interactive -a node.node_name
Spróbować
knife ssh "id:*" "uptime"
.Pamiętaj, że
knife ssh
zasadniczo działaknife search node
, więc twoje zapytanie powinno być tym, które działaknife 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 zapytaniaknife ssh
. Więcknife ssh "name:*" "uptime"
.źródło
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 parametrINDEX
służy do określenia rodzaju elementu, który ma być zapytany. Korzystając zknife ssh
polecenia, wie, że próbujesz wyszukać węzły, więc wszystko, co musisz zrobić, to podać[QUERY]
część, która jestname:*
w twoim przypadku.źródło
Rozwiązałem to za pomocą ssh / config i połączenia przez fqdn.
źródło