【发布时间】:2015-05-01 21:39:49
【问题描述】:
我有 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 中安装它以进行测试,因此我将适当的 yum_package 调用添加到配方并将版本号添加到 dev.json 环境文件中。但是,部署到 qa 和 prod 将失败,因为 qa 和 prod 环境文件中缺少 RPM 版本号。
有没有办法扩展yum_package 提供程序来检查环境文件中是否指定了版本号(如果没有指定版本则跳过)?或者这个问题有更优雅的解决方案吗?
【问题讨论】:
-
我认为更优雅的是使用
each方法迭代键和值。 rpms.each { |k,v|版本“#{v}”}
标签: ruby chef-infra