我需要在我的烹饪书中重复使用一些场景 – 在一台机器上创build几个用户,并为每个用户安装相同的软件。 安装软件是一个重复的操作,我想把它放在一个地方并重复使用。
我看过提供者,但他们似乎有一个方法load_current_resource加载系统的当前状态,我不能有这样的方法,因为一些用户可能已经安装了这个软件,其他人 – 没有,如果厨师调用这种方法幕后,我现在无法控制目前正在使用的用户。
我也看了MySQL的食谱 ,把一些自定义代码放入libraries文件夹。 这对我来说可能是最好的select,但我不知道它是否是一个厨师的方式。
所以问题是 – 什么是厨师的方式把这些可重复使用的代码部分多次使用相同的食谱或几个人。
在Chef中,有几个工具技术可以用来实现这一点,但是我认为你所寻找的解决scheme不是基于代码/语法的。 我想在这里你想要在一个或多个食谱中封装可重复的代码(如果多于一个,然后将它们组合在一个angular色中)。 接下来,所有的安装调用利用通用的not_if / only_if子句只在某些条件下安装。
文档: http : //docs.opscode.com/resource_common.html
另一种做法稍微痛苦一点,但是提供了一个更清晰的源代码树,就是利用数据包。 为每个要安装的用户设置简单的json结构化数据包,然后在您的配方循环中通过数据包中的项目并应用您的逻辑。
文档: http : //docs.opscode.com/dsl_recipe_method_data_bag.html