2016-02-22 5 views
2

Для восстановления сервера я хочу пропустить часть моего кулинарной книги в соответствии с результатами предыдущего запуска.Шеф-повара - Пропустить ресурсы из состояния предыдущего запуска

Например, у нас есть ресурс для запуска серверов Weblogic.

weblogic_server "server_name" do 
    action :start 
end 

Эти стартапы занимают много времени во время сборки. Я хочу пропустить это, если он был успешно запущен в последней сборке, чтобы не было слишком много ждать для восстановления. Что-то вроде этого:

weblogic_server "server_name" do 
    action :start 
    not_if { it_was_run_successfully_during_the_previous_run } 
end 

Я знаю, что лучший способ сделать это будет иметь проверку на статус WebLogic серверов сценарий, но это до другой команды, и мне нужно временное решение.

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

например:

{ 
    "provisioning"   : true, 
    "start_weblogic_servers : true, 
    "configuring_ohs"  : false 
} 

В этом случае я бы ресурс шаблона для этого файла журнала, а затем обновить значения во время бега. Затем в каждом прогоне я сначала проверил этот файл и пропустил правый раздел в соответствии со значениями, которые я нахожу.

Есть ли лучший способ пойти?

ответ

0

Решение Nabeel Amjad для меня работало. Выполните следующие действия:

Создать file ресурс с action :nothing

file '/tmp/logfile' do 
    action: nothing 
end 

Установите ресурс уведомить file ресурс после запуска

weblogic_server 'server_name' do 
    action :start 
    notifies :create, 'file[/tmp/logfile]', :immediately 
end 

Добавить охранника not_if, который будет пропускать будущее исполнение этого ресурса, если файл существует на сервер

weblogic_server 'server_name' do 
    action :start 
    notifies :create, 'file[/tmp/logfile]', :immediately 
    not_if { ::File.exist?('/tmp/logfile') } 
end 
+0

Прохладный, рад, что сработал! –

1

То, что я делал в прошлом, это просто создать пустой файл, если он существует, тогда вы пропустите его (not_if do ::File.exists?('/path/to/some_empty_file') end). Тогда у вас может быть некоторый код, когда сборка будет успешной или не будет создавать или удалять эти файлы, я понимаю, что это, вероятно, не самый лучший подход, но он работал для меня, насколько я помню.

Если вы действительно этого хотите, у вас может быть некоторый скрипт, проверяющий состояние сервера (скажем, на 5-минутный интервал), а затем соответствующим образом отредактируйте этот пустой файл (удалив его или сохранив).