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を使って自動で画像更新するようにしている方もいてこれはとても良さそう 。