2013-01-16 15 views
4

我加入了一家新公司,为了赶上速度,我一直在与我的虚拟机玩Vagrant。我让我的系统几乎设置,然后一个奇怪的错误迫使我关闭我的笔记本电脑,而不通过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,所以我不知道刀配置文件如何不存在。我无法看到我的刀客户显然没有这个私钥。我对流浪者,刀和厨师是全新的,所以我很难过。

想法?

+2

尝试使用-c按照您在运行厨师客户端时所用的相同方式将刀具配置文件的显式路径。我相信[path是配置文件中client_key条目的默认路径,如果它没有找到它使用的默认文件 – PatrickWalker

回答

1

因此,约定是您的knife.rb位于~/.chef/knife.rb/etc/chef/knife.rb - 我更喜欢前者,因为它将它保留在我的个人文件夹中,并且仅限于我的用户帐户。

我也会保留我的Chef Server客户端证书。

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

让Vagrant删除客户的证书销毁是一个suggested feature,但从未实施,让它给运营商做出该决定。

此外 - 它看起来像你使用一个非常老的厨师版本 - 0.10.2 - 我们今天刚刚发布了10.18.2。需要考虑的事情。