Chef中是否有一种方法可以根据bash命令的输出来退出配方?
我尝试了以下操作:
execute 'check_output' do
command <<-EOH
output=$(echo "hi")
if [ "$output" == "hi" ]; then
return 0
fi
EOH
end
include_recipe 'blahblah::default'
我想以0的退出代码停止整个Chef食谱,而不点击include_recipe
命令。
答案 0 :(得分:1)
并非完全如此,因为execute
资源的属性直到收敛时间(包括配方blablah::default
之后)才被考虑。您无法决定在收敛时间是否要包含其他配方。
要执行您想做的事情,无论您要做什么外壳程序,都必须在编译时决定,例如:
include_recipe 'blahblah::default' unless `echo -n "hi"` == 'hi'
这将导致不包含食谱。
在此处查看coderanger对Chef的两遍模型的良好描述:https://coderanger.net/two-pass/
要将其应用于您要执行的操作,必须确定是否在编译时而不是在收敛时获得include_recipe
。