8

以前は、それ3.0を行う方法がありました:

# ...
set :mysql_password, proc { Capistrano::CLI.password_prompt "Gimme remote database server password. Don't worry, I won't tell anyone: " }
# ...

namespace :db do
  desc 'Dump remote database'
  task :dump do
    run "mysqldump -u #{mysql_user} -p #{mysql_database} > ~/#{mysql_database}.sql" do |channel, stream, data|
      if data =~ /^Enter password:/
        channel.send_data "#{mysql_password}\n"
      end
    end
  end
end

パスワードの入力を求められますが、入力しても表示されず、ログと出力にその痕跡が残りません。

今、3.0私が見つけた唯一の方法として:

# ...

namespace :db do
  desc 'Dump remote database'
  task :dump do
    ask :mysql_password, nil
    on roles(:db) do
      execute "mysqldump -u#{fetch :mysql_user} -p#{fetch :mysql_password} #{fetch :mysql_database} > ~/#{fetch :mysql_database}.sql"
    end
  end
end

それは仕事をしますが、どこでもパスワードを明らかにします。

でパスワード プロンプトを表示するための安全な方法を見つけた人はいます3.0か? ありがとう!

4

2 に答える 2

2
# Capistrano >= 3.3.3 supports `echo: false`
ask :password, 'default', echo: false
server 'server.domain.com', user: 'ssh_user_name', port: 22, password: fetch(:password), roles: %w{web app db}

faq@capistranorb.com
@mattbrictson、capistrano/capistrano

于 2015-07-24T16:18:14.963 に答える
2

現在、noは、次のマイナー バージョン (3.2) にある可能性があります。

ask()前と同様に、入力をエコーし​​ないオプションがあれば便利ですCapistrano::CLI.password_prompt

...

いずれにせよ、それは 3.2 のものになります。

于 2014-03-24T13:57:04.373 に答える