Chef infra 刀子命令无法进行身份验证

Chef infra 刀子命令无法进行身份验证,chef-infra,knife,Chef Infra,Knife,我已经创建了如下设置,为此,我使用Amazon EC2: 一个ubuntu服务器12.04版,我安装了一个Chef服务器并配置了刀片。这是完美的工作,我能够运行刀命令,它给了我预期的结果 另一个类似的ubuntu服务器,我正试图将其用作chef客户端。已安装并配置客户端。另外,在客户机上安装刀。我知道这是正确安装的,因为安装后我运行了命令 knife --version knife client list 我得到了输出 Chef: 10.16.2 现在我已经配置了knife.rb文件。

我已经创建了如下设置,为此,我使用Amazon EC2:

一个ubuntu服务器12.04版,我安装了一个Chef服务器并配置了刀片。这是完美的工作,我能够运行刀命令,它给了我预期的结果

另一个类似的ubuntu服务器,我正试图将其用作chef客户端。已安装并配置客户端。另外,在客户机上安装刀。我知道这是正确安装的,因为安装后我运行了命令

knife --version 
knife client list
我得到了输出

Chef: 10.16.2
现在我已经配置了knife.rb文件。 内容如下: 日志级别:信息 日志位置标准输出 节点名称“刀” 缓存类型为“基本文件” 缓存\u选项(:path=>“~/.chef/checksums”) 客户密钥“~/.chef/clientkey.pem”

cookbook_path       [ "~/mychefrepo/cookbooks" ]
cookbook_copyright "example org"
cookbook_email     "cookbooks@example.net"
cookbook_license   "apachev2"

chef_server_url    "http://ip-11-213-23-99:4000"

validation_key      "~/.chef/validation.pem"
在配置之后,如果我运行刀命令

knife --version 
knife client list
我得到以下错误:

错误:无法使用密钥/etc/chef/clientkeys.pem对as client1进行身份验证

请您澄清我的以下疑问:

  • 是否必须将clientkey.pem也保留在chef服务器上?如果是,那么在什么位置
  • 在chef client上是否有我需要保存pem文件的特定位置
  • 我做错了什么

  • 您的客户端是否存在于chef服务器上?我相信它会被称为“刀”,因为这是你的名字

    http://ip-11-213-23-99:4040/clients
    
    客户机pem密钥确实在服务器上注册,您可以通过服务器webui查看服务器上的“客户机”选项卡。密钥存储在CouchDB中。当您使用服务器执行chef客户端运行时,此值会出现在此处

    提供的pem密钥的值必须与您提供的“节点名称”的客户端视图中显示的存储pem相匹配。是这样吗


    客户端密钥本身可以存储在任何位置。

    您的客户端是否存在于chef服务器上?我相信它会被称为“刀”,因为这是你的名字

    http://ip-11-213-23-99:4040/clients
    
    客户机pem密钥确实在服务器上注册,您可以通过服务器webui查看服务器上的“客户机”选项卡。密钥存储在CouchDB中。当您使用服务器执行chef客户端运行时,此值会出现在此处

    提供的pem密钥的值必须与您提供的“节点名称”的客户端视图中显示的存储pem相匹配。是这样吗


    客户机密钥本身可以存储在任何地方。

    从服务器引导客户机时,它会在那里创建client.pem。甚至当您在客户机上运行chef client时,它也会创建client.pem。 您需要在服务器节点上复制此文件。 同样,您必须提供进入knife.rb的路径,该路径在/chef repo/.chef中可用

  • 是的,有必要复制它
  • 服务器节点上的任何位置,但最重要的是您必须在knife.rb中提供该位置

  • 当您从服务器引导客户机时,它会在那里创建client.pem。甚至当您在客户机上运行chef client时,它也会创建client.pem。 您需要在服务器节点上复制此文件。 同样,您必须提供进入knife.rb的路径,该路径在/chef repo/.chef中可用

  • 是的,有必要复制它
  • 服务器节点上的任何位置,但最重要的是您必须在knife.rb中提供该位置

  • 嗯,我不知道如何检查客户机是否正确地存在于chef服务器上。如果你告诉我怎么做,我会查一查。此外,我在chef服务器上的knife CLI的帮助下在chef服务器上创建了客户机,因此我认为这是合适的。无论如何,我会验证coach数据库中的密钥。如果您查看上面的链接并替换为您的实际ip,您应该会看到所有已配置api客户端的列表。您应该在knife.rb中查找与“node_name”同名的节点,并通过单击它来检查其键的值。将其与您使用knife.rb提交的pem密钥进行比较。希望这对汉克斯有帮助。。我可以用其他方法解决这个问题……)但是你的回答让我想了想。。谢谢你的帮助:)介意分享一下你解决问题的其他方法吗?这会帮助其他读者。我遇到了这个问题。请与社区分享您的答案。不知道如何检查客户机是否正确地存在于chef服务器上。如果你告诉我怎么做,我会查一查。此外,我在chef服务器上的knife CLI的帮助下在chef服务器上创建了客户机,因此我认为这是合适的。无论如何,我会验证coach数据库中的密钥。如果您查看上面的链接并替换为您的实际ip,您应该会看到所有已配置api客户端的列表。您应该在knife.rb中查找与“node_name”同名的节点,并通过单击它来检查其键的值。将其与您使用knife.rb提交的pem密钥进行比较。希望这对汉克斯有帮助。。我可以用其他方法解决这个问题……)但是你的回答让我想了想。。谢谢你的帮助:)介意分享一下你解决问题的其他方法吗?这会帮助其他读者。我遇到了这个问题。请与社区分享您的答案。贪图答案而不做贡献是不好的。你能提供下面提到的解决方案吗?我现在遇到了这个问题。你能提供下面提到的解决方案吗?我现在遇到了这个问题。