[PYTHON] Generieren Sie OCI-Architekturdiagramme mithilfe von Diagrammen

Was sind Diagramme?

Diagrams ist ein OSS, das Dateien für verschiedene Architekturdiagramme generiert, indem Code in Python geschrieben wird. Die Version zum Zeitpunkt der Veröffentlichung dieses Artikels ist 0.6.2.

Es ist möglich, Architekturdiagramme von lokalen, Kubernetes, AWS, Azure, GCP, Alibaba Cloud sowie Oracle Cloud sowie Architekturdiagramme zu erstellen, die diese mischen. Dieser Artikel basiert auf OCI, aber die grundlegende Verwendung ist für andere Architekturdiagramme als OCI dieselbe. Nur die zu importierenden Pakete unterscheiden sich. Das generierte Architekturdiagramm unterscheidet sich von dem verschiedener Cloud-Standards, aber ich denke, dass es möglich ist, das Versionsmanagement des Architekturdiagramms basierend auf "Diagramm als Code" zu realisieren, das auch auf der ursprünglichen Site gesungen wird. Die Lizenz ist eine MIT-Lizenz.

Diagrammseite GitHub

Einführung von Diagrammen

Einführung von Graphviz

Diagramme basieren auf einem OSS namens Graphviz, um Diagramme darzustellen. Um Diagramme verwenden zu können, müssen Sie zuerst Graphviz installieren. Wenn Sie Homebrew auf Ihrem Mac verwenden, können Sie es mit "Brew Install Graph Viz" installieren. Laden Sie unter Windows die Software von der Graphviz-Site herunter und installieren Sie sie. Übergeben Sie den Pfad außerdem an den Installationspfad \ bin.

Einführung von Diagrammen

Es kann durch "Pip Install Diagrams" in der Umgebung von Python3.6 oder höher installiert werden.

Ausführungsbeispiel und Erklärung

Ausgabebeispiel eines Architekturdiagramms

Dieses Mal werde ich das folgende Beispiel ausgeben. Wie im Beispiel ist auch Japanisch verfügbar. screenshot_20200224_124458.png

Codierungsprobe

sample.py


from diagrams import Cluster, Diagram
from diagrams.oci.compute import Vm as VM
from diagrams.oci.database import Databaseservice as DBCS
from diagrams.oci.network import Loadbalance as LB, Drg as DRG
from diagrams.oci.connectivity import Fastconnect as FC

with Diagram("OCI-Beispielarchitekturdiagramm", outformat="pdf", filename="oci_sample", show=False):
    with Cluster("Sample VCN"):
        drg = DRG("DRG")
        with Cluster("Private Subnet"):
            lb = LB("Load Balancer")
            ap = [VM("Application\nServer2"), VM("Application\nServer1")]
            db = DBCS("Database Server")
    FC("FastConnect") >> drg >> lb >> ap >> db

Basiskonzept

Diagramme haben die Grundkonzepte Diagramm, Knoten und Cluster. Diagram Eine Klasse von Architekturdiagrammen. Da die Diagram-Klasse die with-Anweisung unterstützt, kann sie wie ein Beispiel beschrieben werden. Unten finden Sie eine Beschreibung der Beispielquellenargumente.

--name: Das erste Argument. Der Argumentname wird im Beispielcode weggelassen. Geben Sie den Titel des Diagramms an. --outformat: Geben Sie das Format der Ausgabedatei an. Wenn nicht angegeben, ist der Standardwert png. Außerdem unterstützt es jpg, svg und pdf. --filen: Geben Sie den Namen der Ausgabedatei an. Wenn nicht angegeben, ist der Standardwert der in Kleinbuchstaben konvertierte Figurentitel. --show: Verwenden Sie bool, um anzugeben, ob die Ausgabedatei im Standard-Viewer angezeigt werden soll. Der Standardwert ist True.

Die folgenden Argumente können zusätzlich zu den im Beispiel angegebenen angegeben werden.

--direction: Geben Sie die Richtung des Durchflusses an. Die folgenden 4 Typen können angegeben werden. --LR: Von links nach rechts (Standard)

Node Eine Klasse von Knoten (Instanzen, Dienste usw.). Im Beispieldiagramm gelten die Teile "DRG" oder "Database Server". Der Objektname des Knotens hat das Format "provider.resource type.name". Eine Liste der Knoten finden Sie unter hier. Das einzige Argument ist label. --label: Der Argumentname wird im Beispielcode weggelassen. Geben Sie den Titel des Knotens an.

Cluster Eine Klasse, die Knoten gruppiert. In der Beispielabbildung werden Cluster zur Darstellung von VCNs und Subnetzen verwendet. Es ist auch möglich, Cluster wie in der Beispielabbildung gezeigt zu verschachteln. Die Anzahl der Verschachtelungsebenen ist nicht besonders begrenzt. Es ist auch möglich, mehrere Cluster in derselben Hierarchie anzuzeigen. Unten finden Sie eine Beschreibung der Argumente. --label: Erstes Argument. Der Argumentname wird im Beispielcode weggelassen. Geben Sie den Titel der Gruppierung an. Wenn nicht angegeben, wird "Cluster" angezeigt. --direction: Entspricht dem Richtungsargument von Diagram.

Codierungsfluss

Erstellen Sie einfach eine Instanz von Node, die in der with-Anweisung der Diagram-Klasse angezeigt werden soll, ordnen Sie sie in der Anzeigereihenfolge an und geben Sie die Richtung der Verbindungslinie zwischen den Nodes an. Geben Sie den Cluster nach Bedarf an, und die zum Cluster gehörenden Knoten werden im Cluster mit Anweisung erstellt. Es gibt drei Arten von Linienrichtungen:

Schließlich

Wenn Sie mit Python vertraut sind, werden Sie es wahrscheinlich nach einer Weile verstehen, wenn Sie sich das Codierungsbeispiel ansehen, mit Ausnahme der Argumenterklärungen. Zum Zeitpunkt des Schreibens des Artikels scheint die Abdeckung der unterstützten Dienste etwas schwach zu sein, aber Diagramme werden aktiv aktualisiert und werden sich voraussichtlich weiterentwickeln.

Recommended Posts

Generieren Sie OCI-Architekturdiagramme mithilfe von Diagrammen
Generieren Sie ein Docker-Image mit Fabric
Generieren Sie QR-Code mit Pythons "qrcode"