Ваш only_if
сторож в ресурсе execute
запускает ресурс выполнения, если ENV['JAVA_HOME']
не пусто . Весьма вероятно, что эта переменная окружения установлена, и поэтому ваш ресурс execute
запускается каждый раз, когда запускается Chef и запускает перезагрузку.
Полагаю, вам просто нужно наоборот, запустите ресурс, только если переменная пуста . Для этого вы можете просто удалить !
из строки.
only_if { ENV['JAVA_HOME'].to_s.empty? }
Если мое предыдущее предположение неверно, вам нужно изменить защиту only_if
на что-то более надежное. Я понимаю, что из командной строки вы создаете некоторые файлы конфигурации, поэтому вам не нужно запускать ресурс execute
, когда файлы конфигурации уже существуют:
not_if { ::File.exist?('/path/to/file/created/by/command') }