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