解決策 1:
<オール>ファブリック
最初にタスクを定義します:
from fabric.api import *
@parallel
@hosts('192.168.3.118', '192.168.6.142')
def hostname():
run('hostname')
次に fab
経由で実行します コマンドライン ツール:
$ fab -f /path/to/.py/file hostname
[192.168.3.118] Executing task 'hostname'
[192.168.6.142] Executing task 'hostname'
[192.168.6.142] run: hostname
[192.168.3.118] run: hostname
[192.168.6.142] out: SVR040-6142
[192.168.3.118] out: SVR040-3118.localdomain
Done.
解決策 2:
Rundeck を見てみましょう - http://rundeck.org/
解決策 3:
Puppet や Chef などの構成管理システムを完全に独り占めしてインストールできます。実際に管理しようとしているノードの数について言及していないので、これはやり過ぎかもしれませんが、確かに、この方法で多くのマシンを集中管理できます。今は小さくても成長している場合は、大きくなる前に Chef などをセットアップすることもできます。
特定のノード セットに対してアドホック コマンドを実行する必要がある場合は、knife ssh 'roles:webserver' 'hostname'
のように実行できます。 (ナイフはシェフのコマンドラインツールです) hostname
を実行します webserver ロールを持つすべてのノードのコマンド。
解決策 4:
多くのホストで同じコマンドを並行して実行するには、shmux を好みます。
解決策 5:
私はスクリプトを使用してログインを自動化し (特に、ジャンブ ボックスを通過して chroot に入る必要があり、多くのパスワードを入力する必要があるため)、cssh の構成にいくつかの「微調整」を行いました。メイン スクリプト」を「サーバー名/エイリアス」を指定して bin フォルダーに配置すると、目的のサーバーと目的の場所に移動できます。
~/.clusterssh/config で、スクリプトを指すように「ssh」パラメーターを設定しました。また、「ssh_args」を無害な/偽の引数に設定する必要があります。これは、実際に空のままにした場合、cssh にデフォルトの引数リストがあるためです。デフォルトのリストは最終的にスクリプトになります。
したがって、スクリプト (各ウィンドウ/ターミナル内) は、この引数と cssh に指定された引数の 1 つを受け取ります。スクリプトは、指定されたサーバーのファイルから資格情報セットを復元し、場所に到達するために実行する必要がある手順を受け取ります。私が望むなら、それはそのすべてのデータで「expect コード」を呼び出します。
~/.clusterssh/config
ssh=/home/user/bin/qs.sh
ssh_args=-a
qs.sh
#!/bin/bash
export PATH=~/bin:$PATH
shift
case $1 in
q4|q5|q6|q7|q8|q9)
essh [email protected]$1
### essh it's some little bash script that does the things I said before and in the end it launches the expect
;;
q1|q2|q3)
essh [email protected]$1
;;
*)
echo "GOOH"
esac
だから私は通常、このようなものでそれを呼び出します
# cssh q4 q5 q6 q7
クラスターを持つ「クラスターエイリアス」でも動作しています「qAll q4 q5 q6 q7」 cssh qAllで呼び出すことができます
他の誰かの役に立てば幸いです。