Перезапуск Выполнить блок в Chef-Solo
У меня есть исполняемый блок, который запускает сценарий внешней установки, который у меня нет питания. Этот сценарий установки иногда сразу же делает то, что я хочу, а в других случаях сначала запускает произвольное количество обновлений, и его нужно вызвать снова, чтобы выполнить фактическую установку. Процессы обновления возвращают ошибку 1, а фактическая установка возвращает успех 0. Существует ли элегантный способ перезапустить исполняемый блок, пока скрипт не вернет 0?
Конечно, я мог бы просто поместить несколько копий блока execute в рецепт, который запускается только тогда, когда папка, которая будет создана, не существует, и игнорировать, был ли запуск успешным или нет. Но это было бы невероятно уродливо и хакерски.
1 ответ
Вы можете использовать скрипт в качестве условия в цикле "before" с пустым телом:
until ./install_script ; do : ; done
Двоеточие - это команда "ничего не делать", "пока" просто не зацикливается, пока ее команда условия возвращает ложное значение (ненулевое состояние выхода). Квадратная скобка, обычно используемая для условий, на самом деле является псевдонимом команды "test".
Ничего особенного: это скорее вопрос оболочки, чем вопрос повара. Вы можете изменить теги.