okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

Amazon LinuxでParallel SSH Toolsを使う

こんにちは。
サーバの管理台数が増えてくると設定の自動化などをしたくなって来ますが、複数のサーバに対して同じコマンドを実行したくなったりもします。
こんな要望を叶えるツールはいくつかあるのですが、今回はParallel SSH Toolsを使ってみます。

環境

今回テストする環境は以下のような感じです。

f:id:okochang:20130331124846p:plain

インストール

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とかを複数ホストに一括実行したりも出来るし、データ収集とかとか色々使えるシーンはありそう。