Amazon LinuxでParallel SSH Toolsを使う
こんにちは。
サーバの管理台数が増えてくると設定の自動化などをしたくなって来ますが、複数のサーバに対して同じコマンドを実行したくなったりもします。
こんな要望を叶えるツールはいくつかあるのですが、今回はParallel SSH Toolsを使ってみます。
インストール
Parallel SSH Toolsのインストールに必要なパッケージをインストールします。
$ sudo yum install python-setuptools
以下の手順でダウンロード〜インストールをします。
$ cd src/ $ curl -LO https://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz $ tar zxvf pssh-2.3.1.tar.gz $ cd pssh-2.3.1 $ sudo python setup.py install
設定
接続するホストのリストを作成します。
$ cd ~ $ echo -e "host1\nhost2" > ~/.ssh/pssh-list.txt
今回は対象サーバに公開鍵認証方式を使うので、以下のような設定をします。
$ cat > ~/.ssh/config <<'EOF' # Parallel SSH Host host1 HostName 10.0.1.20 IdentityFile ~/.ssh/okochangkey.pem Host host2 HostName 10.0.1.40 IdentityFile ~/.ssh/okochangkey.pem EOF $ chmod 600 ~/.ssh/config
実行する
ヘルプを見てオプションを確認します。(以下は使いそうなものを抜粋しています)
- -hオプション
- 対象ホストを記載したファイルを指定
- -lオプション
- コマンドを実行するユーザーを指定
- -iオプション
- エラーの内容をサーバ毎にインラインで出力する
$ pssh --help -h HOST_FILE, --hosts=HOST_FILE hosts file (each line "[user@]host[:port]") -l USER, --user=USER username (OPTIONAL) -i, --inline inline aggregated output and error for each server
以下のように実行します。
$ pssh -h .ssh/pssh-list.txt -l okochang -i uptime [1] 01:40:47 [SUCCESS] host1 01:40:47 up 46 min, 0 users, load average: 0.00, 0.00, 0.00 [2] 01:40:47 [SUCCESS] host2 01:40:47 up 42 min, 0 users, load average: 0.00, 0.00, 0.00
まとめ
秘密鍵にパスフレーズが設定されていると実行出来ないのが悩ましかったです。
とはいえ、scpとかを複数ホストに一括実行したりも出来るし、データ収集とかとか色々使えるシーンはありそう。