「Windows Subsystem for Linux上のUbuntu上のAWS CLIとCloudMapper」の構築メモです。やったのは下記。
- Windows 10でWSL(Windows Subsystem for Linux)を有効化してUbuntuインストール(実際にはRubyの時に実施済み)
- Ubuntu上でpip3とpipenvインストール
- AWS CLIとCloudMapperをインストール
- CloudMapperのデモ動作の確認
- AWS CLIを設定してCloudMapperを実行
AWS上の既存システムを大まかに把握したくて、AWS CLIでVPCを起点にリストアップしたらいいんじゃないか、CloudMapperまで行けたらなおいいんじゃないかと思って試行しました。
Windows 10上にUbuntuを導入
「【WSL入門】第1回 Windows 10標準Linux環境WSLを始めよう:ITの教室 - @IT」の「まずはWSLとディストリビューションをインストールしよう」の項に従って、以下を行います。
- [コントロールパネル]-[アプリ]-[プログラムと機能]-[Windowsの機能]ダイアログを開き、[Windowsの機能の有効化または無効化]をクリックしてダイアログを開き、そこで「Windows Subsystem for Linux」にチェックを入れる。再起動が要求されるので、再起動を実行すること。
- Microsoft Storeを開き、「Ubuntu」を検索してインストールする
- Ubuntuが起動したら、ユーザー作成のため、ユーザー名とパスワードを入力する。
ただし実際にはRubyの時に実施済みの環境を使っているので、今回は改めてやるのではなくそのままその環境を使うことにしました。
Ubuntu上でpip3とpipenvインストール
AWS CLIのインストール手順でPythonのパッケージ管理システムであるpip3を、CloudMapperのインストール手順でPythonの環境管理システムであるpipenv(とvirtualenv)が必要になるので、インストールしておきます。
Ubuntu on WSLで以下のコマンドを実行して、Pythonがインストール済みであることを確認します。
$ python3 --version
Python 3.6.7
次にpip3ですが、この時点で実行してみると以下のように、コマンドがないことと、インストール方法を示すメッセージが表示されます。
$ pip3 --version
Command 'pip3' not found, but can be installed with:
sudo apt install python3-pip
上記コマンドでのインストール前に、sudo apt update
とsudo apt upgrade
をしておきます。pip3のインストールに必要な、python3-distupgrade
などがインストールされます。
$ sudo apt update
(略)
13 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ sudo apt upgrade
(略)
Get:7 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-distupgrade all 1:18.04.33 [107 kB]
(略)
以下のコマンドを実行して、pip3をインストールします。これは次のpipenvのインストールに使用します(以降のCloudMapperのインストールにも、pipenv内で使用されます)。
$ sudo apt install python3-pip
「Pragmatic Installation of Pipenv」に従い、以下のコマンドを実行して、pipenvをインストールします。これはCloudMapperのインストールに使用します。この時、virtualenvも同時にインストールされます。
$ pip install --user pipenv
CloudMapperのインストール
「cloudmapper/README.md」の「Installation」の項を参照しながら、インストールを進めます。
まず以下を実行して、CloudMapperのソース一式を取得します。
$ git clone https://github.com/duo-labs/cloudmapper.git
依存ライブラリをインストールします。Ubuntu環境では、以下を実行して"build-essential"をインストールします。ただしRubyインストール時に実行済みだったので、今回インストールされるものはありませんでした。
$ sudo apt install build-essential
引き続き、以下を実行して、その他の依存ライブラリをインストールします。ここでAWS CLIもインストールされます。
$ sudo apt-get install autoconf automake libtool python3.7-dev python3-tk jq awscli
以下を実行して、CloudMapperをインストールします。
$ cd ~/cloudmapper
$ pipenv install --skip-lock
CloudMapperのデモの実行
「cloudmapper/README.md」の「Run with demo data」の項を参照しながら、デモデータで動かしてみます。
まず「Installation」の項の最後にある、以下を実行して、シェルを起動します。今後、CloudMapper関連の作業をするときは、同様にしてshellを開いて実施します。
$ cd ~/cloudmapper
$ pipenv shell
以下を実行して、データを取得・生成します。
$ python3 cloudmapper.py prepare --config config.json.demo --account demo
以下を実行して、このUbuntu環境の127.0.0.1
ではないIPアドレスを確認しておきます。
$ ifconfig | grep "inet "
以下を実行して、Webサーバーを起動します。READMEにはない--public
オプションを指定しているのは、Windows上のWebブラウザからアクセスできるようにするためです。これを指定しない場合、IPアドレス127.0.0.1、つまりUbuntu内のアクセスしか受け付けません。
$ python3 cloudmapper.py webserver --public
Windows上のブラウザから、http://(Ubuntuの127.0.0.1ではないIPアドレス):8000
にアクセスします。こちらと同じものが表示されれば、成功です。確認出来たら、[ctrl]+[c]
を押下して、CloudMapperのwebserverを止められます。
AWS CLIを設定してCloudMapperを実行
自分のAWS環境に対してCloudMapperを実行するには、まずAWS CLIの設定をしておく必要があります。未設定であれば、「AWS CLI のかんたん設定」に従って、以下のコマンドを実行します。
$ aws configure
以下を指定します。
-
AWS Access Key ID
とAWS Secret Access Key
… 「AWS CLI のかんたん設定」の「IAMユーザーのアクセスキーIDおよびシークレットアクセスキーを取得するには」に沿って取得してください。 -
Default region name
… 「AWSのリージョンとエンドポイント」を参照して、任意の地域のRegionを指定してください。最寄りのap-northeast-1
(東京)とかほとんどのAWSサービスが利用できるus-east-1(バージニア北部)とかでいいんじゃないかと思います。 -
Default output format
…json
(JSON文字列形式)、text
(タブ区切り文字列形式)、table
(罫線代わりの+|-
で装飾された表形式)のいずれかを指定します。特段の理由がなければjson
でいいと思います。
CloudMapper側の作業を行います。まず「CloudMapperのデモの実行」時と同様に、シェルを起動します。
$ cd ~/cloudmapper
$ pipenv shell
「cloudmapper/README.md」の「Generate config file」に従って、以下のコマンドで設定ファイルを作成します(引数については後述します)。
$ python cloudmapper.py configure add-account --config-file CONFIG_FILE --name NAME --id ID
上記コマンドの引数は、以下を指定します。
-
CONFIG_FILE
… 作成する設定ファイル名、例えばconfig.json
など。 -
NAME
… 情報取得対象につける任意の呼称、例えばMyService
など。 -
ID
… AmazonアカウントIDの12桁の数字。不明時はAWSアカウントIDの確認方法を参照してください。
設定ファイル作成が済んだら、「cloudmapper/README.md」の「Collect the data」に従って、以下のコマンドで対象環境の情報を取得します。NAME
は設定ファイルに登録したNAME
の値を指定します。
$ python3 cloudmapper.py collect --account NAME
この時点で、cloudmapper/account-data
の中に指定したNAME
のフォルダが作成され、AWS CLIの実行結果が格納されています。これをデモで見たようなWeb表示用のデータに反映します。NAME
は設定ファイルに登録したNAME
の値を指定します。
「Network visualizations」の「Prepare the data」に従って、以下のコマンドを実行します。
$ python3 cloudmapper.py prepare --account NAME
これでcloudmapper/web/data.json
が更新されます。でもデータでの動作確認時と同様に、Webサーバーを起動します。
$ python3 cloudmapper.py webserver --public
Windows上のブラウザから、http://(Ubuntuの127.0.0.1ではないIPアドレス):8000
にアクセスし、確認します。デモ環境ではなく、取得した環境のネットワーク図が表示されれば成功です。
参考
Windows 10でのWSLの有効化とUbuntuのインストールについては、以下を参照しました。
pip3、pipenvの構築では、以下を参照しました。
AWS CLI、Cloud Mapperのインストール、構築、実行は以下を参照しました。AWS CLIのインストールは、AWSの公式ドキュメントではpip3
を使う方法が提示されていますが、今回はCloudMapperのドキュメントにあるapt
によるインストール方法を採りました。
- AWS CLI のインストール - AWS Command Line Interface
- cloudmapper/README.md
- cloudmapper/Network visualizations
この他に、全般に以下を参考にしました。これらを参考に試行した範囲内について、手順をまとめなおしたものです。