0
Help us understand the problem. What are the problem?

posted at

updated at

tsm (Session ManagerでEC2インスタンスに同時接続して同時操作するツール)を作った

概要

掲題の通りです。
tsmというSession Managerで複数台のEC2インスタンスへ同時接続して同時操作するツールを作りました。
(Tmux Session Managerの略)

MITライセンスです。

デモ

demo.gif

モチベーション

  • Session Managerでの接続をもっと簡単にしたい(インスタンスIDを何度も調べたくない)
  • 「SSHで複数台に同時接続」という体験をSession Managerでも再現したい

仕組み

  • awscliで対象のインスタンスを絞り込む
  • tmuxのウィンドウを複製しつつ、ssm start-sessionを繰り返す

使い方

迷ったらtsm -hもしくはtsm --helpをご覧ください。以下、機能のご紹介です。

リスト機能

tsm -lもしくはtsm --listで、存在するEC2のインスタンスIDとNameを取得します。

裏ではawscliを呼び出しており、-p/--profile-r/--regionの指定で、権限やリージョンを切り替えられます。

$ tsm -l
i-076a3c31dbf0af073	MyServer
i-0b55c94fbcedc0863	MyServer
i-0325abf52cb86ad50	MyServer2

$ tsm -l  -p default -r ap-northeast-1
i-076a3c31dbf0af073	MyServer
i-0b55c94fbcedc0863	MyServer
i-0325abf52cb86ad50	MyServer2

同時接続機能

tsmの引数にNameもしくはインスタンスIDを渡すことでそれに接続します。

# Name=MyServerのインスタンスに接続します。Nameに一致するインスタンスが複数ある場合は、そのすべてに接続します。
$ tsm MyServer

# NameとインスタンスIDは混在できます
$ tsm MyServer i-0325abf52cb86ad50

# もちろん、複数のNameを指定することも可能です
$ tsm MyServer MyServer2 #...

冒頭のデモが、実際に接続した時の様子です。

その他

-o/--optionsで指定した文字列は、そのままaws ssm start-sessionにオプションとして渡されます。
tsmを使いつつ、追加で--reasonなどを指定することも可能です。

もう少し良くしたいところ

  • 存在しないName / インスタンスIDが指定された時の挙動
  • インストール手順

さいごに

必要なIAM権限など、READMEの方にも色々書きました。
興味を持ってくださった方は、ぜひリポジトリの方もご覧ください。

star / issue / pr などリアクションをいただけると小躍りして喜びます。

謝辞

特に次の記事が参考になりました。ありがとうございます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?