Masteries

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

サーバにログインした時に任意のメッセージを表示する 〜Mackerelで管理しているホスト一覧を出す〜

昨日に引き続き, 社内のQiita:Teamに書いた記事のサルベージです.

...で, 今回のネタですが, 早い話が, EC2インスタンスにログインした時に出てくる

Last login: Sun Jul 26 18:45:17 2015 from xxx.xxx.xxx.xxx

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/

こういうのを出す方法です. といっても方法は簡単で, /etc/motdにテキストを書いてあげればOK.

実際, EC2インスタンス上でcatを使って中身を見てみると...

$ cat /etc/motd

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/

こういう感じになっている次第です. ちなみに「motd」は「Message Of The Day」の略とのこと.

一方, サーバにログインした際に「動的なメッセージを表示したい」という場合, いくつか方法はありますが, 簡単なのは~/.bash_profileとか/etc/profileにメッセージを表示する為のコマンドを書く, という方法.

例えば, 今取り組んでいる某サービスのSSH踏み台サーバ(サービスが稼働しているサーバはVPC外から直接接続できないようにしていて, 必ずSSH踏み台サーバを経由しないといけないようになっている)では, WebService::Mackerelを利用してhostsというコマンドを実装しています(この辺りは, mkrコマンドでもうまく実装できそうな気がします. ...ちゃんと調べていないので何とも言えませんが...).

このコマンドを実行すると, 次のようにMackerel経由で現在稼働中のホストの一覧をホストのロール単位で取得し, 表示できるようにしています.

$ hosts
App
        10.0.xxx.xxx (instance-size) ... working
        10.0.xxx.xxx (instance-size) ... working
                      :
                      :

こいつをサーバにログイン時にも表示したいので, ec2-userの.bash_profileの冒頭に, 次のようなコードを書いておきました.

echo '-----------------------------------------------------------------'
echo '    My Service Host Information'
echo '-----------------------------------------------------------------'
~/bin/hosts
echo '-----------------------------------------------------------------'

これで, サーバにログインした際に, 現在某サービスで利用しているホストの一覧が出て非常に便利です.

Last login: Sun Jul 26 18:50:55 2015 from xxx.xxx.xxx.xxx

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
-----------------------------------------------------------------
    My Service Host Information
-----------------------------------------------------------------
App
        10.0.xxx.xxx (instance-size) ... working
        10.0.xxx.xxx (instance-size) ... working
                      :
                      :
-----------------------------------------------------------------

今取り組んでいる某サービスでは, 「ホストは使い捨てるもの」という考え方で, デプロイをする度にIPが変わるようになっています.

これまでは, SSH踏み台サーバにログインしてから, 面倒なことにブラウザでMackerelを見てIPを調べていたのですが, この仕組みによってIPアドレスを簡単に確認出来るようになって, 非常に捗っています.