Назад | Перейти на главную страницу

Повторный запуск блока Execute в режиме Chef-Solo

У меня есть блок выполнения, который запускает внешний сценарий установки, над которым я не властен. Этот сценарий установки иногда сразу делает то, что я хочу, а в других случаях сначала запускает произвольное количество обновлений, и его нужно вызвать снова, чтобы выполнить фактическую установку. Процессы обновления возвращают ошибку 1, а фактическая установка возвращает успех 0. Есть ли элегантный способ повторно запустить блок выполнения до тех пор, пока сценарий не вернет 0?

Конечно, я мог бы просто поместить в рецепт несколько копий блока выполнения, которые будут запускаться только тогда, когда папка, которая будет создана, не существует, и игнорировать, был ли запуск успешным или нет. Но это было бы невероятно уродливо и взломано.

Вы можете использовать сценарий как условие в цикле «до» с пустым телом:

until ./install_script ; do : ; done

Двоеточие - это команда «ничего не делать», «до» просто зацикливается, пока ее команда условия не возвращает ложное значение (ненулевой статус выхода). Квадратная скобка, обычно используемая для условий, на самом деле является псевдонимом команды "test".

Придирчивость: это скорее вопрос оболочки, чем вопрос шеф-повара. Вы можете изменить теги.