Import dot files from the notes repo

This commit is contained in:
Nico Schottelius 2020-01-09 11:15:47 +01:00
commit 023b613fca
19 changed files with 605 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
*.png
*.pdf
*.svg

16
Makefile Normal file
View file

@ -0,0 +1,16 @@
all:
for dot in *.dot; do make $${dot%%.dot}.png; done
for dot in *.dot; do make $${dot%%.dot}.pdf; done
for dot in *.dot; do make $${dot%%.dot}.svg; done
clean:
rm -f *.png *.pdf *.svg
%.png: %.dot
dot -Tpng < $< > $@
%.pdf: %.dot
dot -Tpdf < $< > $@
%.svg: %.dot
dot -Tsvg < $< > $@

15
desktop-in-a-browser.dot Normal file
View file

@ -0,0 +1,15 @@
digraph G {
node [ shape=box ]
local_browser [ label="Local Browser" ];
desktop_ungleich [ label="ungleich Desktop\n(Guacamole)" ];
vm [ label="Dedicated VM" ];
mydesktop [ label="My Desktop in a VM" ];
mobile_phone [ label="My phone" ];
local_browser->desktop_ungleich->vm->mydesktop;
desktop_ungleich->mobile_phone [ label="2FA" ];
}

95
digitalglarus.dot Normal file
View file

@ -0,0 +1,95 @@
digraph G {
start [ label="Enter Digital Glarus" ]
quietnot [ label="Prefer People\nor quietness?" shape=diamond ]
interested [ label="Are you interested\nin either sustainability,\nIT, hacking\nor mountains?" shape=diamond ];
nothere [ label="Sorry, this place\nis not for you." shape=box ]
schwanden [ label="Digital Chalet" ]
diesbach [ label="Hacking Hotel" ]
movein [ label="Welcome to Digital Glarus" ];
start->interested
interested->quietnot [ label="Yes" ];
interested->nothere [ label="No" ];
quietnot->schwanden [ label="I prefer quiet" ];
quietnot->diesbach [ label="I prefer people" ];
roomup [ label="Rooftop room\nwith mountain view" ];
roomupbig [ label="Rooftop big and bright room" ];
roombig [ label="Double room with lots of space" ];
roomcute [ label="Cute and bright room" ];
mountainviewapt [ label="Mountain view apartement" ];
natureviewapt [ label="Nature view apartement" ];
room7 [ label="Hotel Room" ];
studentdiscount [ label="Are you\na student?" shape=diamond ];
discountyes [ label="You are eligable\nfor a student discount!" ];
price_390 [ shape="box" label="390 CHF" ];
price_440 [ shape="box" label="440 CHF"];
price_490 [ shape="box" label="490 CHF"];
price_590 [ shape="box" label="590 CHF"];
schwanden->roombig [ label="Prefer more space" ]
schwanden->roomupbig [ label="Prefer more space" ]
schwanden->roomup [ label="Prefer pay less and smaller rooms" ]
schwanden->roomcute [ label="Prefer pay less and smaller rooms" ]
diesbach->mountainviewapt [ label="A whole apartment for myself" ];
diesbach->natureviewapt [ label="A whole apartment for myself" ];
diesbach->room7 [ label="I am fine with one big room" ];
natureviewapt->price_490;
mountainviewapt->price_590;
roombig->price_440;
roomup->price_390;
roomcute->price_390;
roomupbig->price_390;
room7->price_390;
subgraph cluster_schwanden {
schwanden;
roomup;
roomupbig;
roombig;
roomcute;
}
subgraph cluster_diesbach {
diesbach;
mountainviewapt
natureviewapt
room7;
}
subgraph cluster_prices {
# label="Price per month";
price_440;
price_590;
price_490;
price_390;
}
{price_440, price_590, price_390, price_490 }->studentdiscount;
studentdiscount->movein [ label="No" ];
studentdiscount->discountyes [ label="Yes" ];
discountyes->movein;
movein;
}

44
djangohosting.dot Normal file
View file

@ -0,0 +1,44 @@
digraph G {
node [ shape=box, fontcolor="#ffffff", color="#40a9e3", style="filled" ]
# rankdir=LR;
subgraph cluster_local {
editor [ label="Local editor" ];
git [ label="Local version control" ];
localweb [ label="Development webserver" ];
}
subgraph cluster_production_datacenter {
label="First data center";
subgraph cluster_production {
label="Production environment"
prodvm [ label="Production Server\nuwsgi,nginx,postgres" ];
repo [ label="Code repository\n(f.i. git)"];
monitoring [ label="Monitoring server" ];
}
subgraph cluster_staging {
label="Staging environment"
stagingvm[ label="Staging Server" ];
}
}
subgraph cluster_offsite {
label="Second data center";
backupvm [ label="Backup server" ];
monitoringmonitor [ label="Monitoring server" ];
}
editor->git;
git->repo;
editor->localweb;
repo->prodvm [ label="Deploy after staging" ];
repo->stagingvm [ label="Pre prod deployment" ];
prodvm->backupvm [ label="Daily backup" ];
monitoring->prodvm [ label="Verify operation\nand alert on failure" ];
monitoringmonitor->monitoring [ label="Monitor the monitoring service"];
}

