如何在chef_gem包之前运行yum_package资源?

时间:2014-01-18 00:44:26

标签: chef chef-recipe

我正在写一个使用ruby_libvirt的食谱,它需要libvirt-devel。

所以我需要在chef_gem ruby​​_libvirt之前运行yum_package libvirt-devel。

我把yum_package放在一个食谱中,作为chef_gem的头部,在角色运行列表中。
我希望这会迫使这个问题。

chef_gem似乎是提前评估的。

2 个答案:

答案 0 :(得分:7)

chef_gem编译阶段安装ruby gems时,你应该让yum_package在这个阶段运行。

yum_package 'libvirt-devel' do
  action :nothing
end.run_action :install

chef_gem 'ruby_libvirt'
但是,

chef_gem资源只应在Chef需要安装某些gem的情况下使用(例如,当它在配方中进一步使用它时)。如果您只需要使用gem_package资源安装gem。它像执行阶段一样在任何其他资源中进行评估。

yum_package 'libvirt-devel'
gem_package 'ruby_libvirt'

More on compile and execution phases of Chef-run

答案 1 :(得分:-1)

你试过把它放在红宝石块下吗?

yum_package "libvirt-devel"

ruby_block 'chef_gem_gemname' do
  block do
    chef_gem "gemname"
    ...
  end
end