[PYTHON] J'ai essayé le diagramme en tant que code (diagrammes) qui peut gérer le code du diagramme de configuration

Essayer le diagramme en tant que code (diagrammes)

https://diagrams.mingrammer.com/

J'utilise généralement des outils de création tels que Cacoo pour le diagramme de configuration, J'ai essayé de voir tout ce que je pouvais écrire en utilisant un outil capable de dessiner un diagramme de configuration avec du code Python.

Conclusion, impression

Comme il peut être écrit simplement, il est bon de pouvoir rapidement prototyper un nouveau système tel qu'il est présenté. ――Le coût d'apprentissage est faible et vous pouvez commencer à écrire dès que vous êtes familiarisé avec Python. --Il y avait un attribut de changement de taille de police, mais je ne savais pas comment écrire une annotation

À propos de l'environnement

Exigences d'exploitation

--Python 3.6 et supérieur --Graphviz requis

Préparation préalable

Créez un nouvel environnement virtuel et installez-y des packages. Cette procédure est facultative.

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

Installation

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

#Installer avec Homebrew
brew install graphviz
#Installer avec pip
pip install diagrams

exemple

Pour le moment, j'ai essayé de sortir en utilisant un exemple.

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'

Immédiatement, j'ai rencontré une erreur. Je ne connaissais pas du tout la cause, alors j'ai décidé de mettre à niveau le graphviz qui était initialement installé pour le moment tout en détectant des problèmes.

brew upgrade graphviz

Vous avez mis à niveau avec succès la version vers 2.40.1-> 2.44.0.

python diagram.py

J'ai pu sortir en toute sécurité.

Configuration d'essai

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()

Image de sortie

web_service.png

Recommended Posts

J'ai essayé le diagramme en tant que code (diagrammes) qui peut gérer le code du diagramme de configuration
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
J'ai essayé "Streamlit" qui transforme le code Python en une application web tel quel
J'ai écrit un diagramme de configuration du système avec des diagrammes sur Docker
J'ai essayé "Lobe" qui peut facilement entraîner le modèle d'apprentissage automatique publié par Microsoft.
J'ai essayé d'exécuter l'exemple de code du module Ansible
J'ai essayé d'introduire l'outil de génération de diagramme blockdiag
J'ai essayé de porter le code écrit pour TensorFlow sur Theano
J'ai essayé de résumer le code souvent utilisé dans Pandas
J'ai essayé la bibliothèque changefinder!
[Flask] J'ai essayé de résumer la "configuration docker-compose" qui peut être créée rapidement pour les applications Web
J'ai essayé d'utiliser "Asciichart Py" qui peut dessiner un beau graphique sur la console avec Python.
J'ai essayé d'utiliser l'API COTOHA (il y a aussi du code sur GitHub)
Continuation: j'ai essayé d'introduire l'outil de génération de diagramme blockdiag
J'étais intéressé par les diagrammes alors j'ai essayé de l'envelopper avec un flacon
Du «dessin» à «l'écriture» du diagramme de configuration: essayez de dessiner le diagramme de configuration AWS avec des diagrammes
J'ai essayé le tutoriel TensorFlow 1er
J'ai essayé l'API du roman Naruro
J'ai essayé de déplacer le ballon
J'ai essayé d'utiliser l'API checkio
J'ai essayé d'estimer la section.
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.