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 参数,但总是得到相同的结果。我尝试过:
- 节点:*
- 角色:*
- *
- *:*
有任何想法吗?
答案1
我搞明白了。我的节点没有 fqdn。我必须指定-a ipaddress
。错误消息没有帮助。我通过调试 knife ssh 代码解决了这个问题。还有一个错误,它没有从 knife 配置文件中读取属性。我将开具一张关于此问题的票据,也许会提交补丁。
为了解决这个问题,我把 chef 节点的主机名放在我的 /etc/hosts 文件中,并附上指向 IP 地址的指针。例如:
10.3.3.100 chef-客户端.int
当然,您也可以将其与其他节点一起放入 DNS 服务器中。这样就可以彻底解决问题。
答案2
另外,如果-a ipaddress
不行,请尝试-a cloud.public_ipv4
在弄清楚knife ssh
尝试使用内部 IP 地址作为我的节点后,我得到了这个解决方案,并在 chef IRC 频道(irc.freenode.net 上的 #chef)中询问了一些问题后一个叫 retr0h 的人给我看了这个。
答案3
尝试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"
。
答案4
我通过使用 ssh/config 并通过 fqdn 连接解决了这个问题。