14
ip-routing.dot Normal file
View file

@ -0,0 +1,14 @@
digraph G {
node [ shape=box ]
rankdir=LR;
packet [ label="Packet" ]
router [ label="Router" ];
routingtable [ label="Lookup in\nrouting table" ];
nexthop [ label="Next router" ];
packet->router->routingtable->nexthop;
}

25
ipv4doublenat.dot Normal file
View file

@ -0,0 +1,25 @@
digraph G {
node [ shape=box ]
rankdir=LR;
client1 [ label="IPv4 client 1\nPrivate IP" ];
client2 [ label="IPv4 client 2\nPrivate IP" ];
clientn [ label="IPv4 client n\nPrivate IP" ];
nat_gw [ label="NAT gateway\nPublic IP" ];
target [ label="IPv4 Server\nPublic IP" ];
nat_gw2 [ label="NAT gateway 2\nPublic IP" ];
client3 [ label="IPv4 client 3\nPrivate IP" ];
client4 [ label="IPv4 client 4\nPrivate IP" ];
clientx [ label="IPv4 client x\nPrivate IP" ];
{client1, client2, clientn}->nat_gw;
nat_gw->target;
target->nat_gw;
target->nat_gw2;
nat_gw2->target;
nat_gw2->{client3, client4, clientx} [ dir="back" ];
}

17
ipv4nat.dot Normal file
View file

@ -0,0 +1,17 @@
digraph G {
node [ shape=box ]
rankdir=LR;
client1 [ label="IPv4 client 1\nPrivate IP" ];
client2 [ label="IPv4 client 2\nPrivate IP" ];
clientn [ label="IPv4 client n\nPrivate IP" ];
nat_gw [ label="NAT gateway\nPublic IP" ];
target [ label="IPv4 Server\nPublic IP" ];
{client1, client2, clientn}->nat_gw;
nat_gw->target;
target->nat_gw;
}

9
ipv6-routing.dot Normal file
View file

@ -0,0 +1,9 @@
digraph G {
node [ shape=box ]
rankdir=LR;
v6router [ label="IPv6 only Router" ];
router1->router2 [ label="IPv6 route 1" ];
router1->router3 [ label="IPv6 route 2" ];
}

19
ipv6-to-ipv4-proxy.dot Normal file
View file

@ -0,0 +1,19 @@
digraph G {
node [ shape=box ]
rankdir=TB!;
label="IPv4-to-IPv6 proxy by ungleich.ch"
proxyv4 [ label="ungleich\nIPv4-IPv6 Proxy" ];
serverv6 [ label="Your IPv6 only\nServer" ];
clientv4 [ label="IPv4 only\nclient" ];
clientv6 [ label="IPv6 only\nclient" ];
clientv6->serverv6 [ label="Direct IPv6 access" ];
clientv4->proxyv4 [ label="Connect by IPv4" ];
proxyv4->serverv6 [ label="Translate to IPv6" ];
}

20
ipv6backup.dot Normal file
View file

@ -0,0 +1,20 @@
digraph G {
node [ shape=box ]
rankdir=LR;
backupserver [ label="ungleich\nIPv6 Backup" ];
server1 [ label="Server (IPv4)" ];
server2 [ label="Server (IPv6)" ];
server3 [ label="Server (Dualstack)" ];
clientv4 [ label="IPv4 client" ];
clientv6 [ label="IPv6 client" ];
backupserver->{server1,server2,server3}
clientv4->backupserver [ label="Not accessible" ];
clientv6->backupserver [ label="Accessible (can be restricted)" ];
}

14
ipv6direct.dot Normal file
View file

@ -0,0 +1,14 @@
digraph G {
node [ shape=box ]
# rankdir=LR;
client1 [ label="IPv6 client 1\nPublic IP" ];
client2 [ label="IPv6 client 2\nPublic IP" ];
clientn [ label="IPv6 client n\nPublic IP" ];
client1->{client2, clientn};
client2->{client1, clientn};
clientn->{client2, client1};
}

55
ipv6proxy.dot Normal file
View file

