Fabricを使用してすべてのサーバーでコマンドを実行する

Fabricを使用してすべてのサーバーでコマンドを実行する

ここで尋ねるのか、他のスタック交換コミュニティから尋ねるのかわかりませんが、Python設定を使用してサーバーリストからいくつかの簡単なコマンドを実行しようとしています。

コマンドコード:

    from fabric.api import run
    def host_type():
      run('uname -s')

uname -sこれにより、以下を呼び出してすべてのLinuxサーバーでコマンドを実行します。

  $fab -H < ......Comma, separated , Servers , List , Here.....> host_type

これで問題は、実行中にユーザー/ルートパスワードを要求せずに結果を返すように実行/構成する方法です。いくつかのLinuxコマンドライントリックがあるかもしれませんが、覚えていません。

編集1:

さて、fabコマンドには-pオプションがありますが、サーバーごとにパスワードが異なるため、そのオプションは機能しない可能性があります。

答え1

これを行う方法は2つあります。バックエンドでFabric使用されるため、opensshパスワードのない接続を構成した場合は、何も設定する必要はなく、機能します。

別の方法も非常に簡単です。env変数を設定するだけです。

from fabric.state import env

env.user = "user"
env.password = "password"

env.colorize_errors = True
env.connection_attempts = 3
env.disable_known_hosts = True
env.skip_bad_hosts = True
env.parallel = False
env.linewise = True

これはトリックを行う必要があります。私は通常別のファイルに入れてインポ​​ートします。

PS:私は個人的に簡単な作業にparamikoどんなライブラリをFabric使うのが簡単だと思います。

関連情報