[PYTHON] Ich habe Diagramm als Code (Diagramme) ausprobiert, mit dem der Konfigurationsdiagrammcode verwaltet werden kann

Versuchen Sie Diagramm als Code (Diagramme)

https://diagrams.mingrammer.com/

Normalerweise verwende ich Authoring-Tools wie Cacoo für das Konfigurationsdiagramm. Ich habe versucht zu sehen, wie viel ich mit einem Tool schreiben kann, das ein Konfigurationsdiagramm mit Python-Code zeichnen kann.

Fazit, Eindruck

――Da es einfach geschrieben werden kann, ist es gut, schnell ein neues System prototypisieren zu können, wenn es angepriesen wird. ――Die Lernkosten sind niedrig und Sie können mit dem Schreiben beginnen, sobald Sie mit Python vertraut sind.

Über die Umwelt

Betriebsanforderungen

Vorbereitungen

Erstellen Sie eine neue virtuelle Umgebung und installieren Sie Pakete darin. Dieses Verfahren ist optional.

python -m venv ~/envs/diagrams
source ~/envs/diagrams/bin/activate

Installation

https://diagrams.mingrammer.com/docs/getting-started/installation

#Mit Homebrew installieren
brew install graphviz
#Mit pip installieren
pip install diagrams

Beispiel

Vorerst habe ich versucht, anhand eines Beispiels auszugeben.

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):
    ELB("lb") >> EC2("web") >> RDS("db")
python diagram.py
2020-05-29 13:50:05.901 +[__NSCFConstantString length]: unrecognized selector sent to class 0x
2020-05-29 13:50:05.905 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[__NSCFConstantString length]: unrecognized selector sent to class 0x'

Ich bin sofort auf einen Fehler gestoßen. Ich kannte die Ursache überhaupt nicht und entschied mich daher, das ursprünglich vorerst installierte graphviz zu aktualisieren, um Probleme zu beheben.

brew upgrade graphviz

Sie haben die Version erfolgreich auf 2.40.1-> 2.44.0 aktualisiert.

python diagram.py

Ich konnte sicher ausgeben.

Testkonfiguration

from diagrams import Cluster, Diagram
from diagrams.aws.compute import EC2, ElasticBeanstalk
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB, Route53
from diagrams.onprem.client import Client

graph_attr = {
}

def draw():
    with Diagram("web_service", show=False, graph_attr=graph_attr, direction="TB"):
        route53 = Route53('route53')
        client = Client('client')

        client >> route53

        with Cluster("ElasticBeanstalk"):
            with Cluster("WEB"):

                with Cluster("Subnet1"):
                    web1 = EC2("web")
                    lb1 = ELB("lb1")
                    lb1 >> web1

                with Cluster("Subnet2"):
                    web2 = EC2("web")
                    lb2 = ELB("lb2")
                    lb2 >> web2

                route53 - [lb1, lb2]

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

                with Cluster("Subnet3"):
                    rds1 = RDS("slave1")

                with Cluster("Subnet4"):
                    rds2 = RDS("slave2")

                db_master - [rds1, rds2]

                [web1, web2] >> db_master

if __name__ == '__main__':
    draw()

Ausgabebild

web_service.png

Recommended Posts

Ich habe Diagramm als Code (Diagramme) ausprobiert, mit dem der Konfigurationsdiagrammcode verwaltet werden kann
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe "Streamlit" ausprobiert, das den Python-Code so wie er ist in eine Webanwendung verwandelt
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
Ich habe "Lobe" ausprobiert, mit dem das von Microsoft veröffentlichte Modell des maschinellen Lernens problemlos trainiert werden kann.
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
Ich habe versucht, das Blockdiagramm-Generierungswerkzeug blockdiag einzuführen
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe die Changefinder-Bibliothek ausprobiert!
[Flask] Ich habe versucht, die "Docker-Compose-Konfiguration" zusammenzufassen, die schnell für Webanwendungen erstellt werden kann
Ich habe versucht, "Asciichart Py" zu verwenden, mit dem mit Python ein schönes Diagramm auf der Konsole gezeichnet werden kann.
Ich habe versucht, die COTOHA-API zu verwenden (es gibt auch Code auf GitHub).
Fortsetzung: Ich habe versucht, das Blockdiagramm-Generierungswerkzeug blockdiag einzuführen
Ich war an Diagrammen interessiert und habe versucht, sie mit einer Flasche zu umwickeln
Vom "Zeichnen" zum "Schreiben" des Konfigurationsdiagramms: Zeichnen Sie das AWS-Konfigurationsdiagramm mit Diagrammen
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe die neuartige API von Naruro ausprobiert
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.