我需要编写一个Chef CookBook,它将根据系统中安装的Python版本安装一些软件包。
是否可以在Chef配方中使用以下逻辑:
python_version = `python -V` # check python version
if python_version == '2.6.6'
package 'package_a' # install package_a using Chef package resource
elsif python_version == '3.3.5'
package 'package_b' # install package_b using Chef package resource
else
break # stop execution of cookbook
end
提前谢谢!
答案 0 :(得分:2)
简短回答是的。
您应该使用shell_out!('python -V').stdout().chomp()
代替反对。
但是信息已存在于节点自动属性中,因此您无需拨打python -V
:
ohai languages
返回:
{
"python": {
"version": "2.7.3",
"builddate": "Jun 22 2015, 19:33:41"
},
"perl": {
"version": "5.14.2",
"archname": "x86_64-linux-gnu-thread-multi"
},
"c": {
"gcc": {
"version": "4.6.3",
"description": "gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) "
}
}
}
所以你应该能够写下你的食谱:
python_version = node['languages']['python']['version']
if python_version == '2.6.6'
package 'package_a' # install package_a using Chef package resource
elsif python_version == '3.3.5'
package 'package_b' # install package_b using Chef package resource
else
raise # stop execution of cookbook
end
要停止厨师运行,您需要the documentation
使用raise
答案 1 :(得分:1)