はじめに
株式会社ビズリーチで、SREエンジニアとして勤務しているmassです。2017年4月に入社してから、HRMOS(ハーモス)採用管理というサービスのAWSのインフラを管理したり、アーキテクチャの設計・構築をしたりしています。
今回は、入社してから半年経ったら、いつのまにかサービスのネットワーク管理者になっていて、そこで発生した問題と、それを解決するのに非常に役立ったCloudMapperというOSSを紹介したいと思います。
対象読者
- AWSを利用していて、複雑なネットワーク構成を可視化したい方
- AWSを利用していて、普段あまり意識することのないネットワーク構成を視覚的に把握したい方
- NoOps!を実践したい方
対象環境
- AWS環境およびに環境に対して参照権限を保持していること
- 具体的な必要条件、およびに手順に関しては公式サイトを参照してください
発生した問題
私がネットワーク管理者を引き継いだ段階では、ネットワーク構成図が作成されておらず、以下の問題が発生していました。
-
ロードバランサーを止められない
- 用途不明のロードバランサーが存在したため、停止を検討した
- しかし、どのリソースから利用されているか見えず、不用意に停止できなかった
-
用途不明なEC2インスタンスの調査ができない
- AWSからメンテナンス通知が来た対象が用途不明なEC2インスタンスだった
- 停止を判断するためsshでインスタンスに入ろうとしたが、インスタンスへのssh経路を把握できず調査が難しかった
理論上はすべてのAWSリソースがコード管理されていれば、コードをもとにネットワーク構成図を作成することができます。しかし、HRMOS採用管理のインフラの中でも古いAWSリソースはコード管理されておらず、必要な情報を確認するにはAWSのコンソールにログインして一つひとつ情報を集める必要がありました。
ネットワーク構成図をどう作成しようとしたか
大前提として、手動でやったら負けと考えました。
手動での更新作業はミスや更新漏れが起きやすく、実際に使える有用な構成図を提供できないと考えたためです。特に、オンプレミスの場合はネットワーク構成をそれほど頻繁に変更しないので、手動でネットワーク構成図を作成するのが普通でしたが、 クラウドの場合はオンプレとは比較にならないほど短いスパンで構成変更していくので、それをすべて手動で反映していくのは現実的ではないと考えました。
そのため、自動で更新されるネットワーク構成図の作成という方向で進めることにしました。
そして、具体的な手段を探していた時に、CloudMapperというOSSを見つけたのです。
CloudMapperとは
CloudMapperとは、2018年2月に公開されたOSSで、READMEに記載された文章を日本語に大まかに訳すと以下の機能があると書いてあります。
- AWSの環境を解析して、ネットワーク構成図を生成するよ!
- ブラウザで表示できるよ!
- AWSのリソースを視覚化するのに役出つよ!
これを使えばネットワーク構成図の自動作成・更新が可能になると考えました。
実際に出来上がったサンプル見ると、非常に綺麗なネットワーク図ができていました。素晴らしい!
また、ブラウザ上の操作で、選択したインスタンス(以下画像では"Web2"インスタンス)について、設定値や繋がっているインスタンスに関する情報も参照できます(以下画像右側のウィンドウ)。