超越梦想,一起飞!!!

宁静致远,淡泊明志!

[9]DevOps 自动化运维工具Chef---如何解决在Window平台上执行一些knife子命令时所报的错误, knife search, knife status?

有的时候,我们需要window平台上执行一些knife子命令,比如,knife status --run-list 查看运行的run list的状态,knife search '*:*' -i 搜索所有的子节点
这个时候如果运行的话,就会出现下面的错误提示,Cannot sign the request without a client name, check that :node_name is assigned.

那么为什么会出现这个错误?如何解决呢?且听笔者缓缓道来。
首先,请注意当前笔者进入的c:\chefdemo目录下面是一个空目录。而上面的命令需要和Chef服务器通信。那么问题来了,既然要和服务器通信,
就需要知道服务器的URL,已经服务器的证书,以及Chef服务器用户的私有证书(私有证书如何生成,请参考笔者的另一篇文章http://blog.csdn.net/chancein007/article/details/52551722),默认情况下,其会寻找当前的一个目录下是否有一个knife.rb的配置文件。如果没有则会报上面的Warning: No knife configuration file found. 解决的办法是在当前的目录下添加一个knife.rb的文件,其基本的配置如下:
# See https://docs.getchef.com/config_rb_knife.html for more information on knife configuration options
current_dir = File.dirname(__FILE__)
log_level                :debug
log_location             STDOUT
node_name                "rodney"
client_key               "#{current_dir}/rodney.pem"
chef_server_url          "https://chef-master-rodney.example.com/organizations/example"
#cookbook_path            ["#{current_dir}/../cookbooks"]
在上面的配置文件中我们指定了登陆到https://chef-master-rodney.example.com/organizations/example网站的用户的私有证书和用户名,也就是node_name, "rodney". 当然还有chef_server_url. 现在当前的目录下面有2个文件:

那么现在难道就把问题解决了吗? 让我们再次运行,

从上面的错误,我们看出,其报了一个其他的错误,根据提示,我需要用knife check ssl命令先确认一下
服务器的证书是否存在。要解决这个问题,请在当前的目录(c:\chefdemo)执行knife ssl fetch命令.

我们发现,其会创建一个新的目录,C:\chefdemo\trusted_certs,并会把https://chef-master-rodney.example.com/organizations/example这个网站上的公用证书下载到这个目录,chef-master-rodney_example_com.crt
这次我们再次执行,knife ssl check,就不会报错了。

然后再次执行,knife status --run-list和knife search ‘*:*’ -i, 恭喜你,执行成功了!!!!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chancein007/article/details/52684365
个人分类: Chef
所属专栏: 大话Chef
上一篇[8]DevOps 自动化运维工具Chef---如何查看Chef 自身的开发的API的文档?
下一篇[10]DevOps 自动化运维工具Chef----- Chef 12 服务器端数据库解密
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