chef-infra - 厨师根据 bash 命令输出返回食谱
问题描述
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
命令。
解决方案
并不是你写的那样,因为在execute
收敛时间之前不会考虑资源的属性,也就是在blablah::default
包含配方之后。您无法决定是否在收敛期间包含另一个配方。
为了做你想做的事,你想做的任何 shell 东西都必须在编译时是可决定的,例如:
include_recipe 'blahblah::default' unless `echo -n "hi"` == 'hi'
这将导致配方不包括在内。
在此处查看 coderanger 对 Chef 的两遍模型的良好描述:https ://coderanger.net/two-pass/
要将其应用于您想要做的事情,您必须决定是否include_recipe
在编译期间获取,而不是在收敛期间获取。
推荐阅读
- react-native - 无法读取未定义的属性“xxx.xxx”
- c - 编写我自己的内核 - 全局变量不起作用
- algorithm - 广度优先搜索 (BFS) 和深度优先搜索 (DFS) 代码 - 需要关于如何进一步改进它的建议
- android - 在 react-native 应用程序中请求权限后出现 java 错误和应用程序关闭
- javascript - 量角器中每个和地图之间的区别
- python - 我的自定义队列打印不正确
- c - C - 由于头部包含而重新定义
- ssh - 使用 mingw64 在 Windows 上通过带有密码的 HTTP 代理进行 SSH
- vue.js - sass-loader 无法解析 @use 规则
- linux - Linux:查找并增加版本