在Chef only_if guard中使用多个条件

时间:2016-10-19 14:05:31

标签: ruby chef chef-recipe chef-solo cookbook

我使用以下主厨资源:

execute 'run_command' do
  command "chkconfig service on"
  only_if node['platform_version'].to_i == 6, 5
end

如果only_if guard以正确的方式使用,请告诉我

1 个答案:

答案 0 :(得分:0)

保护块中的ruby命令应放在{}中。还要注意,保护块内的任何红宝石代码都将在收敛阶段(即运行时)执行。我有一个类似的情况,根据上述tensibai的评论,我只是使用了一个带有预包含值的数组来检查ubuntu版本。

execute "apt-get-update" do
  command "apt-get update"
  ignore_failure true
  notifies :install, 'package[ntp]', :immediately
  not_if {[16.04, 18.04].include?(node['platform_version'].to_f) && (node['packages'].keys.include? "ntp")}
  #not_if {(node['packages'].keys.include? "ntp")}
end

所以对于您的情况,我认为防护块将类似于

execute 'run_command' do
    command "chkconfig service on"
    only_if {[5, 6].include?(node['platform_version'].to_i)} 
end