Berksfile语法问题

时间:2014-01-10 01:41:02

标签: chef berkshelf berksfile

我一直在寻找有关Berksfile内容的详细文档,但我发现的只是示例,“你可以做到这一点”非正式的东西。 (这包括http://berkshelf.com ...)

的材料

Q1:Berksfile的基本语法是什么?

Q2:什么是可以进入Berksfile的“声明”(完整)列表?

Q3:“cookbook”声明采用可选的哈希参数。 vanilla Berkshelf支持的(完整)选项列表是什么?

1 个答案:

答案 0 :(得分:2)

对于我的回答,我将链接到v2.0.12版本的东西,因为v3正在开发中。

A1。基本语法与任何Ruby文件相同,因为Berksfile只是另一个Ruby DSL(它似乎主要由this source驱动,并且来自DSL Eval Mixin的一些帮助)

A2。完整的声明列表很难定义,因为Ruby可以随时以多种方式进行更改/增强。 (用于monkeypatching的Hurray)。但似乎从v2.0.12开始,完整的声明集包括(metadatagroupsitechef_apicookbook),因为这些是用expose_method标记的方法。当然,每个选项都取决于每个选项的实现。 (也可以将任何有效的ruby放入Berksfile中,我也可以在A3中使用它,评估当然发生在CleanRoom类中,它是mixin的一部分)。

A3。同样,可扩展性使得这很困难,但是从几次传递开始,似乎CookbookSource class定义了什么是有效选项,以及一些类级方法。好吧,利用它是一个红宝石的dsl,我扔了

puts "options: #{Berkshelf::CookbookSource.valid_options}"

进入我的Berksfile,运行berks并出来:

options: [:constraint, :locations, :group, :locked_version, :chef_api, :node_name, :client_key, :git, :ref, :branch, :tag, :rel, :github, :protocol, :site, :path, :metadata]

现在所有这些意味着什么,将需要更多的潜水通过源代码。但是,也许这会给你一个透视事物的起点?

出于好奇,您认为http://berkshelf.com中缺少哪些文档?