Chef infra 厨师零罐';在厨房试运行期间找不到烹饪书

Chef infra 厨师零罐';在厨房试运行期间找不到烹饪书,chef-infra,cookbook,Chef Infra,Cookbook,这让我抓狂,我刚开始在一个新的图像上使用chef(win10),出于某种原因,当使用kitchen测试一本烹饪书时,它找不到烹饪书?尝试回答此问题: 它会抛出一个错误,提示“您的Berksfile包含多个名为“printserver”的条目。请删除重复的依赖项,或将它们放在不同的组中。]在default-win-2012r2-standard-amd64-nocm上” 厨房版本1.17.0 ----> Converging <default-win-2012r2-standard-a

这让我抓狂,我刚开始在一个新的图像上使用chef(win10),出于某种原因,当使用kitchen测试一本烹饪书时,它找不到烹饪书?尝试回答此问题: 它会抛出一个错误,提示“您的Berksfile包含多个名为“printserver”的条目。请删除重复的依赖项,或将它们放在不同的组中。]在default-win-2012r2-standard-amd64-nocm上” 厨房版本1.17.0

----> Converging <default-win-2012r2-standard-amd64-nocm>...
   Preparing files for transfer
   Preparing dna.json
   Resolving cookbook dependencies with Berkshelf 6.3.1...
   Removing non-cookbook files before transfer
   Preparing validation.pem
   Preparing client.rb
 -----> Chef Omnibus installation detected (install only if missing)
   Transferring files to <default-win-2012r2-standard-amd64-nocm>
   Starting Chef Client, version 13.4.24
   resolving cookbooks for run list: ["printserver"]

   ================================================================================
   Error Resolving Cookbooks for Run List:
   ================================================================================

   Missing Cookbooks:
   ------------------
   No such cookbook: printserver

   Expanded Run List:
   ------------------
   * printserver

   System Info:
   ------------
   chef_version=13.4.24
   platform=windows
   platform_version=6.3.9600
   ruby=ruby 2.4.2p198 (2017-09-14 revision 59899) [x64-mingw32]
   program_name=C:/opscode/chef/bin/chef-client
   executable=C:/opscode/chef/bin/chef-client


   Running handlers:
   [2017-09-20T13:38:53-07:00] ERROR: Running exception handlers
   Running handlers complete
   [2017-09-20T13:38:53-07:00] ERROR: Exception handlers complete
   Chef Client failed. 0 resources updated in 03 seconds
   [2017-09-20T13:38:53-07:00] FATAL: Stacktrace dumped to C:/Users/vagrant/AppData/Local/Temp/kitchen/cache/chef-stacktrace.out
   [2017-09-20T13:38:53-07:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
   [2017-09-20T13:38:53-07:00] FATAL: Net::HTTPServerException: 412 "Precondition Failed"
 ------Exception-------
Class: Kitchen::ActionFailed
Message: 1 actions failed.
 Converge failed on instance <default-win-2012r2-standard-amd64-nocm>.  
Please see .kitchen/logs/default-win-2012r2-standard-amd64-nocm.log for more details
 Please see .kitchen/logs/kitchen.log for more details
Also try running `kitchen diagnose --all` for configuration
--->正在收敛。。。
准备要传输的文件
准备dna.json
使用Berkshelf 6.3.1解决cookbook依赖项。。。
传输前删除非cookbook文件
准备validation.pem
准备client.rb
----->检测到Chef Omnibus安装(仅在缺少时安装)
将文件传输到
正在启动Chef客户端,版本13.4.24
正在解析运行列表的食谱:[“printserver”]
================================================================================
解析运行列表的Cookbooks时出错:
================================================================================
遗失的食谱:
------------------
没有这样的食谱:printserver
扩展运行列表:
------------------
*打印服务器
系统信息:
------------
chef_版本=13.4.24
平台=windows
平台_版本=6.3.9600
ruby=ruby 2.4.2p198(2017-09-14修订版59899)[x64-mingw32]
程序名称=C:/opscode/chef/bin/chef客户端
可执行文件=C:/opscode/chef/bin/chef客户端
正在运行的处理程序:
[2017-09-20T13:38:53-07:00]错误:正在运行异常处理程序
正在运行的处理程序已完成
[2017-09-20T13:38:53-07:00]错误:异常处理程序已完成
Chef客户端失败。0个资源在03秒内更新
[2017-09-20T13:38:53-07:00]致命:Stacktrace转储到C:/Users/vagrant/AppData/Local/Temp/kitchen/cache/chef-Stacktrace.out
[2017-09-20T13:38:53-07:00]致命:如果您提交错误报告,请提供stacktrace.out文件的内容
[2017-09-20T13:38:53-07:00]致命:Net::HTTPServerException:412“前置条件失败”
------例外情况-------
类:Kitchen::ActionFailed
消息:1个操作失败。
Converge在实例上失败。
有关更多详细信息,请参阅。kitchen/logs/default-win-2012r2-standard-amd64-nocm.log
有关更多详细信息,请参见.kitchen/logs/kitchen.log
还可以尝试运行'kitchen diagnose--all'进行配置

将以下内容添加到Berksfile(在“元数据”下):

澄清一下:如果这是您创建的一本食谱,您需要做几件事:

如果本地有烹饪书,则需要添加
路径:'../printserver/'
或类似内容。它需要相对于当前路径

如果它在github上,添加类似于
git:'git@github.com/my_org/printserver.git,“master”

因此,将所有这些放在一起,在本地系统上使用相对路径:

cookbook 'printserver', path: '../printserver'
对于git:

cookbook 'printserver', git: 'git@github.com/your_org/printserver.git', 'master'

最后,运行
berks-install
。如果仍然有问题,请告诉我。

我最后做了什么:

  • 将烹饪书从工作笔记本电脑带到家用电脑上,并进行测试,按预期工作
  • 卸载了chef、vagrant和virtual box,并在家用电脑上以相同版本重新安装,仍然存在相同的问题
  • 在这一点上,我很恼火我花了多少时间试图解决这个问题,所以我重新成像了笔记本电脑,重新安装了所有东西(最新版本),现在它可以正常工作了
首先出了什么问题?我不知道


另一方面,如果有人对使用chef创建windows 2012打印服务器有任何好的参考资料,那将非常有帮助。

我通过向Berksfile添加一行
元数据来解决这个问题。

请添加Berksfile和metadata.rb,它们与您运行该命令位于同一文件夹中。这可能不正确,deps应该在metadata.rb中,但是如果没有更多的信息就很难说你是错的,@InsertNameHere--它在他的运行列表中,但是找不到,这意味着它在Berksfile中丢失了。现在,这似乎是一个内部的cookbook(不是来自社区),因此您需要为它提供一个Git源,或者一个本地路径(相对于您运行cookbook的位置)。
cookbook 'printserver', git: 'git@github.com/your_org/printserver.git', 'master'