Diagramsで構成図を描こう

eyecatch

Docker

Diagrams

これまではDraw.ioでインフラ構成図を書いていたが、更新履歴が残せなかったり配置をいろいろと考えることがあったが、Diagramsを使うとそのあたりから解放されそうだったので試してみた。

構成

実行環境はDockerで構築した。

.
├── Dockerfile
├── diagram_codes
│   └── sample.py
├── docker-compose.yml
└── images
    └── sample.png

Dockerfile

FROM python:3.9.5-buster

RUN apt-get update && \
    apt-get install -y graphviz

RUN pip install diagrams

RUN groupadd -r appgroup && useradd -r -g appgroup appuser
USER appuser

WORKDIR /home/appuser/app

docker-compose.yml

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    command: bash
    tty: true
    volumes:
      - .:/home/appuser/app

sample.py

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service", show=False, filename="images/sample"):
    ELB("lb") >> EC2("web") >> RDS("userdb")

実行

Dockerコンテナに対しpythonを実行する。

docker-compose up -d
docker-compose exec app python diagram_codes/sample.py

filenameで指定したimages配下にファイルが作成される。

Sample Image

かんたん。そしてGit管理できるので更新履歴も都度残せて良さそう。

業務のインフラ構成もDiagramsで管理していくことにする。

ひとりインフラだから正直どっちでもいいのだけど…

その他

サンプルではDiagramsの例しか記載してないが、Examplesを参考に各リソースをimportして配置することができる。

OnPremではFluentdやCircleCIなんかもあったのでいろいろできそう。

それでもなければカスタムでローカル画像を指定してインポートすることも可能っぽい。