ちょっと話題の記事

csshXを使ってリモートホストの一括操作を行う

2012.12.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンソールの一括操作がしたい

先日、クラスタリングしているAWS上のWEBサーバについてちょっとした設定変更が必要になり、 ちまちまとsshログイン→viで修正を繰り返していたのですが、修正頻度とインスタンス数が増えてきて面倒になってきました。 クラスタリングするインスタンス数が10個くらいになり、全部のサーバに修正ファイルをアップロードしなおしたり、 アプリケーションの再起動したりする手間が一気にふえてどうしようと思っていた頃、 「いいアプリがあるよ〜」と教えてもらったのが、今回ご紹介するcsshXです。

csshX このアプリケーションはMac用のアプリケーションで、指定した複数のリモートホストに対して一括してログインし、 すべての端末に対して同じコマンドを実行できます。 今回はAWSの複数のサーバにSSHでログインしていろいろやるための手順をご紹介します。 ※各サーバにはsshですでに接続できる前提

1.csshXのインストール

まずはcsshXをインストールしましょう。 Macでのインストールはhomebrewで簡単にできます。

% brew install csshx

sshのconfigファイルを修正

ログインするために-iオプションでキーファイルを指定したり、ユーザー名を指定したりしてログインしている場合、 configファイルに設定を記述して余計なオプションを指定せずログインできるようにします。 ~/.ssh/configファイルに下記のような記述を行いましょう。 ※キーファイルをmyKey.pemと仮定.

Host server_01
    User            ec2-user
    HostName        <AWSホスト名>
    IdentityFile    ~/.ssh/myKey.pem
#以下、一括ログインしたい分だけ設定情報の記述
Host server_02
・・・
Host server_03
・・・

これで、次のようにsshコマンドを実行してAWSサーバにログインしていた場合、

% ssh -i ~/.ssh/myKey.pem ec2-user@<AWSホスト名>

簡単な指定でsshログインが実行できるようになりました。

% ssh server_01

3.csshX実行

あとはcsshXコマンドで複数サーバに一括してログインするだけです。 csshXコマンドの後にスペース区切りで先ほどconfigファイルに設定したホスト名を記述します。

% csshX server_01 server_02 ・・・・・・・・・

設定情報に問題がなければ、下記画像のように指定した分だけterminalが起動します。 画面下の赤いウィンドウにフォーカスし、何かコマンドを入力すれば、各コンソールで同じようにコマンドが入力されます。 また、個別のコンソールにフォーカスしてコマンドを入力することも可能です。 terminal

詳細なマニュアルについては下記リンクをご確認ください。 http://code.google.com/p/csshx/wiki/ManualM

まとめ

今回はコンソールを一括操作するためのツール、csshXの紹介でした。 topで各サーバの負荷を確認したり、設定ファイルの一括変更とかが簡単にできて便利ですね。