厨师根据bash命令输出退出食谱

时间:2018-12-31 16:15:05

标签: chef chef-recipe

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命令。

1 个答案:

答案 0 :(得分:1)

并非完全如此,因为execute资源的属性直到收敛时间(包括配方blablah::default之后)才被考虑。您无法决定在收敛时间是否要包含其他配方。

要执行您想做的事情,无论您要做什么外壳程序,都必须在编译时决定,例如:

include_recipe 'blahblah::default' unless `echo -n "hi"` == 'hi'

这将导致不包含食谱。

在此处查看coderanger对Chef的两遍模型的良好描述:https://coderanger.net/two-pass/

要将其应用于您要执行的操作,必须确定是否在编译时而不是在收敛时获得include_recipe