如果cookbook不包含文件,请跳过模板

时间:2018-02-02 22:06:51

标签: chef

如果菜单上没有文件,我希望跳过创建文件。 当前正在使用的资源的示例:

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']}') }

1 个答案:

答案 0 :(得分:1)

这不是我们真正支持的。如果您正在挖掘internal APIs,您可以找到方法,但这不是我们鼓励或支持的用例。更好的是设置一个后备模板。像source ["#{filename}_#{node['hostname']}.erb", "#{filename}_default.erb"]或类似的东西,所以如果找不到每个主机名模板,它会使用默认模板(可能只是空的)。