删除没有私钥的刀客户端?

时间:2013-01-16 10:43:48

标签: ruby chef vagrant knife

我加入了一家新公司,为了加快速度,我一直在玩Vagrant for VM。我的系统几乎已经安装完毕,然后一个奇怪的错误迫使我关闭笔记本电脑而不通过vagrant destroy断开连接。现在,在尝试设置时,我运行vagrant up并收到以下错误消息。

    [default] Running provisioner: Vagrant::Provisioners::ChefClient...
    [default] Creating folder to hold client key...
    [default] Uploading chef client validation key...
    [default] Generating chef JSON and uploading...
    [default] Running chef-client...
    stdin: is not a tty
    [Wed, 16 Jan 2013 05:20:20 -0500] INFO: *** Chef 0.10.2 ***
    [Wed, 16 Jan 2013 05:20:20 -0500] INFO: Client key /etc/chef/client.pem is not present     - registering
    [Wed, 16 Jan 2013 05:20:21 -0500] INFO: HTTP Request Returned 409 Conflict: Client already exists.
    [Wed, 16 Jan 2013 05:20:22 -0500] INFO: HTTP Request Returned 403 Forbidden: Merb::ControllerExceptions::Forbidden
    [Wed, 16 Jan 2013 05:20:22 -0500] FATAL: Stacktrace dumped to /srv/chef/file_store/chef-stacktrace.out
    [Wed, 16 Jan 2013 05:20:22 -0500] FATAL: Net::HTTPServerException: 403 "Forbidden"
    The following SSH command responded with a non-zero exit status.
    Vagrant assumes that this means the command failed!

    chef-client -c /tmp/vagrant-chef-1/client.rb -j /tmp/vagrant-chef-1/dna.json

现在从我自己的研究中我发现这意味着客户端已经存在并且指定了名称,因此我决定手动将其关闭。我试图用knife client list列出所有刀客户端,但后来收到以下消息:

    WARNING: No knife configuration file found
    ERROR: Your private key could not be loaded from /etc/chef/client.pem
    Check your configuration file and ensure that your private key is readable

奇怪。我知道knife.rb存在,我在ls时看到它,所以我不知道刀配置文件是如何存在的。没有这个私钥,我看不到我的刀客户。我是Vagrant,Knife和Chef的新手,所以我很难过。

思想?

1 个答案:

答案 0 :(得分:1)

所以惯例是knife.rb位于~/.chef/knife.rb/etc/chef/knife.rb - 我更喜欢前者,因为它将它保存在我的主文件夹中,并且限制在我的用户帐户中。

我通常也会在那里保留Chef Server客户端证书。

一旦您能够成功执行knife client list,您就可以识别并删除违规的客户端证书。 (您也可以在此期间使用Web UI。)

让Vagrant在销毁时移除客户端的证书是suggested feature,但从未实施,留给运营商做出决定。

另外 - 看起来你正在使用非常老版本的Chef - 0.10.2 - 我们今天刚刚发布了10.18.2。需要考虑的事情。