Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra Berksfile语法问题_Chef Infra_Berkshelf_Berksfile - Fatal编程技术网

Chef infra Berksfile语法问题

Chef infra Berksfile语法问题,chef-infra,berkshelf,berksfile,Chef Infra,Berkshelf,Berksfile,我一直在寻找关于Berksfile的详细文档,但我所找到的只是示例,以及“你可以做这个”非正式的东西。(包括……处的材料) 问题1:Berksfile的基本语法是什么 问题2:可以进入Berksfile的(完整的)声明列表是什么 问题3:“cookbook”声明采用可选的哈希参数。vanilla Berkshelf支持的选项(完整)列表是什么?对于我的答案,我将链接到东西的v2.0.12版本,因为v3正在开发中 A1。基本语法与任何Ruby文件相同,因为Berksfile只是另一个Ruby DS

我一直在寻找关于Berksfile的详细文档,但我所找到的只是示例,以及“你可以做这个”非正式的东西。(包括……处的材料)

问题1:Berksfile的基本语法是什么

问题2:可以进入Berksfile的(完整的)声明列表是什么


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

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

A1。基本语法与任何Ruby文件相同,因为Berksfile只是另一个Ruby DSL(它似乎主要由Ruby DSL驱动,并得到了他们的一些帮助)

A2。声明的完整列表很难定义,因为Ruby可以在任何时候以多种方式进行更改/增强。(万岁的蒙基补丁)。但从v2.0.12开始,全套声明似乎包括(
元数据
站点
厨师api
食谱
),因为这些都是用expose\u方法标记的方法。当然,每个选项取决于每个选项的实现。(同样,任何有效的ruby都可以放入Berksfile,我在A3中利用了这一点,评估当然是在作为mixin一部分的CleanRoom类中进行的)

A3。同样,可扩展性使这一点变得困难,但是从一些过程来看,似乎定义了什么是有效的选项,以及一些类级方法。好吧,利用这一点,它是一个ruby 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]
现在,所有这些意味着什么,将需要更多的潜水通过源代码。然而,也许这会给你一个开始的地方,看看事情


出于好奇,您觉得缺少哪些文档

例如,我目前只能通过阅读源代码获得问题的答案;e、 g.见上文A1、2、3。我正在寻找非Ruby开发人员可以理解的详细文档。现在我意识到BerksShelf允许您在Berksfile上嵌入任意Ruby。。。但是如果用户没有,他应该能够理解如何使用Berkshelf,而不必钻研源代码。实际上,我在尝试学习Ruby和Chef的同时也有学习Berkshelf的个人经验,并且发现这方面的知识足够深入。(事实上,今晚是我第一次使用源代码来试图弄清楚它到底是如何工作的,在这一点上我已经处理了足够多的Chef's DSL,我认为它是这样的。)事实上,关于Q3/A3是最具体的一个,它涵盖了所有有人会通过的选项。(它不包括约束、位置、锁定版本和元数据,但它们似乎是内部的)我听到了你的话。但我正试图支持那些可能不想学习另一种编程语言,当然也不想超越Berksfile的人。文件可以很简单,只需定义
源代码
元数据
,查看元数据的相关性,以及
烹饪书
列表和它们所在的git路径。您不需要做任何其他事情,但是,由于它是Ruby,您可以用它做的事情太多了。您看过内联文档了吗?非常冗长:@sethvargo-我听到你说的了。但是最终用户不必阅读工具链的源代码来了解工具的功能,你不必阅读。但是,如果您想要完整的声明列表,您可以这样做。在代码之外记录这些内容是没有意义的,并且有可能使它变得陈旧和过时。使用文档!=dev文档,您描述的用例是开发文档,Berkshell2和3之间也有很多不同之处。我认为在我和其他维护人员可以提供实际解决方案的项目中,这种讨论会更有成效。@sethvargo-该解决方案会扩展到更新Berkshelf 2的文档吗?