Узел шеф-повара внутри ruby_block - PullRequest
0 голосов
/ 05 ноября 2018

Проблема: Я хочу, чтобы выборочно перезапустить службу в шеф-повар в зависимости от роли узла. Если я не делаю перезапуск, я бы хотел пометить узел для перезапуска позже.

В настоящее время у меня есть код, который выглядит следующим образом

template '/etc/docker/daemon.json' do
  source 'daemon.json.erb'
  mode '0644'
  notifies :run, 'ruby_block[start_right_service]', :immediately
end

ruby_block 'start_right_service' do
  action :nothing
  block do
    if node.role?('dev') ||
       node.role?('desktop')
      Chef::Log.info('Fireing off a restart this node')
      resources(service: 'docker').run_action(:restart)
    else
      Chef::Log.info('Not allowed to restart this node')
      node.run_state['pending_docker_restart'] = true
    end
  end
end

Так что я не могу использовать тег внутри ruby_block при получении

неопределенный метод `tag 'для Chef :: Resource :: RubyBlock

Я также пытался передать переменную с помощью node.run_state, но, похоже, это тоже не работает. любая идея, чтобы обойти это, будет принята с благодарностью

1 Ответ

0 голосов
/ 05 декабря 2018

переопределяет атрибут узла внутри ruby_block. Вы можете попробовать это сделать, заменив node.run_state на node.default

...