刚刚在我的流浪盒上运行了nginx :: source recipe,我的行为很不寻常.
当我从Vagrantfile中包含一个食谱(如下所示)时,一切都像魅力,
chef.add_recipe("project :: nginx")
chef.add_recipe("nginx :: source")
(project :: nginx配方非常简单.用它来覆盖nginx cookbook的默认属性)
但如果我在项目的最后包含一个食谱:: nginx(提到过),一切都会崩溃:
node.default['nginx']['server_names_hash_bucket_size'] = 128
include_recipe "nginx::source"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我不知道这两个调用之间的行为有什么不同.这里有人知道有什么区别吗?
我正在调整 Apache 食谱以与 2.4 Apache 一起使用。Opscode Cookbook 目前失败,因为它正在生成带有 LockFile 关键字的 conf 文件,该关键字被排除在 Apache 2.4 关键字列表之外。
我想制定一个通用解决方案,并根据软件版本填充我的conf文件。为此,我必须找出已安装软件的版本。同样的问题已经困扰我一段时间了,但我一直在设法避免它。由于我一遍又一遍地问这个问题,我想问:
如果说明书没有指定,即安装最新的可用版本,如何查找已安装的软件包/软件的版本?
注意:请不要告诉我将命令传递给底层 shell。我想知道是否有更好、更...Chefy的方法?也许与欧海有关?
编辑:看来我被误解了。我想知道是否有一个抽象平台层的解决方案(就像 Ohai 所做的那样),我会说类似gimme_version('apache')并获取已安装的 apache 版本。我想避免case node['platform_family'] when... when... when在内部编写特定于平台的代码。