landscape/diagram.py

158 lines
5.9 KiB
Python

from diagrams import Diagram, Cluster, Edge
from diagrams.custom import Custom
from diagrams.saas.chat import Discord
from diagrams.saas.filesharing import Nextcloud
from diagrams.saas.social import Facebook, Twitter
from diagrams.programming.language import Python, Nodejs, Php
from diagrams.programming.framework import Rails
from diagrams.elastic.elasticsearch import Beats, Elasticsearch, Kibana, Logstash
wordpress = "./resources/wordpress.png"
wings = "./resources/wings.jpg"
trello = "./resources/trello.jpg"
gitlab = "./resources/gitlab.png"
github = "./resources/github.png"
mailchimp = "./resources/mailchimp.png"
nginx = "./resources/nginx.webp"
www = "./resources/www.png"
insta = "./resources/instagram.jpg"
with Diagram("BIJ1 IT landscape"):
with Cluster("Socials"):
fb = Facebook()
tw = Twitter()
insta = Custom("Instagram", insta)
with Cluster("Local socials"):
local_fb = Facebook()
local_tw = Twitter()
local_insta = Custom("Instagram", insta)
with Cluster("Hosting"):
transip = Custom("TransIP", "./resources/transip.png")
greenhost = Custom("GreenHost", "./resources/greenhost.png")
hetzner = Custom("Hetzner", "./resources/hetzner.jpg")
wpengine = Custom("WpEngine", "./resources/wpengine.jpg")
email = Custom("transip.email", "./resources/email.png")
email >> transip
with Cluster("Code repositories"):
gitlab = Custom("gitlab.com/bij1", gitlab)
github = Custom("github.com/bij1", github)
github_data = Custom("github.com/bij1data", github)
github >> gitlab
with Cluster("Roadmap"):
trello_campaign = Custom("Trello Campagne Tweede Kamer verkiezingen", trello)
trello_it = Custom("Trello BIJ1 ICT", trello)
gitlab_issues = Custom("Gitlab issues", gitlab)
with Cluster("Aanmeldingen Kanban"):
trello_vrijwilligers = Custom("Trello board NieuweBIJ1ers", trello)
localize_trello = Python("localize-trello")
with Cluster("Lokale aanmeldingen") as local_aanmeldingen:
local_trello = Custom("trello by region", trello)
trello_vrijwilligers >> localize_trello >> local_aanmeldingen
trello_campaign >> trello_vrijwilligers
with Cluster("Nieuwsbrieven"):
mailchimp_central = Custom("Landelijke MailChimp", mailchimp)
with Cluster("Lokale nieuwsbrieven"):
mailchimp_central = Custom("Lokale MailChimps", mailchimp)
with Cluster("ELK") as elk:
logstash = Logstash()
beats = Beats()
elasticsearch = Elasticsearch()
kibana = Kibana()
logstash >> beats
logstash >> elasticsearch
logstash >> kibana
elk >> greenhost
with Cluster("Meetings"):
zoom = Custom("Zoom", "./resources/zoom.jpg")
jitsi = Custom("meet.bij1.org", "./resources/jitsi.jpg")
bbb = Custom("bigbluebutton.bij1.org", "./resources/bbb.png")
bbb >> hetzner
ingang = Rails("vergadering.bij1.org/ingang/")
flowmailer = Custom("FlowMailer", "./resources/flowmailer.svg")
helios = Custom("stemmen.bij1.org", "./resources/helios.jpg")
coturn = Custom("turn.bij1.org", "./resources/webrtc.jpg")
coturn >> bbb >> ingang >> helios
ingang >> flowmailer
jitsi >> greenhost
ingang >> greenhost
helios >> greenhost
coturn >> greenhost
with Cluster("Websites"):
proxy = Custom("proxy.bij1.net", nginx)
bij1_wp = Custom("bij1.org", wordpress)
staging_wp = Custom("staging-wp.bij1.net", wordpress)
doemee_wp = Custom("doemee.bij1.org", wordpress)
doemee_wp >> wpengine
radicaal = Custom("radicaal.bij1.org", "./resources/squarespace.jpg")
shop = Custom("shop.bij1.org", "./resources/woocommerce.jpg")
proxy >> bij1_wp
proxy >> greenhost
bij1_wp >> greenhost
staging_wp >> greenhost
shop >> bij1_wp
with Cluster("Static") as statics:
static = Custom("static.bij1.net", nginx)
links = Custom("links.bij1.org", www)
# actie = Custom("actie.bij1.org", www)
# iktelookmee = Custom("iktelookmee.bij1.org", www)
# wijzijn = Custom("wijzijn.bij1.org", www)
static >> links
# static >> actie
# static >> iktelookmee
# static >> wijzijn
statics >> greenhost
with Cluster("Afdelingssites"):
wingspress = Nodejs("WingsPress")
wings_adam = Custom("amsterdam.bij1.org", wings)
wings_roffa = Custom("rotterdam.bij1.org", wings)
wings_denhaag = Custom("denhaag.bij1.org", wings)
wings_utrecht = Custom("utrecht.bij1.org", wings)
wings_hilversum = Custom("hilversum.bij1.org", wings)
wp_adam = Custom("amsterdam.wp-staging.bij1.net", wordpress)
wp_almere = Custom("almere.wp-staging.bij1.net", wordpress)
wings_adam >> wingspress >> wp_adam
zapier = Custom("Zapier", "./resources/zapier.png")
doemee_wp >> zapier
airtable = Custom("Zapier", "./resources/airtable.png")
zapier >> airtable
with Cluster("Intranet"):
# kom = Custom("kom.bij1.org", www)
# kom >> transip
# keycloak = Custom("jij.bij1.org", "./resources/keycloak.jpg")
cloud = Nextcloud("cloud.bij1.org")
cloud >> greenhost
# kom >> keycloak
# keycloak >> cloud
with Cluster("CRM") as crm:
civi = Custom("CiviCRM", "./resources/civicrm.jpg")
bij1_wp >> crm
bij1algemeen = Php("bij1algemeen")
bij1rules = Php("bij1rules")
bij1migratie = Php("bij1migratie")
airtable >> bij1migratie >> civi
mollie = Custom("Mollie", "./resources/mollie.jpg")
export_mollie = Nodejs("export-mollie")
mollie >> export_mollie >> bij1migratie