@ -0,0 +1,55 @@
digraph G {
node [ shape=box ]
rankdir=LR;
label="IPv6 proxies by ungleich.ch"
proxyv6 [ label="ungleich\nIPv6-IPv4 Proxy" ];
proxyv4 [ label="ungleich\nIPv4-IPv6 Proxy" ];
serverv4 [ label="IPv4 only\nServer" ];
serverv6 [ label="IPv6 only\nServer" ];
noipv4here [ label="No IPv4-\nhere-service" ];
clientv4 [ label="IPv4 only\nclient" ];
clientv6 [ label="IPv6 only\nclient" ];
clientv4->serverv4 [ label="Direct IPv4 access" ];
clientv6->serverv6 [ label="Direct IPv6 access" ];
clientv4->proxyv4 [ label="Connect by IPv4" ];
clientv6->proxyv6 [ label="Connect by IPv6" ];
proxyv6->serverv4 [ label="Translate to IPv4" ];
proxyv4->serverv6 [ label="Translate to IPv6" ];
proxyv4->noipv4here [ label="If IPv4 translation is disabled" ];
subgraph cluster_legacyserver {
label="Enable legacy IPv4 servers to be reachable by IPv6";
proxyv6;
serverv4;
}
subgraph cluster_v6net {
label="Enable legacy IPv4 clients to access IPv6 only servers";
proxyv4;
serverv6;
noipv4here;
}
subgraph cluster_clients {
label="Clients";
clientv4;
clientv6;
}
}

28
marketing-by-doing.dot Normal file
View file

@ -0,0 +1,28 @@
digraph G {
# rankdir="LR";
label="Do good and talk about it // ungleich.ch"
me [ label="Me"];
plan [ label="Plan what to do" ];
writetwitter [ label="Write on Twitter as me" ];
mentionungleich [ label="Include @ungleich in message" ];
includepicture [ label="Include a picture" ];
doit [ label="Do the work" ];
goodpic [ label="Good picture available?" shape=diamond ];
me->plan->writetwitter->mentionungleich->goodpic;
goodpic->includepicture [ label="yes" ];
includepicture->doit;
goodpic->doit [ label="no" ];
doit->{plan, writetwitter};
}

143
network.dot Normal file
View file

@ -0,0 +1,143 @@
digraph G {
rankdir="LR";
digitalglarus;
hack4glarus;
dominique [ label="Dominique Schuwey" ];
stefanos [ label="Stefanos SKMP" ];
andi [ label="Andi not Brönnimann" ];
andistaub [ label="Andi Staub" ];
marcopanter [ label="Marco Dreads" ];
stefanpanter [ label="Stefan panter sysadmin" ];
marcuskoller [ label="Markus Koller" ];
ok200 [ label="200ok" ];
nico->ccc;
nico->irc;
nico->hszt;
nico->panter;
nico->swinog;
nico->{chopenevent, eth, localch, netstream, ungleich};
nico->{hack4glarus, digitalglarus};
nico->{impacthub};
nico->ungleichmarketing;
nico->{benni,tobiaskiefer,marcusprzyklink,miriwagner,juliahempel};
benni->maren;
alain->{voicerepublic,zentemple,ok200,monikabieri};
beat->{beatseltern, beatsbruder, johanna, leutevonschwändi};
donaldkossmann->teralytics;
fritzpechal->evapechal;
gabibaechlin->{rotary,hermanmathis};
giovanniserafini->adrianmathyskrüttli;
heinzhuerzeler->rolfhürlimann;
hpk->{jerry, richidubs, viviankessler, steffidubs, estherdubs, richardkeller, jacqueline, sabrinanaef, konrad, juanito, fridolinwalcher};
marcauer->mathiasauer;
hanspeterlegler->kurtsuess;
kurtsuess->tbgs;
tbgs->{kilianbäbler, michaeltrachsler};
mikezweifel->makersimzigerschlitz;
michelle->panter;
phil->ok200;
stefanos->chrysa;
stefanwolf->cabaretvoltaire;
steven->carbondelta;
sanghee->eunwoo;
sanghee->heinzhuerzeler;
eunwoo->dani;
dani->eunwoo;
diechance->{nadineglettig,rolandzweifel,samuelhailu};
ccc;
ccc->ccczh;
ccczh->hernani;
ccc->reyk;
irc;
irc->doublep;
swinog;
swinog->{claudio,patrickgloor};
digitalglarus;
digitalglarus->{marvin,rob,styli,marina,merry,julian};
digitalglarus->{hpk,hansjuerghess, hanspeterlegler, hanspetersuess, gabibaechlin,fritzpechal};
digitalglarus->{alexrömer, nüglarus, mikezweifel, diechance,roomrenting};
digitalglarus->{christianzweifel,larazweifel,kasparmarti};
hack4glarus;
hack4glarus->{evilham,balazs,freebsdjohannes,kankan,manfredfrommichael,tilobosshard,vaida,danieltuering};
hack4glarus->{janselinga,martinselinga,michelle,konimarti};
adrianmathyskrüttli->helsana;
nüglarus;
nüglarus->{robibalmer, rolfluchsinger, patrickgallati};
panter;
panter->{stefanos,dominique,beat,alain,jorgo,phil,marcopanter,marcuskoller};
panter->{andistaub,stefanpanter,simonhuerlimann,davehuerlimann,referenceimage,amanda,mauro,tomas};
panter->{martinpanter};
referenceimage->ungleich;
chopenevent->eichi;
eichi->{ruag,tatjana};
ruag->dominiqueroux;
roomrenting->{erickönen, emilsomething, thomasberger};
impacthub->workspace2go;
hszt->{andi,dani,linda,giovanniserafini,c1audio};
eth->{steven,kamila,swaneet,max,lili,giovanniserafini,donaldkossmann,xtaran};
eth->{stefanwolf,sarahplocher,tobiasbühler,laurentvanbever,mothyroscoe,adrianperrig};
localch->nadinefaeh->pascalfaeh->faehundfaeh;
localch->richardrasu;
netstream->{alexiscaceda, dominikmeister, dominikbreitenmoser,esthergysin};
esthergysin->ungleich;
ungleich->{davehuerlimann, marcauer, konimarti,kasparmarti};
ungleichmarketing;
ungleichmarketing->{airat, hpk};
voicerepublic;
voicerepublic->patrickfrank;
zentemple->{marcelredding,bettina};
}

