「CloudMapper」を試してみた


AWSで環境構築してみたものの、自分が設計した通りの構成図になっているか不安だったので、ちょうどそこにcloudmapperなるものがオープンソース化されたということなので、試してみました。
ここに記載されている内容は主に
https://github.com/duo-labs/cloudmapper/blob/master/README.md
を参考にしています

環境

macOS High Sierra ver10.13.3
python3のインストール済み

cloudmapperのインストール

$ git clone https://github.com/duo-labs/cloudmapper.git
$ cd $_

必要なツール等をインストール

$ brew install autoconf automake libtool jq

python環境での実行なのでvirtualenvを使用

$ pip3 install --upgrade pip
$ pip3 install virtualenv
#### 以下、cloudmapperディレクトリ配下で実行
$ virtualenv venv
$ source venv/bin/activate
$ pip3 install -r requirements.txt

これでとりあえずは起動できるところまできました

demoファイルで実行してみる

$ python cloudmapper.py prepare --config config.json.demo --account demo
$ python cloudmapper.py serve

ブラウザで確認 http://127.0.0.1:8000/

表示されたら動作としてはOKです

ではいよいよ、自分で構築したAWS環境のネットワーク図を作成します

configファイルの作成

$ cp config.json.demo config.json
config.json

{  "accounts":
    [
        {"id": "123456789012", "name": "aws_cloudmapper", "default": true}
    ],
    "cidrs":
    {
        "1.1.1.1/32": {"name": "SF Office"},
        "2.2.2.2/28": {"name": "NY Office"}
    }
}

nameの部分のみを適当に変えます

cloudmapper専用のポリシーを作成

cloudmapperが対象のAWSアカウントにアクセスが可能な状態にする必要があります

AWSコンソールから「IAM」→「ポリシー」→「ポリシーの作成」に移動します

ポリシーの作成画面でJSONを選択して以下の内容で作成します
ポリシー名はcloudmapper-readonlyにしました(好きな命名にしてください)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": [
                "ec2:DescribeRegions",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcPeeringConnections",
                "ec2:DescribeInstances",
                "ec2:DescribeNetworkInterfaces",
                "rds:DescribeDBInstances",
                "elasticloadbalancing:DescribeLoadBalancers"
            ]
        }
    ]
}

IAMユーザーの作成

上記で作成したcloudmapper-readonly権限をもったIAMユーザーを作成します。
発行されたアクセスキーIDとシークレットキーは次のステップで使用するので、保管しておいてください

~/.aws/configの設定

~/.aws/config
[profile cloudmapper]
output = json
region = ap-northeast-1

~/.aws/credentialsの設定

先ほど作成したIAMユーザーのkeyを設定

~/.aws/credentials
[cloudmapper]
aws_access_key_id = ****************
aws_secret_access_key = *******************************

これでcloudmapperがAWSにアクセス可能となります

ネットワーク構成図を作成

さて、いよいよ自分で構築したAWS環境の構成図を作成したと思います

githubからインストールしたcloudmapperディレクトリに移動します。そしてAWSから構築した環境の情報を取得します。

$ cd ~/cloudmapper
$ source venv/bin/activate
(venv) $ ./collect_data.sh --account aws_cloudmapper --profile cloudmapper

無事取得されたらaws_cloudmapperディレクトリが作成されます

そしていよいよネットワーク構成図を出力します

(venv) $ python cloudmapper.py prepare --account aws_cloudmapper
$ python cloudmapper.py serve

ブラウザで確認 http://127.0.0.1:8000/

表示されたら成功です。

簡単ではありますが、以上となります。