如何解决berks和chef-solo之间的菜谱命名不符?

这个答案的后续。

厨师独奏

sudo chef-solo -c config.rb -j config.json Starting Chef Client, version 12.16.42 resolving cookbooks for run list: ["terraform"] ================================================================================ Error Resolving Cookbooks for Run List: ================================================================================ Missing Cookbooks: ------------------ No such cookbook: terraform Expanded Run List: ------------------ * terraform Platform: --------- x86_64-linux 

使用berkshelf安装的食谱包含版本后缀

 user@host ~ $ ls ~/.berkshelf/cookbooks/ terraform-0.5.3 

如果将terraform-0.5.3重命名为terraform并再次运行chef-solo,则会findterraform cookbook,但是找不到另一个:

 Missing Cookbooks: ------------------ No such cookbook: build-essential 

试图解决这个问题

通过从位于以下目录中的所有食谱中删除后缀版本解决了该问题:

 user@host ~ $ ls ~/.berkshelf/cookbooks/ ark ark-1.1.0 build-essential-7.0.2 compat_resource compat_resource-12.16.2 mingw mingw-1.2.4 ohai ohai-4.2.2 seven_zip seven_zip-2.0.2 terraform-0.5.3 windows windows-2.1.1 

这种方法有一些副作用:

  1. 每次berks安装运行cookbooks再次下载
  2. 每次都需要删除后缀

您不直接使用berkshelf存储文件夹,它是一个存储文件夹。 要以Chef可以使用的格式导出,请运行berks vendor FOLDERNAME/