如何解决 berks 和 chef-solo 之间的食谱命名不匹配问题?

如何解决 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 安装的 Cookbook 包含版本后缀

user@host ~ $ ls ~/.berkshelf/cookbooks/

terraform-0.5.3

如果将 terraform-0.5.3 重命名为 terraform 并再次运行 chef-solo,则会找到 terraform 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 install 时,都会再次下载食谱
  2. 每次都需要删除后缀

答案1

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

相关内容