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

Рецепт интерактивной установки от Chef

Я новичок в шеф-поваре и пытаюсь настроить виртуальную машину Ubuntu для тестирования, автоматически устанавливая наш продукт. Я могу загрузить .tgz, извлечь его и запустить установщик, используя ресурс bash.

Проблема, с которой я столкнулся, заключается в том, что наш сценарий установки принудительно выполняет проверку EULA для установки из командной строки. В сценарии оболочки есть что-то похожее на следующее:

# various statements and input to expect from stdin
echo "You must accept our EULA to install the software"

read ENTER
more EULA.txt

echo "Do you accept the EULA?"
# additional input expected from stdin

Я могу легко добавить ожидаемый ввод из стандарта, используя файл ответов и начав установку с ./install.sh < response.txt, но это перестает работать однажды more выполняется. Команда more не видит входных данных из файла ответов и по-прежнему ожидает, что "q" завершит команду, прежде чем принять eula.

Как правильно выполнить такую ​​установку автоматически с помощью chef? Помимо простого переписывания скрипта install.sh, чтобы игнорировать строку EULA.

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

Например:

 ./install.sh < response.txt | cat

Хотя вам действительно стоит использовать что-то вроде expect для подобных сценариев.