使用chef我有一个安装gem的简单配方,例如:
gem_package "passenger" do
version node['passenger']['version']
end
Run Code Online (Sandbox Code Playgroud)
我还想用另一本食谱安装ruby,对于某些服务器可能是Ruby 1.9.3,对于其他服务器可能是Ruby Enterprise 1.8.7.所以我认为我可以使用gem_binary并ohai执行此操作,如下所示:
gem_package "passenger" do
version node['passenger']['version']
gem_binary "#{languages['ruby']['bin_dir']/gem}"
end
Run Code Online (Sandbox Code Playgroud)
但问题开始了,因为languages['ruby']安装新的ruby时没有改变.Ruby Enterprise安装到via /opt/ruby-enterprise并将其自身添加到PATHvia,/etc/profile.d/ree.sh但是ohai在同一次运行期间没有被拾取,但是在下一次运行中会被拾取.
在第一次运行中,ohai表示languages['ruby']安装/opt/vagrant_ruby/bin/ruby时使用vagrant和chef_solo配置.乘客宝石安装在错误的红宝石中.
如何ohai识别新安装的红宝石?
通常我使用的 RVM 也有同样的问题。我通常会硬编码 gem 二进制文件的路径,并将最后一位保留为属性。
例如
就像是
5 node["rvm"]["rubies"].each do |ruby|
6 gem_package "[#{ruby}]-passenger" do
7 package_name "passenger"
8 version node[:passenger][:version]
9 gem_binary "/usr/local/rvm/bin/gem-#{ruby}"
10 options "--no-ri --no-rdoc"
11 end
12 end
Run Code Online (Sandbox Code Playgroud)
或者,我们使用bash块并获取适当的文件。请注意,当使用 bash 块时,仅使用块中的最后一个内容来确定成功,将它们链接起来通常是明智的&&
| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |