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.
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
--Python 3.6 et supérieur --Graphviz requis
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
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é.
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()
Recommended Posts