根据 bash 命令输出,厨师 return 超出食谱

Chef return out of recipe depending on bash command output

Chef 中是否有一种方法可以根据 bash 命令的输出 return 出菜谱?

我尝试了以下方法:

execute 'check_output' do
  command <<-EOH
    output=$(echo "hi")
    if [ "$output" == "hi" ]; then
        return 0
    fi
  EOH
end

include_recipe 'blahblah::default'

我想停止整个 Chef 食谱,退出代码为 0,而不是点击 include_recipe 命令。

不是您写的那样,因为 execute 资源的属性在收敛时间之前不会被考虑,这是在包含配方 blablah::default 之后。您无法决定是否在收敛时间内包含另一个食谱。

做你想做的事,无论你想做什么 shell 都必须在编译时确定,例如:

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

这将导致食谱不被包括在内。

在这里查看 coderanger 对 Chef 的两次通过模型的很好描述:https://coderanger.net/two-pass/

要将其应用于您想要做的事情,您必须决定是否在编译期间而不是在收敛期间获得 include_recipe