1
爲了簡化,請考慮食譜(食譜 - 測試)食譜中的以下塊。在廚師資源塊中運行sudo命令
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命令。
經過一些調試發現「bash」和「execute」資源塊都沒有tty分配來在它們內部運行命令。
請分享您的想法。
檢查你的sudoers配置文件(通常是/ etc/sudoers)並檢查'Defaults'中是否有'requiretty'條目。如果是這樣,你可以刪除它,你的上面的例子可以工作。 –
是的。檢查了。是的,它確實提到了條目。 但不幸的是,刪除這是不是一個選項截至目前。 – Ram
尋找一種改變系統寬配置的方式。 – Ram