A.
raise
这样的资源中间的语句
总是
在厨师长会议期间失败并输出您的加薪声明
compile phase
。此外,您不能运行
include_recipe
在另一个这样的资源中。最后,您不应该有多个防护,在这种情况下,这些防护相互冲突。一个命令资源在文件存在时不要运行,另一个命令资源仅在文件存在时运行。你需要做的是这样的:
if ::File.exist?('/tmp/db_backup.lock')
raise 'backup in progress, stopping'
else
include_recipe "${cookbook_name::hostname}"
end
如果文件存在,这将引发异常,否则将运行包含的配方。
或者,如果您想跳过包含的菜谱,但继续厨师运行,您可以执行以下操作:
if ::File.exist?('/tmp/db_backup.lock')
Chef::Log.warn("backup in progress, skipping #{cookbook_name::hostname}")
else
include_recipe "#{cookbook_name::hostname}"
end