如果菜单上没有文件,我希望跳过创建文件。 当前正在使用的资源的示例:
cookbook_file "#{filename}.txt" do
source "#{filename}_#{node['hostname']}"
ignore_failure true
end
ignore_failure
适用于这种情况,但是在触发时我的厨师运行会显示一个很大的错误。
如果特定模板不存在,我是否可以使用防护来完全跳过资源?像这样的东西:
//I just made this up to illustrate my point
only_if { "#{Chef::CookbookFile[:cookbook_files]}".include?('#{filename}_#{node['hostname']}') }
答案 0 :(得分:1)
这不是我们真正支持的。如果您正在挖掘internal APIs,您可以找到方法,但这不是我们鼓励或支持的用例。更好的是设置一个后备模板。像source ["#{filename}_#{node['hostname']}.erb", "#{filename}_default.erb"]
或类似的东西,所以如果找不到每个主机名模板,它会使用默认模板(可能只是空的)。