【问题标题】:Chef Client Server Authentication through Vagrant通过 Vagrant 进行 Chef 客户端服务器身份验证
【发布时间】:2015-08-11 07:27:42
【问题描述】:

我正在尝试通过连接到 Chef 服务器来使用 Chef 配置 Vagrant 实例。

我的Vagrantfile 看起来像这样:

Vagrant.configure("2") do |config|

    config.vm.box = "opentable/win-2012r2-standard-amd64-nocm"
    config.vm.provider = "virtualbox"
    config.vm.communicator = "winrm"
    config.vm.guest = :windows

    config.omnibus.chef_version = :latest
    config.berkshelf.enabled = true

    config.vm.provision :chef_client do |chef|
      chef.chef_server_url = "https://chef.website.com"
      chef.validation_key_path = "C:/chef/validation.pem"
      chef.run_list = ["recipe[cookbook::default]"]
    end
end

根据this documentation,这个Vagrantfile 应该包含我需要连接到厨师服务器并拉下相关食谱和数据包所需的所有字段。

但是,我在运行 Chef 客户端配置程序时遇到了以下错误:

The following berks command failed to execute:

    C:\opscode\chefdk\embedded\bin/berks.BAT upload --berksfile C:/path/to/cookbook/Berksfile --no-freeze --force

The stdout and stderr are shown below:

    stdout: E, [2015-08-10T17:02:57.654352 #8488] ERROR -- : Ridley::Errors::ClientKeyNotFoundOrInvalid: client key is not found or invalid or not found at: 'C:/chef/client.pem'

确实,client.pem 不存在。

虽然错误本身很容易解释,但我不明白为什么我需要在初始 Chef 客户端运行时指定 client.pem

有没有办法让 Vagrant 自己创建它?更好的是,我可以让它完全不需要客户端标识符吗?

这只是一个 Vagrant 实例,所以我不需要在 Chef 服务器上保留这个节点。基于the Chef client provisioner documentation,我不明白为什么我需要client.pem 文件,因为说明中没有提到这一点。

感谢您的帮助!

【问题讨论】:

    标签: vagrant chef-infra


    【解决方案1】:

    尝试禁用 Berkshelf

    config.berkshelf.enabled = false
    

    针对 Chef 服务器引导新的 Chef 客户端不需要 Berkshelf。 Berkshelf 是 Chef 工作站 上用于管理 Chef 服务器上的食谱的工具。

    PS

    Vagrant-berkshelf 插件在某一阶段是 deprecated 支持 Test kitchen。它似乎又回来了,但与此同时,我逐渐意识到测试驱动基础架构的好处!

    【讨论】:

    • 感谢您的回答!是的,这是一个很好的观点。我不确定为什么启用 Berks 会导致它唠叨client.pem 文件,但值得一试。我会尝试一下。谢谢!我绝对同意 TDD 如此重要!
    • @JamesTaylor Berkshelf 是一个单独的工具,类似于刀。两者都设计为在厨师工作站上运行,而不是厨师节点/客户端。这就是为什么它假设有一个客户端证书文件。
    • O'Conner 不幸的是,这并没有解决问题。 Chef 仍然抱怨需要client.pem 文件。我最终只使用了chef_solo 配置器并将数据包本地存储在机器上。不过,感谢您的帮助!
    猜你喜欢
    • 2014-07-23
    • 2017-04-29
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多