我正在使用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
之外的所有节点
有人能就此提出解决方案吗?
NodeC是否成功运行了chef-client
?如果不是这样,则不会将最新的一组属性上传到Chef服务器,这可以解释为什么您没有从knife-search
中看到任何内容。
当我使用winrm运行chef客户端时,出现了类似的错误消息:knife winrm ADDRESS chef-client --manual-list --winrm-user USER --winrm-password 'PASSWORD'
问题是(可能是我)我已经启动了两次服务器,并在其间更新了一些食谱。boots再次启动服务器并运行命令工作
我也遇到了这个问题。knife node list
将返回服务器名称,但尝试使用服务器名称运行刀具命令将与FATAL: No nodes returned from search!
一起出错。我不知道问题的确切原因,但似乎有什么东西没有在厨师服务器上完全注册,需要更多的时间。直到最近我才看到这种行为。也许《大厨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