AWSでは容易にスケールアウトが出来るためインスタンスを多く立ち上げがちになりますが、インスタンスが多ければ設定の検証作業などが大変です。
そこで、複数サーバを効率よく設定出来るようParallel ssh(pssh)を試してみました。
インストールは簡単です。
RPMforgeリポジトリからyumコマンドでインストールできます。
※RPMforgeに関してはCentOS 6.0にepelとremiとrpmforgeのリポジトリを追加の記事を参照下さい
# yum -y install pssh
次に接続先ホスト一覧ファイルを用意します。
# cat hosts.txt 10.0.0.166 10.0.0.167
下記のように利用することができます
pssh -h ホスト一覧ファイル -l ユーザー名 -A -i コマンド
※”-A”オプションはパスワードの入力を要求します。
実際にファイルを作成してみると下記のようになります。
# pssh -h hosts.txt -l suzuki -A -i touch test.txt Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 12:52:17 [SUCCESS] 10.0.0.166 Stderr: Warning: Permanently added '10.0.0.166' (RSA) to the list of known hosts. [2] 12:52:17 [SUCCESS] 10.0.0.167 Stderr: Warning: Permanently added '10.0.0.167' (RSA) to the list of known hosts.
そしてディレクトリを確認すると、次のようにファイルが作成されていることがわかります。
# pssh -h hosts.txt -l suzuki -A -i ls -la Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 12:52:24 [SUCCESS] 10.0.0.167 合計 28 drwx------ 3 suzuki suzuki 4096 9月 19 12:52 2012 . drwxr-xr-x. 3 root root 4096 9月 19 12:42 2012 .. -rw------- 1 suzuki suzuki 260 9月 19 12:49 2012 .bash_history -rw-r--r-- 1 suzuki suzuki 18 5月 11 03:45 2012 .bash_logout -rw-r--r-- 1 suzuki suzuki 176 5月 11 03:45 2012 .bash_profile -rw-r--r-- 1 suzuki suzuki 124 5月 11 03:45 2012 .bashrc drwx------ 2 suzuki suzuki 4096 9月 19 12:47 2012 .ssh -rw-rw-r-- 1 suzuki suzuki 0 9月 19 12:52 2012 test.txt Stderr: Warning: Permanently added '10.0.0.167' (RSA) to the list of known hosts. [2] 12:52:24 [SUCCESS] 10.0.0.166 合計 20 drwx------ 2 suzuki suzuki 4096 9月 19 12:52 2012 . drwxr-xr-x. 3 root root 4096 9月 19 12:45 2012 .. -rw-r--r-- 1 suzuki suzuki 18 5月 11 03:45 2012 .bash_logout -rw-r--r-- 1 suzuki suzuki 176 5月 11 03:45 2012 .bash_profile -rw-r--r-- 1 suzuki suzuki 124 5月 11 03:45 2012 .bashrc -rw-rw-r-- 1 suzuki suzuki 0 9月 19 12:52 2012 test.txt Stderr: Warning: Permanently added '10.0.0.166' (RSA) to the list of known hosts.
AWS APIと組み合わせることで、タグがついたインスタンスに対して一斉にコマンドを実行することができるかと思います。