Ich habe draw.io verwendet, um das Konfigurationsdiagramm zu zeichnen, aber ich habe gehört, dass es mit Code unter Verwendung eines Tools namens Diagramme gezeichnet werden kann, also habe ich es versucht.
├── Dockerfile
└── test.py
In Documentation ist Python3.6 oder höher und Graphviz installiert. Seitdem habe ich so ein Dockerfile erstellt. (Ich wollte dieses Mal Alpin verwenden, also habe ich es mit Alpin erstellt.)
FROM python:3.8-alpine
WORKDIR /app
RUN apk add --update --no-cache \
graphviz \
ttf-freefont \
curl \
bash
#Schriftart hinzufügen
RUN curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \
&& mkdir -p /usr/share/fonts/noto \
&& unzip NotoSansCJKjp-hinted.zip -d /usr/share/fonts/noto/ \
&& fc-cache -fv \
&& rm NotoSansCJKjp-hinted.zip
RUN pip install diagrams
Erstellen Sie danach die erstellte Docker-Datei. Fühlen Sie sich frei zu markieren! Nennen wir es diesmal "Diagramme".
$ docker build -t diagrams .
Erstellen Sie die Datei unter Bezugnahme auf das offizielle Dokument.
from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import ElastiCache, Aurora
from diagrams.aws.network import ELB
from diagrams.aws.network import Route53
with Diagram("Test", show=False):
dns = Route53("dns")
lb = ELB("ALB")
api = ECS("API")
redis = ElastiCache("redis")
with Cluster("DB Cluster"):
db_test = Aurora("test")
db_test - [Aurora("test ro")]
dns >> lb >> api
api >> db_test
api >> redis
db_test >> redis
Da wir diesmal Docker verwenden, starten Sie den Container wie folgt und führen Sie den Befehl aus.
docker run --rm -v `pwd`:/app diagrams python test.py
Nach der Ausführung wird die png
-Datei hinzugefügt.
├── Dockerfile
├── test.png
└── test.py
Wenn Sie nur ein Konfigurationsdiagramm zeichnen, ist draw.io in Ordnung, aber ich denke, es ist ein guter Punkt, es mit Git als Code verwalten zu können. Wenn ich jedoch nicht das gewünschte Image hatte oder wenn ich komplizierte Dinge zeichnen wollte (AZ, ECS-Aufgaben usw.), war es schwierig zu verwenden, daher denke ich, dass ich mit zukünftigen Updates verschiedene Dinge ausprobieren werde.
Recommended Posts