2014-09-25 154 views
3

我有一套用于配置web和SQL服务器的食谱,它们目前在我们的持续部署管道中使用。我希望开发人员能够使用相同的食谱来设置他们的本地开发环境,而无需向厨师服务器注册每台开发机器。看起来,厨师零可以用来完成这一点,但我有一些麻烦开始使用它。如何在没有厨师服务器的情况下运行厨师(厨师独奏/厨师零)

我有一个厨师的回购文件夹与我的食谱在里面,我跟着steps in this article

PS C:\Temp\chef-repo> tree . 
Folder PATH listing 
Volume serial number is 3E77-463C 
C:\TEMP\CHEF-REPO 
└───cookbooks 
    └───test 
     └───recipes 
PS C:\Temp\chef-repo> cat .\cookbooks\test\recipes\default.rb 
file "C:\Temp\test.log" do 
    content 'HELLO WORLD' 
end 

但是,当我运行chef-client -z -o test它似乎无法找到我的食谱。

这是错误我得到:

Starting Chef Client, version 11.16.0 
[2014-09-25T10:17:37-05:00] WARN: Run List override has been provided. 
[2014-09-25T10:17:37-05:00] WARN: Original Run List: [] 
[2014-09-25T10:17:37-05:00] WARN: Overridden Run List: [recipe[test]] 
resolving cookbooks for run list: ["test"] 

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

Missing Cookbooks: 
------------------ 
No such cookbook: test 

Expanded Run List: 
------------------ 
* test 


Running handlers: 
[2014-09-25T10:17:37-05:00] ERROR: Running exception handlers 
Running handlers complete 
[2014-09-25T10:17:37-05:00] ERROR: Exception handlers complete 
[2014-09-25T10:17:37-05:00] FATAL: Stacktrace dumped to C:/Users/username/.chef/local-mode-cache/cache/chef-stacktrace.out 
Chef Client failed. 0 resources updated in 25.375311 seconds 
[2014-09-25T10:17:38-05:00] FATAL: Net::HTTPServerException: 412 "Precondition Failed " 

我运行从C:\Temp\chef-repo这个命令,这是我的厨师存储库文件夹的根目录。我也试着改变我的%USERPROFILE%\.chef\knife.rb包含以下设置:

cookbook_path [ 
    "C:\Temp\chef-repo\cookbooks" 
] 
local_mode true 
node_name "Chef.example.com" 

我在做什么错?

回答

4

到底哪里出问题了是你的conf指定

cookbook_path [ 
    "C:\Temp\chef-repo\cookbooks" 
] 

将被红宝石加载knife.rb通过/更换\或双倍他们\\

刀的时候可能解释为C:Tempchef-repocookbooks .rb是一个ruby文件,并被解析为ruby代码。

与许多编程语言一样,\用于逃避下一个字符。

编辑精密:需要复制命令等时

始终使用正斜杠,你会避免错误,厨师需要与适当取代他们照顾逃脱反斜线

你WOLD使用的唯一的地方反斜杠将是一个带有heredoc语法的批处理资源,也许你将不得不逃脱它们(不确定是否需要逃脱)

+0

啊,太简单了!谢谢。 – 2014-09-26 16:37:23

2

这并没有完全回答你的问题......我通过让开发人员使用一个位于“流浪”厨师环境中的流浪vm来解决这个问题,该流程与dev/qa /除少数例外情况外,产品环境也是如此就厨师服务器而言,每个人都有相同的节点名称,因此必须注册每台机器。

+0

感谢您的建议。无论如何要思考,但真的希望有一个无服务器的解决方案,以便厨师食谱可以作为构建删除的一部分与其他构建工件一起交付,并仅作为部署的一部分执行。 – 2014-09-26 14:38:33