根据 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
。
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
。