Chef
如何解決 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,則會找到 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
這種方法有一些副作用:
- 每次執行 berks install 時,都會再次下載食譜
- 每次都需要去掉後綴
您不直接使用 berkshelf 儲存文件夾,它是一個儲存文件夾。要以 Chef 可以使用的格式導出,請執行
berks vendor FOLDERNAME/
.