我正在使用EC2来创建实例。
当我运行knife node list
时,我可以看到所有节点
NodeA,
NodeB,
NodeC
当我尝试搜索NodeC
时,它会给我一条错误消息
FATAL: No nodes returned from search!
当我尝试使用SSH访问同一节点NodeC
时,我收到同样的错误。
$ knife search node name:NodeC
FATAL: No nodes returned from search!
但是当我运行knife node list
时,我可以在列表中看到NodeC
。
即使我运行knife search node:
,它也会显示除NodeC
有人可以提出解决方案吗?
答案 0 :(得分:1)
NodeC是否成功完成了chef-client
的运行?如果不是这种情况可以解释为什么您没有看到knife-search
中的任何内容,则不会将最新的属性集上载到Chef服务器。
答案 1 :(得分:0)
我也遇到过这个问题。 knife node list
将返回服务器名称,但尝试使用服务器名称运行knife命令会导致FATAL: No nodes returned from search!
错误。我不知道究竟是什么导致了这个问题,但似乎有些东西还没有在厨师服务器上完全注册,需要更多的时间。直到最近我还没有看到这种行为。也许在Chef 11中发生了一些变化。无论如何我最终做的就是在while循环中将我的第一个knife ssh
命令放在我的构建脚本中。它只是一直在尝试,直到命令成功。有时它会在第一次尝试时起作用,有时我看到它需要三次尝试。可能应该添加一个计数器,以便在经过一些尝试后退出。这是我正在使用的bash代码:
echo "Waiting until the knife utility can run apt-get successfully on the remote server."
while true
do
knife ssh "name:${SERVERNAME}" "sudo apt-get update" -i sshkey.pem -x ubuntu --yes
CMDSTATUS=$?
echo STATUS: $CMDSTATUS
if [ $CMDSTATUS -eq 0 ]
then
echo "knife ssh command was successful. Continuing"
break
fi
echo "knife ssh command failed. Will try again."
echo "Sleeping 15 seconds..."
sleep 15
done
答案 2 :(得分:0)
使用winrm运行chef-client时发生类似的错误消息: knife winrm ADDRESS chef-client --manual-list --winrm-user USER --winrm-password'PASSWORD' 问题是(可能是我)我已经两次引导服务器并在两者之间更新了一些烹饪书。再次bootrtapping服务器并运行命令