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

    xiaoxiao2023-03-24  3

    有的时候,我们需要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://ju.6miu.com/read-1200883.html
    最新回复(0)