使用 Vlad 部署应用程序到 Ubuntu 服务器时出错,运行 sudo 命令

使用 Vlad 部署应用程序到 Ubuntu 服务器时出错,运行 sudo 命令

当谈到 ssh、sudo 和其他 unix 东西时,我是一个新手...所以请耐心听我说完。

我已经设置了一个 rails 网站并通过 ssh 使用 vlad 进行部署。一切正常。现在我需要让我的部署过程运行 sudo 命令来重新启动 monit。

我基本上只想运行“sudo monit reload”和“sudo monit start my_job_name”。但是当我让 vlad 运行这些命令时,我从 ubuntu 服务器收到错误:

sudo: no tty present and no askpass program specified

我进行了一些谷歌搜索,我发现的大多数答案都涉及修改,/etc/sudoers以便不需要为我想要的命令输入密码。老实说,我不喜欢这个选项。这似乎是一种黑客/解决方法,而我应该能够配置我的服务器以正确要求输入密码并让 vlad 提供密码(毕竟,vlad 支持ssh_password我已经填写的设置)。

有人可以指出我正确的方向来配置我的 vlad 脚本和我的 ubuntu 10.10 服务器,以正确运行我的 sudo 命令吗?

答案1

尝试这个:

set :sudo_flags, sudo_flags << '-S'
set :run_as_sudo, [sudo_cmd, sudo_flags].flatten.compact.join(' ')

对于你的命令请执行以下操作:

run "#{run_as_sudo} cmd"

它应该在运行时提示您输入密码。

答案2

您可以修改/etc/sudoers和删除requiretty选项,以便在没有可用 tty 时让 sudo 工作(例如来自 cron 作业、守护程序等)。您不必允许无密码 sudo,只需删除此选项即可。

相关内容