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パラメータを変更しようとしましたが、常に同じ結果が得られました。私はもう試した:
何か案は?
私はそれを考え出した。私のノードにはfqdnがありませんでした。 -a ipaddress
。エラーメッセージは役に立ちませんでした。ナイフのsshコードをデバッグすることでそれを理解しました。また、knife configファイルから属性を読み取らないというバグもあります。この問題に関するチケットを開き、おそらくパッチを送信します。
これを回避するために行ったのは、chefノードのホスト名を/ etc/hostsファイルにIPアドレスへのポインターを指定して配置することでした。例えば:
10.3.3.100 chef-client.int
もちろん、他のノードとともに、常にDNSサーバーに置くこともできます。それで問題は完全に解決します。
また、-a ipaddress
が機能しない場合は、-a cloud.public_ipv4
をお試しください
knife ssh
がノードの内部IPアドレスを使用しようとしていることを理解し、シェフにIRCチャネル(irc.freenode上の#chef .net)以前 retr0hという名前の誰かがこれを示した 。
Ssh/configを使用してfqdnで接続することで、これを解決しました。
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"
。
knife ssh "name:*" "uptime"
を試したことはありますか?
Chef 10.xを使用していますが、問題なく動作します。
私の意見では、knife search [INDEX] [QUERY]
を使用する場合、最初のパラメーターINDEX
を使用して、照会するアイテムのタイプを指定します。 knife ssh
コマンドを使用すると、ノードを検索しようとしていることが認識されるため、[QUERY]
の部分(name:*
)を指定するだけで済みます。