Chef bootstrap 给出 401 未经授权

Chef bootstrap 给出 401 未经授权

我正在尝试通过运行来引导一个新的 Chef 节点:
knife bootstrap <server ip> -x lewis -N gitlab --sudo
但我得到以下输出:
[Mon, 03 Sep 2012 14:45:17 +0000] INFO: *** Chef 10.12.0 ***
[Mon, 03 Sep 2012 14:45:17 +0000] INFO: Client key /etc/chef/client.pem is not present - registering
[Mon, 03 Sep 2012 14:45:17 +0000] INFO: HTTP Request Returned 401 Unauthorized: Failed to authenticate. Ensure that your client key is valid.
[Mon, 03 Sep 2012 14:45:17 +0000] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[Mon, 03 Sep 2012 14:45:17 +0000] FATAL: Net::HTTPServerException: 401 "Unauthorized"

我的 chef 服务器运行的是 Ubuntu 12.04 x32,而我尝试引导的机器运行的是 CentOS 6.3 x64

知道发生什么问题了吗?

答案1

我刚刚遇到了同样的问题,并从这个帖子中修复了它http://comments.gmane.org/gmane.comp.sysutils.chef.user/2718

要么 ssh 到你的潜在客户端机器并删除/etc/chef/client.pem或快速运行这个

ssh -t [email protected] "sudo rm /etc/chef/client.pem"

再次运行knife bootstrap它应该可以工作。您可能已经在另一个 chef 服务器上注册了此机器。

答案2

这对我有用http://wiki.opscode.com/display/chef/Common+Errors#CommonErrors-401Unauthorized(usingvalidatorAPIclient)

您需要删除 validation.pem 并重新启动 chef-server,因为它在当前 ubuntu chef-server 包中默认已损坏。

答案3

要使 knife-bootstrap 正常工作,请~/.chef/knife.rb像这样添加条目:

validation_client_name  "chef-validator"
validation_key          "#{ENV["HOME"]}/.chef/validation.pem"

并将文件副本/etc/chef/validation.pem从 Chef 服务器复制到$HOME/.chef/validation.pem

如果你不喜欢 knife-bootstrap ,还有许多其他方法可以自动设置

  • 创建操作系统映像,例如已准备好验证文件的自定义 AMI
  • 使用 Ubuntu 的 cloud-init 包为镜像添加验证文件

我过去曾使用过 cloud-init,并取得了一定成功,但它也有自己的缺点。

相关内容