Условные зависимости в CHEF

Условные зависимости в CHEF

У меня сложный программный стек, которым я управляю с помощью двух рецептов.

recipe[stack::foo]
recipe[stack::bar]

fooустанавливается на каждом сервере, тогда как barустанавливается только на подмножестве серверов. barзависит от файла и службы foo.

рецепт[стек::foo]

  file 'fooFile' do
    source 'somewhere'
    notifies :restart, service[barService] #bar needs to be restart first, if it is present
    notifies :restart, service[fooService]
  end

  service 'fooService' do
    action :start
  end

рецепт[стек::bar]

  file 'barFile' do
    source 'somewhere'
  end

  service 'barService' do
    action :start
  end

Можно ли сделать условную зависимость, так что если barрецепт присутствует на узле, он перезапустит его. Если нет, он его пропустит.

Я пытаюсь сделать что-то вроде этого

  file 'fooFile' do
    source 'somewhere'
    notifies :restart, service[barService] if exists? "service[barService]" 
    notifies :restart, service[fooService]
  end

решение1

Ответил в IRC, и пользователь spuder сообщил, что повторные запросы не приветствуются.

tl;dr используйте resources()или проверьте список выполнения.

Связанный контент