Chef

如何解決 berks 和 chef-solo 之間的菜譜命名不匹配?

  • November 28, 2016

跟進這個答案

執行廚師獨奏:

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,則會找到 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. 每次都需要去掉後綴

您不直接使用 berkshelf 儲存文件夾,它是一個儲存文件夾。要以 Chef 可以使用的格式導出,請執行berks vendor FOLDERNAME/.

引用自:https://serverfault.com/questions/817455