У меня сложный программный стек, которым я управляю двумя рецептами.
recipe[stack::foo]
recipe[stack::bar]
foo
устанавливается на каждом сервере, тогда как bar
устанавливается только на подмножестве серверов. bar
зависит от файла и сервиса foo
.
рецепт [stack :: 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
рецепт [stack :: 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
Ответили в IRC, и пользователь spuder сообщил, что двойной запрос не приветствуется.
tl; dr использовать resources()
или проверьте список выполнения.