16

ファブリックを使用してアプリケーションのデプロイを自動化しようとしています。

アプリケーションコードはGitHubでホストされており、新しいバージョンのロールアウトは非常に簡単です。「gitpull」を実行するだけです。アプリケーションは100台のサーバーでホストされているため、展開を自動化したいと思います。Fabfile.py:

def deploy():
  code_path = '/home/myuser/myapp'
  with cd(code_path):
    run('git pull')
    run('git submodule update --init --recursive')

問題は、すべてのgitコマンドでpromtを取得することですEnter passphrase for key '/home/myuser/.ssh/id_rsa::

パスフレーズを自動的に入力する方法はありますか?すべてのサーバーで同じであり、sudoパスワードと同じです

私はライブラリを期待しようとしましたが、それを行うためのより良い(つまり標準的な)方法があるかどうか疑問に思っています。

4

3 に答える 3

13

sshキーエージェントを使用して、エージェント転送を使用することもできます。常にキーにパスワードを設定してください。Githubには、これを利用する方法に関する優れたドキュメントがあります

ファブリックには、エージェント転送機能も備わっているはずです。いくつかのコーナーケースで問題が発生しましたが、問題が解決するまでの回避策として、明示的なlocal('ssh -A ...)を使用して問題を回避しました。

于 2012-09-13T23:52:05.060 に答える
1

受け入れられた回答に記載されているssh-aget転送が望ましい解決策であると思いますが(うまくいく場合)、Fabric自体によって提供される代替手段があります:
Fabricには独自の「パスワード」設定オプション(つまりenv.passwordエントリ)があります。env.passwordドキュメントを参照)を設定すると、パスフレーズ(およびsudo passwod)を自動的に入力するファブリックを作成できます。

パスワード

デフォルト:None

リモートホストに接続するとき、および/またはsudoプロンプトに応答するときにSSHレイヤーによって使用されるデフォルトのパスワード。

 

次のいずれかのオプションでパスワードを設定できます

  • env.password = 'PASSWORD'「fabfile.py」内のコードで直接使用し、
  • コマンドラインで、コマンドのオプションとして、または(ドキュメントfab)を使用します。-p PASSWORD--password=PASSWORD
  • 別のオプションとして、各コマンドの前にロードされる(ドキュメントpasswod=PASSWORD)に行を入れることができます。このオプションを使用する場合、コマンドラインオプションもコード変更も必要ありません。~/.fabricrcfab
于 2016-08-20T20:30:28.203 に答える
-9

キーを作成するときにパスフレーズを使用しないでください。Enterキーを押してから、もう一度押して確認します。複数のキーを持つこともできます。パスワードのあるものとないものがあります。

于 2012-09-13T14:48:58.357 に答える