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

mpe*_*ner 2 chef-infra chef-recipe

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

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

我把yum_package放在了chef_gem的一个食谱中,在角色运行列表中.
我希望这会迫使这个问题.

chef_gem似乎是提前评估的.

Dra*_*ter 7

由于chef_gem在安装红宝石宝石编译阶段,你应该yum_package在此阶段运行了.

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

chef_gem 'ruby_libvirt'
Run Code Online (Sandbox Code Playgroud)

chef_gem但是,只有当Chef需要安装一些gem时(例如,当它在配方中进一步使用它时)才应该使用资源.如果您只需要安装gem使用gem_package资源.它在执行阶段与任何其他资源一样进行评估.

yum_package 'libvirt-devel'
gem_package 'ruby_libvirt'
Run Code Online (Sandbox Code Playgroud)

更多关于Chef-run的编译执行阶段.