35
nicos-christmas-flow.dot Normal file
View file

@ -0,0 +1,35 @@
digraph G {
node [ shape=box ]
# rankdir=LR;
label="Nico's Christmas shopping flow (2019)"
start [ label="Start" ];
needpresents [ label="Do I want to buy presents?" ];
stayhome [ label="All good. Let's do something else." ];
# lookforpresents [ label="Let's look for presents!" ];
isitdigital [ label="Is the present digital?" ];
runsopensource [ label="Does it run Open Source?" ];
usesnet [ label="Does it connect to the network?" ];
supportsv6 [ label="Does it support IPv6?" ];
buyit [ label="Ok, let's buy it!" ];
notgood [ label="Don't buy, this is trouble" ];
# isvirtual [ label="Does a VM/VPN work?" ];
start->needpresents;
needpresents->stayhome [ label="No" ];
needpresents->isitdigital [ label="Yes" ];
isitdigital->runsopensource [ label="Yes" ];
isitdigital->buyit [ label="No" ];
runsopensource->notgood [ label="No" ];
runsopensource->usesnet [ label="Yes" ];
usesnet->buyit [ label="No" ];
usesnet->supportsv6 [ label="Yes" ];
supportsv6->notgood [ label="No" ];
supportsv6->buyit [ label="Yes" ];
# supportsv6->isvirtual [ label="Yes" ];
}

16
nicosinfra.dot Normal file
View file

@ -0,0 +1,16 @@
graph G {
node [ shape=box ]
# rankdir=LR;
label="Nico's notebooks"
internet [ label="IPv6 Internet" shape="ellipse" ];
freiheit [ label="freiheit\n(Schwanden)\nfreiheit.place5.ungleich.ch" ];
manager [ label="manager\n(Luchsingen)\nmanager.place7.ungleich.ch" ];
diamond [ label="diamond\n(on the road)\ndiamond.place7.ungleich.ch\nnico.plays.ipv6.games" ];
line [
label="line\n(Linthal\ndiamond.place7.ungleich.ch\nnico.ungleich.cloud" ];
internet--{freiheit,manager,diamond,line}
}

11
vm-infrastructure-dcl.dot Normal file
View file

@ -0,0 +1,11 @@
digraph G {
node [ shape=box ]
rankdir=LR;
VMs->{VMHost1,VMHost2,VMHostN}
{VMHost1,VMHost2,VMHostN}->CephCluster;
CephCluster->{Ceph1,Ceph2,CephN}
}

View file

@ -0,0 +1,26 @@
digraph G {
node [ shape=box ]
rankdir=LR;
subgraph cluster_rz1 {
VMs->{VMHost1,VMHost2,VMHostN}
{VMHost1,VMHost2,VMHostN}->CephCluster;
CephCluster->{Ceph1,Ceph2,CephN}
}
subgraph cluster_rz2 {
VMs2->{VMHost21,VMHost22,VMHost2N}
{VMHost21,VMHost22,VMHost2N}->CephCluster2;
CephCluster2->{Ceph21,Ceph22,Ceph2N}
}
CephCluster->CephCluster2 [ label="Backup/Mirror" ];
}