i2csshで一括操作なはなし

この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。
こんにちは。遅れてきた新人takadaです。
サーバーワークスにjoinしてから、macを仕事で使い始めまして、mac歴と社歴が同じ1ヶ月半です。
macを使ってても、必ずモテるわけではないという真理を実感中です。
さて、AWS上のEC2インスタンスのOSに対して、sshで接続して一括で何らかの作業を行いたい場面が
結構あります。(ないですか? いやあることにしましょう。
ChefやAnsibleなど構成管理ツールが導入済みの環境ですと、あまり悩む必要はないんでしょうが、
ちょっと一時的に5台〜10台くらいのEC2インスタンスに同じ作業を行いたいという時に、使えるツールを探してみました。
調べてみますと、csshXというツールがmac界隈だと一般的に使われているようです。
ただこれ、mac標準の「Terminal.app」をベースに動作するため、普段「iTerm2」を使っている人にとっては、
ちょっと不便かもしれません。
さらに調べてみますと、iTerm2」の操作感をそのままに、sshで一括操作できるツールがありました。
その名も 
i2cssh です。 このツールRubyで作られているので、gemでのインストールになります。  
このコマンド、引数を渡したり、設定ファイルを作成することで、細かい設定を行うことができます。
今回は、実際に私が試した使い方をご紹介します。 私が実際に使うことになった条件は、このようなものでした。
  • 一括作業は一回きり
  • EC2インスタンスは、6台程度
  • 使用するssh秘密鍵は共通
まず、接続先ホストの一覧をテキストファイルで作成します。 接続先ホスト一覧のファイル(host.lst)
あとは、コマンドを実行するだけ。
sshの秘密鍵(private_key.pem)を"-Xi"オプションで、また、接続するユーザ名(ec2-user)を"-l"オプションで指定します。

最後に、接続先ホストを記載したファイル(host.lst)を"-f"オプションで指定します。 これで、指定した接続先にssh接続が行われ、下のように画面が分割されて表示されます。
気分はデイトレーラー。   接続直後は、右下の画面が選択されています。
これを一括操作するためには、以下のキーを押します。
⌘(command) + Shift + I(大文字アイ)
キー入力を行うと、確認のためのメッセージボックスが表示されますので、"OK"を押します。   すると、各画面の右上にアイコンが表示されますので、この状態で、キー入力すると、開いている画面すべてに同時に反映されます。   また、テキストファイルからコピーペーストも綺麗に反映してくれます。
(作業手順書などからのコピーに便利ですね。) 再度、個別に画面をしたい場合も、上記のキー操作で切り替えることができます。 ということで、今回はsshでの一括操作を行うi2csshをご紹介しました。
とても便利なツールですので、itermユーザの方は是非使ってみてください。 ちなみに、複数ターミナルでのコマンドの同時実行の機能は、tmuxのsynchronize-panesというオプションを使うことで実現できるようです。また、実行したいコマンドを渡して、同時にssh接続で実行してくれるParallelsshというツールもありますので、用途と環境にあわせて使っていくのが、よさげです。
  参考にさせていただいたサイト http://ikuwow.website/entry/i2cssh/

AWS運用自動化サービス「Cloud Automator」無料トライアルはこちらから

COMMENT ON FACEBOOK