繁体   English   中英

如何在没有厨师服务器的情况下经营厨师(厨师独奏/厨师零)

[英]How to run chef without chef server (chef solo/chef zero)

我有一套用于配置Web和SQL服务器的烹饪书,它们目前在我们的持续部署管道中使用。 我希望开发人员能够使用相同的烹饪书来设置他们的本地开发环境,而无需使用Chef服务器注册每台开发机器。 似乎厨师零可以用来完成这个,但是我有一些麻烦开始使用它。

我有一个cook-repo文件夹,里面有我的食谱,我正在按照本文中步骤操作

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运行此命令,这是我的chef存储库文件夹的根目录。 我也尝试修改我的%USERPROFILE%\\.chef\\knife.rb以包含以下设置:

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

我究竟做错了什么?

出现问题的是您的conf指定

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

在加载knife.rb时,可能会将其解释为C:Tempchef-repocookbooks由ruby替换\\ by /或将它们加倍\\\\

knife.rb是一个ruby文件,解析为ruby代码。

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

编辑精度:

总是使用正斜杠,你将避免错误,厨师负责在复制命令等需要时用适当的逃逸反斜杠替换它们。

你唯一使用反斜杠的地方是带有heredoc语法的批处理资源,也许你无论如何都要逃避它们(不确定是否需要逃避)

这并没有完全回答你的问题......我开始使用流浪者vm,这是在一个“流浪”厨师环境中,它与dev / qa / prod环境的run_list紧密匹配小的例外。 就厨师服务器而言,每个节点都具有相同的节点名称,因此可以避免必须注册每台机器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM