berkshelf 在哪里寻找 knife.rb

where does berkshelf look for knife.rb

我正在尝试使用 berks upload 将一些食谱(和依赖项)发送到我的厨师服务器,但 berkshelf 需要知道我的厨师服务器位于...以及如何进入它。

the documentation says

Berkshelf will run with a default configuration unless you explicitly generate one. By default, Berkshelf uses the values found in your Knife configuration (if you have one).

它到底在哪里寻找我的knife.rb
目前,它位于 ~/chef-repo/.chef/knife.rb,它不在我的路径或任何地方。应该吗?或者我应该把它放在别的地方吗?

另请注意,我的食谱并未存储在我的 ~/chef-repo 目录中。他们在 ~/cookbooks .... 也许他们 "should" 在我的厨师仓库里?

您应该将 Berksfile 保存在您的 chef-repo 中,并从那里上传,默认情况下,Berkshelf 会将您的 knife.rb 定位在 .chef/knife.rb(相对于您的位置)。

事实上,您不需要在 chef-repo 中有食谱,您可以从文件系统(或网络)上的另一个位置在 Berksfile 中引用它们。将食谱放在你的 chef-repo 之外会让你更难在另一台机器上设置 chef 工作站,但它可以工作。

Berksfile 是纯粹的 Ruby,因此您可以编写 Ruby 将在运行时评估的代码,因此您基本上可以包含任何内容。检查 this article 以获取一些示例。