Для упрощения рассмотрим следующий блок рецепта кулинарной книги (поваренной книги).
79: bash 'Running sudo test sleep command' do
80: user 'root'
81: cwd '/tmp'
82: code <<-EOH
83: sudo sleep 1000
84: EOH
85: end
Запуск этого как
"шеф-клиент -o поваренная книга-тест"
Выход:
Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of "bash" "/tmp/chef-script20150813-3835-3kj758" ----
STDOUT:
STDERR: sudo: sorry, you must have a tty to run sudo
---- End output of "bash" "/tmp/chef-script20150813-3835-3kj758" ----
Ran "bash" "/tmp/chef-script20150813-3835-3kj758" returned 1
Я добавил «sudo sleep» просто для примера использования. В реальном случае мы запускаем скрипты внутри вышеуказанного блока ресурсов, и эти скрипты имеют команды sudo.
После некоторой отладки было обнаружено, что блоки ресурсов «bash» и «execute» не имеют tty, выделенного для запуска внутри них команд.
Пожалуйста, поделитесь своими мыслями.
requiretty
вDefaults
. Если это так, вы можете удалить это, и ваш приведенный выше пример может работать. - person Nils Landt   schedule 13.08.2015user 'root'
для ресурса, поэтому он будет работать от имени пользователя root. А зачем вам sudo? - person Tejay Cardon   schedule 13.08.2015