【问题标题】:Capistrano 3 - Error: sorry, you must have a tty to run sudoCapistrano 3 - 错误:抱歉,您必须有一个 tty 才能运行 sudo
【发布时间】:2014-01-24 11:27:17
【问题描述】:

我刚刚将 Capistrano 从 v2 升级到 v3.1。

我已经重新编写了我的任务,其中包括一个运行 shell 脚本来重新启动 NGINX 的任务。要重新启动 NGINX,我必须以 sudo 运行,这会导致错误:

抱歉,您必须有 TTY 才能运行 sudo

在 Capistrano 2 中,为了解决这个问题,我添加到我的 Capfile 中:

default_run_options[:pty] = true

Capistrano v3 的等价物是什么?

我的deploy.rb 文件如下所示:

# config valid only for Capistrano 3.1
lock '3.1.0'

set :application, 'APP_NAME'

namespace :deploy do

  desc 'Restart NGINX'
  task :restart do

    on roles(:app), in: :sequence, wait: 5 do
       execute :sudo, "./restart.sh"
    end
  end

end

【问题讨论】:

    标签: ruby capistrano capistrano3


    【解决方案1】:

    要解决此问题,我需要将set :pty, true 添加到我的deploy.rb 文件中。我不得不四处寻找这个答案,所以我想我会分享一下,以防其他人有同样的问题。

    更新deploy.rb文件

    # config valid only for Capistrano 3.1
    lock '3.1.0'
    
    set :application, 'APP_NAME'
    set :pty, true
    
    namespace :deploy do
    
      desc 'Restart NGINX'
      task :restart do
        on roles(:app), in: :sequence, wait: 1 do
           execute :sudo, "./restart.sh"
        end
      end
    
    end
    

    要在不提示输入密码的情况下进行连接,您需要设置 SSH 密钥。我的production.rbstaging.rb 看起来像这样:

    set :stage, :production
    
    role :app, %{ec2-000-000-000-000.eu-west-1.compute.amazonaws.com}
    
    set :ssh_options, {
        user: 'ubuntu',
        keys: %w(/path/to/key/file/my_access_key.pem),
        forward_agent: false
    }
    

    【讨论】:

    • 我在某处 (here) 读到 :pty 在 v3 中默认为 true,但我在官方网站上找不到任何文档......就像真的什么都没有。搞清楚这一点做得很好;)
    • 干杯 - 认为它可能对某人有用:-)
    • @ajtrichards_wales 但是当你被提示时如何提供密码?
    • @Mohamad 您需要设置 SSH 密钥,以免收到提示。我已经更新了答案,向您展示了我的 production.rb 文件的样子。
    • @ajtrichards_wales 很有趣。我已经将我的 SSH 密钥复制到服务器。我原以为 Capistrano 会自动选择它,因为我作为已经拥有 sudo 权限的用户进行部署。最后,我为部署用户添加了一个无密码选项以使其正常工作。 pty: true 从来没有为我工作过。我会给你的变体一个破解,因为它比无密码用户更可取。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2015-10-07
    • 2015-06-29
    • 1970-01-01
    相关资源
    最近更新 更多