我目前正在将我们组织的kitchen
迁移到Berkshelf
。
设置
我们使用git submodules
来维护cookbooks
目录中的vendor cookbooks
,我们的custom cookbooks
site-cookbooks
。
我摆脱了cookbooks
目录中的所有submodules
,并使用我们的自定义食谱创建了一个Berksfile
。我在 Berksfile
中设置了ENV['BERKSHELF_PATH']
以cookbooks
目录,以便将供应商食谱包含在一个地方,并将食谱目录添加到.gitignore
。
当我执行Berks install
时,供应商说明书将作为cookbook_name
- version
安装在说明书目录中。
问题
当我运行chef-solo
来运行自定义说明书时,厨师运行失败,因为供应商说明书中的食谱template
具有资源或cookbook_file
资源失败,因为厨师无法在食谱的目录或templates
目录中找到模板或files
文件,即使它们存在。
供应商说明书从berkshelf
安装的apt-2.7.0
重命名为没有version number
的apt
,并将供应商说明书添加到Berksfile,例如cookbook 'apt', path: './cookbooks/apt'
解决了这个问题。
然而,老实说,我认为我正朝着错误的方向前进,情况不应该如此。
你不想设置BERKSHELF_PATH
,这是Berkshelf 的内部跟踪目录,几乎不应该被触及。作为配置过程的一部分,厨房将自动为您处理正在运行的berks vendor
。