强制 Chef 多次运行具有不同属性的食谱

red*_*888 2 ruby recipe cookbook chef-infra chef-recipe

我有一本食谱 (CB1),其中包含install_app将安装应用程序的食谱 ( )。install_app实际上在 CB1 中执行了一系列其他配方,它使用属性来更改您安装的应用程序和应用程序的设置。

我为每个应用程序设置了 CB1 属性,然后每个应用程序调用include_recipe CB1::install_app.

但这似乎不起作用。Chef 首先编译运行列表中的所有配方,然后执行它们,因此只有第一次调用include_recipe CB1::install_app执行。

如何强制 Chef 多次运行食谱?

cod*_*ger 5

这是不可能的,配方被认为是单例。您想要的是制作自定义资源。然后您可以使用不同的输入(属性)多次调用该资源。

  • 不,“现在”食谱是为了搞乱编译与收敛的东西,非常不是你想要的。从技术上讲,这是可能的,但它在一定程度上破坏了各种内容,我不会告诉您如何:P 将您现有的配方代码粘贴到自定义资源的操作块中,应该不会那么困难. 然后替换任何需要随属性变化的内容(即`node['foo']` -> `new_resource.foo` 并在文件顶部添加`property :foo`)。然后创建一个新的配方文件,以节点属性作为输入多次调用您的自定义资源。 (2认同)