1

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

我安装了 Chef 服务器并配置了刀的 ubuntu 服务器 12.04 ion。这工作得很好,我能够运行刀命令,它给了我预期的结果。

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

knife --version 

我得到了输出

Chef: 10.16.2

现在我已经配置了knife.rb 文件。内容如下: log_level :info log_location STDOUT node_name 'knife' cache_type 'BasicFile' cache_options( :path => "~/.chef/checksums" ) client_key '~/.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 client list

我收到以下错误:

错误:无法使用密钥 /etc/chef/clientkeys.pem 作为 client1对http://ip-11-213-23-99:4000进行身份验证

我想请你澄清我的以下疑虑:

  1. 是否也必须将 clientkey.pem 保留在厨师服务器上?如果是,那么在什么位置?
  2. 我需要将pem文件保存在厨师客户端上的任何特定位置吗?
  3. 我究竟做错了什么?
4

2 回答 2

1

您的客户适当地存在于厨师服务器上吗?我相信它将被称为“刀”,因为这是您的节点名称。

http://ip-11-213-23-99:4040/clients

客户端 pem 密钥确实已在服务器上注册,您可以通过 server-webui 转到服务器上的客户端选项卡来查看。密钥存储在 CouchDB 中。当您使用服务器执行 chef-client 运行时,此值会出现在此处。

提供的 pem 键的值必须与您提供的“node_name”的客户端视图中显示的存储 pem 匹配。是这样吗?

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

于 2012-12-03T17:40:22.773 回答
0

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

  1. 是的,复制它是必要的。
  2. 服务器节点上的任何地方,但唯一的问题是您必须在 knife.rb 中提供该位置
于 2013-11-22T06:06:24.110 回答