刀SSH找不到我的节点

knife ssh没有find我的节点。 我知道它应该能够,因为当我可以search他们时,我发现他们

 # knife search node name:* 2 items found Node Name: web_01 ... Node Name: admin ... 

但是,当我运行knife ssh (我将显示与“debugging”标志),我得到

 # 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参数并始终得到相同的结果。 我试过了:

  • 节点:*
  • angular色:*
  • *
  • *:*

有任何想法吗?

我想到了。 我的节点没有fqdn。 我必须指定-a ipaddress 。 该错误消息是没有帮助的。 我通过debugging刀ssh代码来解决这个问题。 还有一个bug,它不会读取刀configuration文件的属性。 我要打开关于这个问题的票,也许提交一个补丁。

我所做的是通过指向IP地址的指针将主节点的主机名放在我的/ etc / hosts文件中。 例如:

10.3.3.100 chef-client.int

当然,你也可以把它和其他的节点一起放到DNS服务器上。 这将完全解决这个问题。

另外,如果-a ipaddress不起作用,请尝试-a cloud.public_ipv4

我find了这个解决scheme后,找出knife ssh试图为我的节点使用内部IP地址,并且在主厨IRC频道(irc.freenode.net上的#chef)之前, 有人叫retr0h告诉我这个问题 。

尝试knife ssh "id:*" "uptime"

请记住, knife ssh本质上是一个knife search node ,所以你的查询应该是一个knife search node (即knife search node "node:*"不起作用)。 knife ssh "role:*"也应该工作,但只有当你的节点有angular色分配给他们。 对于这个问题,原来的knife search node "name:*"也应该工作,当你重新使用knife ssh的查询。 所以, knife ssh "name:*" "uptime"

你有没有试过knife ssh "name:*" "uptime"

我使用厨师10.x,它适用于我。

在我看来,使用knife search [INDEX] [QUERY] ,第一个参数INDEX用于指定要查询的项目的types。 在使用knife ssh命令时,它知道您正在尝试search节点,所以您只需指定[QUERY]部分,即name:*

我通过使用ssh / config和fqdn连接解决了这个问题。