Diagramsでインフラ構成図を書く

Diagramsでインフラ構成図を書く
公開日時

これまでインフラ構成図を書く時はDraw.ioというサービスを使っていたが、他の人と共同編集するのが手間で何とかしたいなと思っていた。

Draw.ioの場合、他の人が構成図を編集するには、まず自分がxmlをエクスポートしてから各自にインポートしてもらい、編集後、再度xmlをエクスポートしてもらう必要があった。

そんな時に、Pythonでインフラ構成図が書けるDiagramsの存在を知り、使ってみたらこれが非常に便利。

Examplesを参考に[[diagram.py]]として保存。

from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import ElastiCache, RDS
from diagrams.aws.network import ELB
from diagrams.aws.network import Route53

with Diagram("Clustered Web Services", show=False):
    dns = Route53("dns")
    lb = ELB("lb")

    with Cluster("Services"):
        svc_group = [ECS("web1"),
                     ECS("web2"),
                     ECS("web3")]

    with Cluster("DB Cluster"):
        db_master = RDS("mysql")

    redis = ElastiCache("redis")

    dns >> lb >> svc_group
    svc_group >> db_master
    svc_group >> redis

今回はAWSのインフラ構成図にしたがGCPやAzureにも対応しているとのこと。

あとは↓を実行するとインフラ構成図が画像で出力される。

python3 diagram.py

記法もシンプルなのでpythonをあまり知らなくても書けるのは良い。

そしてpythonコードなのでリポジトリ管理もできて複数人での編集も手軽になった。

ということで今後はDiagramsを使うことにしよう。

GitHub Actiosを使って自動で画像更新するようにしている方もいてこれはとても良さそう 。

Diagramsを使ってsystem architecture図をアップデートし続ける - hatappi.blog

参考


Related #tool

ExtraVolumeConfigでBluetooth音量を調整する

寝る前に最適な音量で音楽が聴けるようになった

GoogleFormからDayOneに記録する

IFTTTと組み合わせて記録できるようにした

herokuにブランチをpushする

branch_name:masterでpushする

知らぬ間にGoogleカレンダーにスパムイベントが登録されていた(Your Samsung is ready for Pickup)

Gmailから自動で予定を追加する機能を悪用したスパムらしい