読者です 読者をやめる 読者になる 読者になる

Masteries

技術的なことや仕事に関することを書いていきます.

Mackerelを使って踏み台サーバを更に便利にしてみた話

この記事は, Mackerel Advent Calendar 2016の19日目の記事です.

「踏み台サーバ」とMackerel

以前, 「サーバにログインした時に任意のメッセージを表示する 〜Mackerelで管理しているホスト一覧を出す〜」という記事を書いたことがあります.

papix.hatenablog.com

この記事では, いわゆる「踏み台サーバ」にログインしたタイミングで, MackerelのAPIを使って「踏み台サーバ」に紐づくサービスのホスト一覧を取得して, 次のように表示してあげる便利! というTips? を紹介しました.

-----------------------------------------------------------------
    My Service Host Information
-----------------------------------------------------------------
App
        10.0.xxx.xxx (instance-size) ... working
        10.0.xxx.xxx (instance-size) ... working
                      :
                      :
-----------------------------------------------------------------

今回もまたまた小さいTipsなのですが, これを改良(?)する機会があったので, そのお話をしたいと思います.

IPアドレスをちまちま入力するのは面倒じゃないですか?

...と思った訳です.

ここから, 実際に各サーバに接続しようとすると, ssh 10.0.xxx.xxxのように, 手動でIPアドレスを入力していく必要があります. ちょっと面倒ですし, 例えば10.0.123.456とするべきところを, 10.0.124.456とタイポしてしまうことも多々ありました.

補完を効かせたい!

...と思うのは, 自然なことだと思います.

やり方はいろいろありますが, 今回は「任意のサーバに接続するコマンド」を用意して, これを補完させるというアプローチを取りました.

具体的には, 「ホストの一覧を表示」するスクリプトの中で, ホストごとに次のようなファイルを生成するようにします.

#!/bin/sh
ssh [user]@[ip address]

これを, 例えば/usr/local/bin/ssh/[ip address]というファイルに設置して, 実行権限を与えた後, /usr/local/bin/sshにパスを通せば良いでしょう.

なお, Mackerelで管理しているサーバが入れ替わるなどしてIPアドレスが使われなくなる事は多々あると思うので, 「ホストの一覧を表示」するスクリプトが実行される度に/usr/local/bin/sshの中に存在するファイルを全て削除して, 都度生成しなおすようにしています.

結果

こうすることによって, 例えば「踏み台サーバ」から10.0.123.456というホストに接続したいのであれば, 10.0.123.456とタイプするだけで接続することができるようになりました.

更に, 10.0.辺りまで入力して「TAB」キーを押せば, よしなに補完してくれるので, 「踏み台サーバ」から目的のサーバに移動するのが非常に簡単になりました.

非常に細かいTipsではあるのですが, チームメイトからの評判? は非常に良くて, 便利だと思ったので紹介させて頂いた次第です.