LoginSignup
5
6

More than 3 years have passed since last update.

WindowsでUbuntu on WSLにAWS CLI、CloudMapperをインストール

Posted at

「Windows Subsystem for Linux上のUbuntu上のAWS CLIとCloudMapper」の構築メモです。やったのは下記。

  1. Windows 10でWSL(Windows Subsystem for Linux)を有効化してUbuntuインストール(実際にはRubyの時に実施済み)
  2. Ubuntu上でpip3とpipenvインストール
  3. AWS CLIとCloudMapperをインストール
  4. CloudMapperのデモ動作の確認
  5. AWS CLIを設定してCloudMapperを実行

AWS上の既存システムを大まかに把握したくて、AWS CLIでVPCを起点にリストアップしたらいいんじゃないか、CloudMapperまで行けたらなおいいんじゃないかと思って試行しました。

Windows 10上にUbuntuを導入

【WSL入門】第1回 Windows 10標準Linux環境WSLを始めよう:ITの教室 - @IT」の「まずはWSLとディストリビューションをインストールしよう」の項に従って、以下を行います。

  1. [コントロールパネル]-[アプリ]-[プログラムと機能]-[Windowsの機能]ダイアログを開き、[Windowsの機能の有効化または無効化]をクリックしてダイアログを開き、そこで「Windows Subsystem for Linux」にチェックを入れる。再起動が要求されるので、再起動を実行すること。
  2. Microsoft Storeを開き、「Ubuntu」を検索してインストールする
  3. 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 updatesudo 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 IDAWS Secret Access Key … 「AWS CLI のかんたん設定」の「IAMユーザーのアクセスキーIDおよびシークレットアクセスキーを取得するには」に沿って取得してください。
  • Default region name … 「AWSのリージョンとエンドポイント」を参照して、任意の地域のRegionを指定してください。最寄りのap-northeast-1(東京)とかほとんどのAWSサービスが利用できるus-east-1(バージニア北部)とかでいいんじゃないかと思います。
  • Default output formatjson(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によるインストール方法を採りました。

この他に、全般に以下を参考にしました。これらを参考に試行した範囲内について、手順をまとめなおしたものです。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6