我有3个厨师环境(dev,qa,prod),它们共享一本食谱。环境文件包含RPM版本号:
{
"name": "dev",
...
"rpms": {
"blah": "1.0",
"blah2": "2.0"
}
...
}
配方使用的:
rpms = node['rpms']
env = node['name']
yum_package "blah" do
version "#{rpms['blah']}-#{env}"
end
yum_package "blah2" do
version "#{rpms['blah2']}-common"
end
当我想添加新的RPM时会出现问题。我想在dev中安装 only 进行测试,因此我将相应的yum_package
调用添加到配方中,并将版本号添加到dev.json环境文件中。但是,部署到qa和prod将失败,因为qa和prod环境文件中缺少RPM版本号。
是否有办法扩展yum_package
提供程序以检查环境文件中是否指定了版本号(如果未指定版本,则跳过)?或者这个问题有更优雅的解决方案吗?
答案 0 :(得分:0)
根据doptimusprime的评论,以下内容应该有效(可选择不指定确切版本并使用最新版本):
{
"name": "dev",
...
"rpms": {
"blah": "1.0",
"blah2": "2.0",
"latestblah": nil
}
...
}
node['rpms'].each do |p,v|
yum_package p do
version v if v
end
end
(version
是可选的,只有在指定版本时才会被调用)