dia_nc_improved.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from diagrams import Cluster, Diagram
  2. from diagrams.azure.database import SQLDatabases
  3. from diagrams.onprem.inmemory import Redis
  4. from diagrams.onprem.network import Nginx, Internet
  5. from diagrams.onprem.groupware import Nextcloud
  6. from diagrams.digitalocean.network import LoadBalancer
  7. import diagrams.generic.storage as storage_1
  8. from diagrams.azure.identity import Groups
  9. from diagrams.custom import Custom
  10. with Diagram(filename="assets/dia_nc_improved", show=False, direction="TB"):
  11. out = Internet("Internet")
  12. with Cluster("Load Balancing"):
  13. openstack_lb = Custom("", "./openstack.png")
  14. lb = [Nginx("SSL proxy 1"), Nginx("SSL proxy 2")]
  15. with Cluster("Web servers"):
  16. openstack_web = Custom("", "./openstack.png")
  17. nc_frontend = [ Groups("local LDAP slave") - Nextcloud(),
  18. Groups("local LDAP slave") - Nextcloud(),
  19. Groups("local LDAP slave") - Nextcloud(),
  20. Groups("local LDAP slave") - Nextcloud()]
  21. with Cluster("Caching"):
  22. openstack_cach = Custom("", "./openstack.png")
  23. redis = [Redis("Redis 1"), Redis("Redis 2")]
  24. with Cluster("LDAP"):
  25. openstack_ldap = Custom("", "./openstack.png")
  26. ldap = Groups()
  27. with Cluster("Database cluster"):
  28. with Cluster("Load Balancer"):
  29. openstack_dblb = Custom("", "./openstack.png")
  30. nc_dblb = LoadBalancer()
  31. with Cluster("Databases"):
  32. openstack_db = Custom("", "./openstack.png")
  33. SQLDatabases("Master") >> [SQLDatabases("Slave 1"),
  34. SQLDatabases("Slave 2")]
  35. nc_frontend >> storage_1.Storage("NFS")
  36. openstack_cach << nc_frontend
  37. openstack_web >> openstack_dblb
  38. openstack_lb >> openstack_web
  39. openstack_web << ldap
  40. nc_dblb >> openstack_db
  41. out >> lb