我正在尝试通过运行来引导一个新的 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
您需要删除 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,并取得了一定成功,但它也有自己的缺点。