1

私は capistrano 3 を完全に実行しており、非 root ユーザーとしてパスワードなしで展開しています。

私が今やろうとしているのは、upstart サービスである sudoers.d ファイルをインストールし、サーバーにいくつかの依存関係をインストールするインストール スクリプトをセットアップすることです。

production.rb ファイルにユーザーとホストを入力して実行するだけで、新しいサーバーをインストールできます。cap production setupserver

問題は、作成したセットアップ スクリプトを root として実行する必要があることです。

しかし、これは 1 回限りのことなので、単純にユーザーに root パスワードを尋ねて、サーバー上でいくつかのタスクを実行したいと思います。

を使用しているため、as :rootコマンドは機能しませんsu -c

ここに示されているように、パスワードを要求できます http://capistranorb.com/documentation/faq/how-can-i-get-capistrano-to-prompt-for-a-password/

production.rb ファイルで指定されたユーザーをオーバーライドする方法について何か提案はありますか?

求められたパスワードを渡す方法は?

4

2 に答える 2

1

最終的に解決した方法は、同じサーバーに別の役割を追加することでした。

role :app, 'theappuser@myserver'
role :install, 'root@myserver', :no_release => true

そして、このようなことをします

desc 'Install nginx'
task :install do
  on roles(:install) do
    require 'erb'
    template = ERB.new(File.new('deploy/templates/nginx.conf.erb').read).result(binding)
    upload! StringIO.new(template), "/etc/nginx/conf.d/#{fetch(:domain)}.conf"
  end

  on roles(:app) do
    invoke 'nginx:restart'
  end
end
于 2014-10-13T12:21:29.457 に答える