Start basic diagram for services
This commit is contained in:
		
							parent
							
								
									81c0797bd8
								
							
						
					
					
						commit
						bf0f991b49
					
				
					 2 changed files with 73 additions and 0 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1 +1,3 @@
 | 
				
			||||||
*.secret.env
 | 
					*.secret.env
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					serguzim.net.png
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										71
									
								
								diagram.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								diagram.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					""" Diagram to visualize serguzim.net """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from diagrams import Cluster, Diagram
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from diagrams.oci.compute import Container, OCIRegistry
 | 
				
			||||||
 | 
					from diagrams.oci.storage import ObjectStorage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from diagrams.onprem.ci import Droneci
 | 
				
			||||||
 | 
					from diagrams.onprem.database import Influxdb, Postgresql
 | 
				
			||||||
 | 
					from diagrams.onprem.monitoring import Grafana, Prometheus
 | 
				
			||||||
 | 
					from diagrams.onprem.network import Caddy
 | 
				
			||||||
 | 
					from diagrams.onprem.vcs import Gitea
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def add_to_groups(service, *groups):
 | 
				
			||||||
 | 
					    """ Add a service to groups like 'db_users' """
 | 
				
			||||||
 | 
					    for group in groups:
 | 
				
			||||||
 | 
					        group.append(service)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with Diagram("serguzim.net", show=False):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    node002 = Cluster("node002.serguzim.net")
 | 
				
			||||||
 | 
					    node004 = Cluster("node004.serguzim.net")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    exoscale_objectstore = ObjectStorage("Exoscale Object Storage")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with node002:
 | 
				
			||||||
 | 
					        services = []
 | 
				
			||||||
 | 
					        db_users = []
 | 
				
			||||||
 | 
					        objectstore_users = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        proxy = Caddy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ci = Droneci("ci.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(ci, services, db_users)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db_time = Influxdb("tick.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(db_time, services, db_users)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db = Postgresql("db.serguzim.me")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        graph = Grafana("graph.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(graph, services, db_users)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mail = Container("mail.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(mail, services)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        matrix = Container("matrix.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(matrix, services, db_users, objectstore_users)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        prometheus = Prometheus("prometheus.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(prometheus, services)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        registry = OCIRegistry("registry.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(registry , services, db_users, objectstore_users)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        vcs = Gitea("git.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(vcs, services, db_users)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db_users >> db
 | 
				
			||||||
 | 
					        proxy >> services
 | 
				
			||||||
 | 
					        objectstore_users >> exoscale_objectstore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with node004:
 | 
				
			||||||
 | 
					        services = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        proxy = Caddy()
 | 
				
			||||||
 | 
					        minecraft = Container("minecraft.serguzim.me")
 | 
				
			||||||
 | 
					        add_to_groups(minecraft, services)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        proxy >> services
 | 
				
			||||||
		Reference in a new issue