web-dev-qa-db-ja.com

ナイフ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パラメータを変更しようとしましたが、常に同じ結果が得られました。私はもう試した:

  • ノード:*
  • 役割:*
  • *
  • *:*

何か案は?

12
Max

私はそれを考え出した。私のノードにはfqdnがありませんでした。 -a ipaddress。エラーメッセージは役に立ちませんでした。ナイフのsshコードをデバッグすることでそれを理解しました。また、knife configファイルから属性を読み取らないというバグもあります。この問題に関するチケットを開き、おそらくパッチを送信します。

これを回避するために行ったのは、chefノードのホスト名を/ etc/hostsファイルにIPアドレスへのポインターを指定して配置することでした。例えば:

10.3.3.100 chef-client.int

もちろん、他のノードとともに、常にDNSサーバーに置くこともできます。それで問題は完全に解決します。

16
Max

また、-a ipaddressが機能しない場合は、-a cloud.public_ipv4をお試しください

knife sshがノードの内部IPアドレスを使用しようとしていることを理解し、シェフにIRCチャネル(irc.freenode上の#chef .net)以前 retr0hという名前の誰かがこれを示した

4
jLi

Ssh/configを使用してfqdnで接続することで、これを解決しました。

0
h4ck3rm1k3

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"

0
cjc

knife ssh "name:*" "uptime"を試したことはありますか?

Chef 10.xを使用していますが、問題なく動作します。

私の意見では、knife search [INDEX] [QUERY]を使用する場合、最初のパラメーターINDEXを使用して、照会するアイテムのタイプを指定します。 knife sshコマンドを使用すると、ノードを検索しようとしていることが認識されるため、[QUERY]の部分(name:*)を指定するだけで済みます。

0
ley