我有一本厨师食谱,除了许多其他特殊内容外,还包含许多具有相同代码的食谱。
template 'stack_file' do
local true
source File.join(base_dir, 'stack_templates/admin.yml.erb')
path File.join(base_dir, 'stacks/admin.yml')
variables(context)
end
template 'settings_file' do
sensitive true
local true
source File.join(base_dir, 'config_templates/settings_admin.yml.erb')
path File.join(base_dir, 'configs/settings_admin.yml')
variables(context)
end
是否可以通过某种方式将这段代码放在我可以用source_file
,destination_file
和variables
调用的方法中?
答案 0 :(得分:0)
我想您可以像在普通Ruby中一样编写一个模块并将其包含在配方中。
module StackFile
...the code you want to share...
end
然后您可以使用:
inlclude StackFile
或
Chef::Recipe.send(:include, StackFile)
或在使用*_if
条件时
Chef::Resource.send(:include, StackFile)
答案 1 :(得分:0)
执行以下操作: