WEBVTT

00:00:00.000 --> 00:00:03.440
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python Podcast, Episode 44.

00:00:04.680 --> 00:00:05.860
Heute soll es gehen um Ansible.

00:00:07.020 --> 00:00:07.460
Hi Jochen.

00:00:07.940 --> 00:00:09.000
Herzlich willkommen Dominik.

00:00:09.780 --> 00:00:11.300
Oh meine Güte, das geht ja schon holprig los.

00:00:11.800 --> 00:00:12.460
Heute ist der Max dabei.

00:00:12.460 --> 00:00:13.560
Wir haben ein bisschen Pause gemacht und schon geht nichts mehr.

00:00:13.740 --> 00:00:15.040
Und der Max, natürlich, hallo, willkommen.

00:00:15.080 --> 00:00:16.160
Hallo, heute bin ich dabei.

00:00:17.440 --> 00:00:20.780
Ja, wir reden über Ansible, aber erstmal natürlich wieder wie immer die News.

00:00:21.700 --> 00:00:22.640
Jochen, was hast du denn für News?

00:00:23.640 --> 00:00:26.860
Ja, was hatte ich, es ist eine ganze Menge passiert.

00:00:26.860 --> 00:00:28.820
wurden ja auch schon auf Twitter

00:00:28.820 --> 00:00:31.440
mitbekommen habt.

00:00:31.440 --> 00:00:33.500
Ja, und aber auch schon angehauen,

00:00:33.640 --> 00:00:34.820
dass wir doch mal wieder was machen sollen.

00:00:36.200 --> 00:00:37.320
Genau, machen wir jetzt auch wieder was.

00:00:37.720 --> 00:00:39.460
Insofern ist viel passiert, aber das meiste habe ich wieder vergessen.

00:00:39.600 --> 00:00:40.080
Daher egal.

00:00:40.920 --> 00:00:43.560
Eine wichtige Geschichte war das Release von Django 4.1.

00:00:43.660 --> 00:00:44.600
Das ist auch noch gar nicht so lange her.

00:00:46.360 --> 00:00:47.220
Das ist sehr nett.

00:00:47.440 --> 00:00:49.320
Also sowieso in letzter Zeit die ganzen Django-Releases

00:00:49.320 --> 00:00:50.620
finde ich sehr...

00:00:50.620 --> 00:00:52.480
Es wirkt nicht so

00:00:52.480 --> 00:00:55.500
bombastisch irgendwie,

00:00:55.500 --> 00:01:25.480
und Jochen unterhalten sich über die Programmiersprache Python

00:01:25.500 --> 00:01:27.060
ASGI zu

00:01:27.060 --> 00:01:28.800
irgendwie, man kann Async Views schreiben,

00:01:29.080 --> 00:01:31.020
zu irgendwann werden wir auch komplett

00:01:31.020 --> 00:01:32.500
irgendwie alles Async haben.

00:01:32.980 --> 00:01:34.900
Das wird noch eine ganze Zeit lang dauern. Also ich

00:01:34.900 --> 00:01:36.920
rechne da ehrlich gesagt nicht mit, dass das vor

00:01:36.920 --> 00:01:38.560
einem Jahr oder so möglich wird.

00:01:39.200 --> 00:01:40.860
Aber ein Jahr ist auch gar nicht so, ne?

00:01:41.200 --> 00:01:42.820
Bitte? Ein Jahr ist auch gar nicht so, ne? Ja, stimmt,

00:01:42.920 --> 00:01:44.860
stimmt. Letztes Jahr ist auch quasi gestern, das stimmt

00:01:44.860 --> 00:01:46.040
schon. Insofern, ja.

00:01:46.780 --> 00:01:48.940
Aber wenn man jetzt überlegt, wann haben wir

00:01:48.940 --> 00:01:49.540
den Artikel?

00:01:50.820 --> 00:01:52.500
Letzten Sommer. Das war nicht letzten Sommer.

00:01:52.500 --> 00:01:53.460
Doch, das war letzten Sommer.

00:01:53.460 --> 00:02:23.440
und Jochen unterhalten sich über die Programmiersprache Python

00:02:23.460 --> 00:02:24.920
jetzt sowas sagt wie await

00:02:24.920 --> 00:02:26.960
Query-Side-Shelter irgendwas oder so.

00:02:27.480 --> 00:02:29.500
Dann, wenn irgendwann die ganzen anderen Dinge, die auch

00:02:29.500 --> 00:02:31.460
alle dann async werden müssen und wo das dann funktionieren muss,

00:02:31.520 --> 00:02:33.500
alles funktioniert, dann

00:02:33.500 --> 00:02:34.460
kriegt man einfach so

00:02:34.460 --> 00:02:37.780
schnellere Datenbank-Ergebnisse,

00:02:38.140 --> 00:02:39.540
ohne dass man was dafür tun muss. Und das ist natürlich

00:02:39.540 --> 00:02:41.400
sehr praktisch. Also insofern, jetzt kann man das halt schon

00:02:41.400 --> 00:02:43.600
so verwenden, als wäre es da, aber es ist

00:02:43.600 --> 00:02:44.660
halt noch nicht da, weil es

00:02:44.660 --> 00:02:47.940
gibt noch keine Unterstützung für PsychoPG3

00:02:47.940 --> 00:02:49.460
oder für AsyncPG oder sowas

00:02:49.460 --> 00:02:51.480
daher. Man kann, glaube ich,

00:02:51.480 --> 00:02:53.520
Dinge machen, über ein Threadpool.

00:02:53.720 --> 00:02:55.480
Also wenn man wirklich will, dann kann man auch so ein bisschen

00:02:55.480 --> 00:02:57.680
Async machen, aber das ist

00:02:57.680 --> 00:02:59.760
halt noch nicht so wirklich das richtige Ding.

00:03:00.740 --> 00:03:01.540
Aber das war

00:03:01.540 --> 00:03:03.460
eine Geschichte. Dann

00:03:03.460 --> 00:03:05.480
aber eigentlich die interessanteren Features, weil die kann man

00:03:05.480 --> 00:03:07.020
halt schon wirklich benutzen und die bringen einem was,

00:03:08.080 --> 00:03:09.140
sind sowas wie

00:03:09.140 --> 00:03:11.480
Model Constraints. Also wenn man

00:03:11.480 --> 00:03:13.680
in einem Model festlegt,

00:03:13.740 --> 00:03:15.400
dass man irgendwie bestimmte

00:03:15.400 --> 00:03:17.420
Check Constraints in der Datenbank haben will, also irgendwas

00:03:17.420 --> 00:03:19.000
darf nicht größer als so und sowas sein oder

00:03:19.000 --> 00:03:21.320
Wert muss zwischen dem und dem liegen

00:03:21.320 --> 00:03:23.060
oder darf nichts anderes sein als das oder so.

00:03:23.340 --> 00:03:25.800
Irgendwas auch immer man für Constraints da festlegt.

00:03:26.100 --> 00:03:27.500
Dann war es halt früher so,

00:03:27.600 --> 00:03:28.740
da musste man das halt in den

00:03:28.740 --> 00:03:31.060
Modelformen nochmal mit validieren,

00:03:31.820 --> 00:03:33.000
damit das

00:03:33.000 --> 00:03:35.380
wirklich funktioniert. Ansonsten hat das Formen

00:03:35.380 --> 00:03:37.380
gesagt, alles okay und dann

00:03:37.380 --> 00:03:39.400
wenn das, wenn der

00:03:39.400 --> 00:03:41.120
View oder was auch immer oder das Formen versucht, das

00:03:41.120 --> 00:03:43.080
in den Datenbank zu schreiben, gibt es einen Integrity Error.

00:03:43.860 --> 00:03:44.960
Was natürlich ein bisschen kacke ist.

00:03:45.400 --> 00:03:47.460
Und jetzt ist es halt so, dass man tatsächlich

00:03:47.460 --> 00:03:49.300
vom Formen auch gesagt bekommt, nee, das geht so nicht,

00:03:49.300 --> 00:03:50.560
weil da ist ein Constraint

00:03:50.560 --> 00:03:51.700
auf dem Model.

00:03:52.200 --> 00:03:54.100
Das ist ja letztlich super angenehm, weil

00:03:54.100 --> 00:03:56.480
vorher muss man selber checken und meistens

00:03:56.480 --> 00:03:57.720
wird die Datenbank dann angefangen.

00:03:57.940 --> 00:04:00.460
Ja, und dann

00:04:00.460 --> 00:04:02.680
eigentlich, also meiner Perspektive

00:04:02.680 --> 00:04:04.480
die coolste Neuerung,

00:04:04.580 --> 00:04:06.460
ich habe es mir jetzt noch nicht so richtig, aber es klang schon

00:04:06.460 --> 00:04:08.460
alles sehr viel sprechend, das was ich gelesen habe, klang auch sehr

00:04:08.460 --> 00:04:10.640
gut. Das coolste

00:04:10.640 --> 00:04:12.420
Feature ist halt, also es hat sich viel an den

00:04:12.420 --> 00:04:14.260
Forms getan, auch in Django 4.0 hat sich schon einiges

00:04:14.260 --> 00:04:16.240
an den Formularen getan, dass man halt

00:04:16.240 --> 00:04:18.140
an Formulare auch dran schreiben kann.

00:04:18.600 --> 00:04:20.300
Also dieses Formular wird gerendert über

00:04:20.300 --> 00:04:21.220
irgendwie

00:04:21.220 --> 00:04:24.160
ein Template. Und jetzt ist es halt

00:04:24.160 --> 00:04:25.960
komplett so, dass man auch global

00:04:25.960 --> 00:04:27.400
einstellen kann,

00:04:28.040 --> 00:04:30.280
welches Template verwendet

00:04:30.280 --> 00:04:32.300
wird, um Formen zu rendern, sodass man es gar nicht mehr unbedingt

00:04:32.300 --> 00:04:33.720
in jedem Formen einstellen muss.

00:04:34.780 --> 00:04:35.800
Und ja, da gibt es jede Menge.

00:04:36.720 --> 00:04:38.420
Es ist deutlich flexibler geworden,

00:04:38.540 --> 00:04:39.860
wie man Formulare rendern kann.

00:04:40.820 --> 00:04:42.380
Das habe ich noch nicht persönlich überprüft,

00:04:42.460 --> 00:04:44.120
aber ich fände es schön, wenn es so wäre, weil ich habe

00:04:44.120 --> 00:04:45.620
Anfang des Jahres so ein bisschen was mit

00:04:45.620 --> 00:04:47.500
Crispy Forms gemacht und so.

00:04:47.760 --> 00:04:48.900
Ja, das war immer ein bisschen anstrengend.

00:04:48.900 --> 00:04:51.040
und ich habe es

00:04:51.040 --> 00:04:52.440
früher immer nur so ein bisschen verwendet und so,

00:04:52.540 --> 00:04:54.880
so war es eigentlich okay und dann habe ich da irgendwann mal so

00:04:54.880 --> 00:04:57.020
richtig tief reingeguckt, weil ich dachte so, okay,

00:04:57.420 --> 00:04:58.960
weil es darum ging, das mit

00:04:58.960 --> 00:05:00.620
JumboHTML, also mit

00:05:00.620 --> 00:05:02.880
HTML zusammen zu benutzen und dann hätte ich

00:05:02.880 --> 00:05:04.880
gern halt nur, ich ändere

00:05:04.880 --> 00:05:06.520
ein Feld, dann geht das,

00:05:07.040 --> 00:05:08.500
gehen die Formulardaten

00:05:08.500 --> 00:05:10.680
an einen View und dann

00:05:10.680 --> 00:05:12.560
möchte ich eigentlich quasi nur das Feld

00:05:12.560 --> 00:05:14.740
zurückbekommen und die Fehlermeldung, wenn da irgendwas

00:05:14.740 --> 00:05:16.040
nicht validiert zum Beispiel.

00:05:16.820 --> 00:05:18.200
Aber das heißt, ich muss halt irgendwie

00:05:18.200 --> 00:05:20.040
ein Feld plus eine Fehlermeldung

00:05:20.040 --> 00:05:20.480
ändern.

00:05:21.340 --> 00:05:24.340
In sehr komplizierten Formularen.

00:05:25.160 --> 00:05:26.220
Und allein

00:05:26.220 --> 00:05:27.040
nur das zurückgeben.

00:05:27.880 --> 00:05:30.260
Um das hinzukriegen, muss ich sehr tief in CrispyForms

00:05:30.260 --> 00:05:31.740
reingucken, wie das eigentlich funktioniert und so.

00:05:31.860 --> 00:05:33.180
Und wie die ganzen Tablet-Packs funktionieren.

00:05:34.100 --> 00:05:35.980
Und ja, da dachte ich mir, oh mein Gott,

00:05:36.020 --> 00:05:38.080
das muss weg. Das kann nicht so bleiben. Das ist alles schrecklich.

00:05:39.360 --> 00:05:39.820
Was heißt das?

00:05:40.800 --> 00:05:41.160
Formtweaks?

00:05:42.020 --> 00:05:43.000
Ah, Django Formtweaks.

00:05:43.220 --> 00:05:46.040
Das macht es ein bisschen schöner, aber nimmt das Problem

00:05:46.040 --> 00:05:46.860
auch nicht so ganz weg.

00:05:48.200 --> 00:06:01.260
und letztlich habe ich dann auch, eigentlich habe ich auch so ein Riesentemplate, was alles durchrendert, also alles durchloopt und dann letztlich dann die EFAP-Fragen macht, falls irgendwas irgendwo schiefläuft.

00:06:01.520 --> 00:06:08.920
Aber das ist jetzt auch einfacher, dadurch, dass man angeben kann, okay, ich will jetzt dieses Template und man muss dann nicht mehr sagen, okay, ich include das Form.

00:06:08.920 --> 00:06:23.700
Ja, aber wie löst du da das Problem, wenn du jetzt zum Beispiel quasi HTMLX verwendest und sagst, okay, wenn da jemand draufklickt, dann wird das, eigentlich möchte ich nur einen kleinen Teil austauschen, das geht dann ja wahrscheinlich nicht so einfach, wenn du das Formular in einem großen Template rennerst

00:06:23.700 --> 00:06:26.760
Ja, du

00:06:26.760 --> 00:06:28.460
sagst ja, wohin das

00:06:28.460 --> 00:06:30.060
soll, letztlich.

00:06:30.960 --> 00:06:31.300
Und

00:06:31.300 --> 00:06:34.940
da über den Response kannst du dann

00:06:34.940 --> 00:06:35.440
letztlich

00:06:35.440 --> 00:06:38.360
das ändern.

00:06:42.020 --> 00:06:43.060
Tatsächlich muss ich sagen,

00:06:43.460 --> 00:06:45.400
wenn ich dann in so ein spezielleres

00:06:45.400 --> 00:06:47.160
Form gehe, was halt nicht so 0815 ist,

00:06:47.760 --> 00:06:48.920
dann schreibe ich die auch

00:06:48.920 --> 00:06:51.300
komplett von der Pike auf.

00:06:52.020 --> 00:06:53.120
Ich dann die meiste

00:06:53.120 --> 00:06:55.220
Control ab, weil mir da Django einfach nicht so

00:06:55.220 --> 00:06:56.080
genug entgegenkommt.

00:06:56.940 --> 00:06:59.040
Ich verstehe das durchaus, aber zum Beispiel

00:06:59.040 --> 00:07:00.640
den Fall, den wir da hatten,

00:07:01.260 --> 00:07:03.160
der war halt, dass es ganz viele

00:07:03.160 --> 00:07:05.060
unterschiedliche Formulare gab, aber

00:07:05.060 --> 00:07:07.020
viele der Formularteile waren halt gleich.

00:07:07.440 --> 00:07:09.020
Sodass man das eigentlich so machen möchte, dass man

00:07:09.020 --> 00:07:10.660
sagen möchte, okay, dieser Teil des Formulars,

00:07:11.160 --> 00:07:13.040
das ist eine Menge Logik

00:07:13.040 --> 00:07:14.980
hinter und so, den möchte ich jetzt in unterschiedlichen

00:07:14.980 --> 00:07:16.360
Formularen irgendwie verwenden können.

00:07:17.000 --> 00:07:19.060
Und aber auch nur diesen Teil rendern und nicht

00:07:19.060 --> 00:07:19.820
das ganze Formular.

00:07:20.800 --> 00:07:22.900
Und wenn da jemand was eingibt und so,

00:07:23.120 --> 00:07:25.800
Also quasi mehr in die Component-Ebene rein.

00:07:25.860 --> 00:07:26.000
Ja.

00:07:27.000 --> 00:07:28.680
Dann vielleicht ein eigenes Feld schreiben.

00:07:28.960 --> 00:07:30.980
Und dann kann man sich das ja auch wieder holen.

00:07:31.440 --> 00:07:32.720
Das haben wir dann auch gemacht.

00:07:32.840 --> 00:07:33.240
Ja, klar.

00:07:33.720 --> 00:07:35.340
Genau, das wäre dann auch mein Ersatz.

00:07:36.260 --> 00:07:38.580
Ja, aber es war alles nicht so ganz...

00:07:38.580 --> 00:07:40.100
Also das wird jetzt mit Python und mit Dango 4.

00:07:40.240 --> 00:07:42.080
Genau, also angeblich braucht man das nicht mehr.

00:07:42.260 --> 00:07:44.240
Angeblich braucht man Crispy Forms unter Umständen nicht mehr

00:07:44.240 --> 00:07:45.560
und die ganzen Template-Packs nicht mehr.

00:07:45.560 --> 00:07:46.900
Und das kann man jetzt alles selber machen.

00:07:47.400 --> 00:07:50.460
Und das klingt sehr gut, weil das ist echt so ein...

00:07:50.460 --> 00:07:52.880
Ja, da kann es schon leicht schmerzhaft werden.

00:07:53.120 --> 00:07:54.680
Ja, genau.

00:07:54.900 --> 00:07:55.320
More News?

00:07:57.700 --> 00:07:58.820
Ansonsten irgendwie

00:07:58.820 --> 00:08:00.980
ja, Pydentic 2

00:08:00.980 --> 00:08:02.140
kommt jetzt, also

00:08:02.140 --> 00:08:04.540
beziehungsweise ist es noch nicht released, aber das

00:08:04.540 --> 00:08:06.980
wird jetzt so allmählich Richtung Release

00:08:06.980 --> 00:08:08.520
geht das

00:08:08.520 --> 00:08:10.720
und also du meintest

00:08:10.720 --> 00:08:12.980
ja auch schon mal so, genau, Pydentic Core

00:08:12.980 --> 00:08:13.980
Genau, Pydentic Core.

00:08:14.480 --> 00:08:16.540
Rust-Implementierung und Rust, dass das schnell wird.

00:08:17.380 --> 00:08:17.500
Ja.

00:08:18.580 --> 00:08:20.620
Ja, das ist ja genau,

00:08:20.620 --> 00:08:22.340
also das ist halt halt das Problem,

00:08:22.340 --> 00:08:24.060
also Pathentic hat auch so ein paar Probleme, die

00:08:24.060 --> 00:08:25.320
in ganzen

00:08:25.320 --> 00:08:28.020
Internals sind halt eher so ein bisschen

00:08:28.020 --> 00:08:30.220
ja, vielleicht

00:08:30.220 --> 00:08:32.380
nicht mehr dem Verbreitungsgrad,

00:08:32.440 --> 00:08:33.580
wie das halt verwendet wird und so,

00:08:34.120 --> 00:08:36.040
angemessen und es ist halt auch langsam,

00:08:36.160 --> 00:08:38.040
es ist sogar deutlich langsamer, als wenn man jetzt einfach nur

00:08:38.040 --> 00:08:40.220
Data Classes nimmt. Ja, oder

00:08:40.220 --> 00:08:42.300
halt Data Classes

00:08:42.300 --> 00:08:43.460
sind auch nochmal deutlich langsamer als

00:08:43.460 --> 00:08:45.140
ganz normale Klassen.

00:08:45.960 --> 00:08:47.740
Ja, okay, oder Etis oder so, glaube ich, das kann ich stellen.

00:08:47.860 --> 00:08:48.040
Ja.

00:08:50.220 --> 00:08:52.180
Und ja, das ist natürlich irgendwie ein bisschen

00:08:52.340 --> 00:08:52.980
doof.

00:08:55.860 --> 00:08:56.340
Deswegen,

00:08:56.520 --> 00:08:58.440
das ist jetzt halt in Rust neu

00:08:58.440 --> 00:09:00.000
implementiert. Da waren auch so ein paar Sachen dabei.

00:09:00.160 --> 00:09:02.040
Ich habe letztens auch einen Podcast gehört,

00:09:02.080 --> 00:09:04.320
Talk Python to Me, letzte oder vorletzte Episode,

00:09:04.480 --> 00:09:05.980
weiß ich nicht genau, mit dem

00:09:05.980 --> 00:09:08.300
Autor von Pydentic,

00:09:08.800 --> 00:09:09.400
Samuel Cohn.

00:09:11.400 --> 00:09:11.880
Und

00:09:11.880 --> 00:09:13.740
da sagte er so,

00:09:13.740 --> 00:09:15.740
da waren ein paar, weil ich normalerweise

00:09:15.740 --> 00:09:17.720
dann immer denke, das Erste, was man macht, wenn man es halt schon schnell

00:09:17.720 --> 00:09:19.960
haben will, warum nimmt man nicht einfach Saiten?

00:09:20.200 --> 00:09:21.840
Und da hat er relativ ausführlich

00:09:21.840 --> 00:09:51.820
und Jochen unterhalten sich über die Programmiersprache Python

00:09:51.840 --> 00:09:54.060
Rust-Geschichten einbinden kann.

00:09:54.540 --> 00:09:55.840
Und das macht halt...

00:09:55.840 --> 00:09:56.420
In beide Richtungen sogar.

00:09:57.420 --> 00:09:59.420
Und die Binaries werden halt

00:09:59.420 --> 00:10:01.480
deutlich kleiner und das ist natürlich schön, weil

00:10:01.480 --> 00:10:03.660
das war nicht so...

00:10:03.660 --> 00:10:05.280
Und es ist halt genau...

00:10:05.280 --> 00:10:07.700
Man kann halt alles wegputzen, was man nicht gebraucht hat oder so, glaube ich.

00:10:07.860 --> 00:10:09.980
Ja, und die ganze Parsing-Logik

00:10:09.980 --> 00:10:11.920
ist jetzt bei Python-Decor komplett

00:10:11.920 --> 00:10:14.080
in Rust und es ist halt auch gar nicht so,

00:10:14.080 --> 00:10:16.100
dass... Also bei Zeiten würde man halt

00:10:16.100 --> 00:10:18.020
sagen, okay, einige Teile macht man halt in C

00:10:18.020 --> 00:10:19.980
oder schreibt man in Zeiten, die dann nach C

00:10:19.980 --> 00:10:22.220
kompiliert wird und dann wieder. Und da ist es so,

00:10:22.380 --> 00:10:24.160
das passiert halt alles in Rust

00:10:24.160 --> 00:10:26.120
und am Schluss werden halt Python-Objekte

00:10:26.120 --> 00:10:27.980
erzeugt, aber man geht gar nicht

00:10:27.980 --> 00:10:29.700
den Umweg sozusagen

00:10:29.700 --> 00:10:32.000
da doppelt irgendwie Sachen machen

00:10:32.000 --> 00:10:34.040
zu müssen. Also ja, war

00:10:34.040 --> 00:10:35.940
auf jeden Fall sehr interessant und da bin ich mal gespannt, wie das

00:10:35.940 --> 00:10:38.080
so wird, weil ja, das ist auch

00:10:38.080 --> 00:10:38.520
immer sowas,

00:10:39.820 --> 00:10:42.040
wenn dann Leute dann aus der

00:10:42.040 --> 00:10:43.500
Google-Ecke sagen oder so, ja, wenn man

00:10:43.500 --> 00:10:45.900
viele Datenbankzeilen aus der Datenbank

00:10:45.900 --> 00:10:47.360
holt, dann ist er bei Python immer langsam.

00:10:47.360 --> 00:10:49.600
und ja, also wenn man Pydentik verwendet oder irgendwie

00:10:49.600 --> 00:10:51.520
sonst wie ein ORM und dann

00:10:51.520 --> 00:10:53.760
Objekte daraus erzeugt, also bei Pydentik

00:10:53.760 --> 00:10:55.760
ist es noch schlimmer als bei anderen ORMs,

00:10:55.900 --> 00:10:57.500
aber dann kann das halt schon

00:10:57.500 --> 00:10:59.600
sehr langsam werden, aber ich meine, das ist halt

00:10:59.600 --> 00:11:01.580
die Frage, wenn man möchte, dass es

00:11:01.580 --> 00:11:03.420
schnell ist und Millionen Zahlen aus der Datenbank holt,

00:11:03.460 --> 00:11:05.320
dann darf man halt nicht aus jeder Zahl ein Objekt machen.

00:11:05.520 --> 00:11:06.840
Das ist halt dann nicht gut.

00:11:08.360 --> 00:11:08.720
Ja.

00:11:09.360 --> 00:11:10.320
Ja, hast du noch weitere News?

00:11:11.080 --> 00:11:12.660
Nee. Ich auch, der EU-Python.

00:11:13.180 --> 00:11:14.900
Ja, das war natürlich ganz interessant.

00:11:15.640 --> 00:11:17.060
Also total tolle Veranstaltung,

00:11:17.060 --> 00:11:19.080
kann ich nur empfehlen, da teilzunehmen,

00:11:19.160 --> 00:11:20.400
wenn man da die Möglichkeit so hat.

00:11:21.280 --> 00:11:22.740
Das war in Dublin. Dublin ist natürlich auch

00:11:22.740 --> 00:11:25.060
sehenswert. Es gibt da leckere

00:11:25.060 --> 00:11:25.480
Getränke.

00:11:27.000 --> 00:11:29.000
Aber aus der Python-Bestseller-Diktatur wäre das natürlich auch schön,

00:11:29.060 --> 00:11:30.880
mal so ein bisschen die Leute zu hören

00:11:30.880 --> 00:11:31.500
und verschiedene Sachen.

00:11:32.500 --> 00:11:34.760
Vielleicht erzähle ich mal so ein bisschen, was ich ganz besonders interessant fand.

00:11:35.580 --> 00:11:36.540
Und zwar hat der Patrick,

00:11:36.580 --> 00:11:37.440
Patrick Raminio,

00:11:38.280 --> 00:11:40.260
bei Strawberry einen netten Workshop gemacht.

00:11:40.420 --> 00:11:42.200
Das war sehr schön und interessant zu hören.

00:11:42.820 --> 00:11:45.100
Das war eine GraphQL-Schnittstelle, die man einbauen kann.

00:11:45.100 --> 00:11:46.540
Das gibt es auch Strawberry Django.

00:11:47.060 --> 00:11:49.180
Dann kann man das halt direkt als GraphQL

00:11:49.180 --> 00:11:50.600
View quasi benutzen.

00:11:51.380 --> 00:11:53.020
Sehr interessante Art und Weise mit der Datenbank

00:11:53.020 --> 00:11:54.960
untergehen. Da kann man relativ gut definieren,

00:11:55.080 --> 00:11:57.060
welche Queries möglich sind auf die

00:11:57.060 --> 00:11:59.120
Datenbank und hat dann einen Endpunkt, das Exposed,

00:11:59.360 --> 00:12:01.120
den man dann halt erfragen kann, um mal so ein bisschen

00:12:01.120 --> 00:12:03.340
den Nutzer

00:12:03.340 --> 00:12:05.060
dieser API direkt entscheiden zu lassen, was er denn

00:12:05.060 --> 00:12:07.000
haben will und muss dann halt nicht die ganze Quad-Interface

00:12:07.000 --> 00:12:09.200
implementieren. Bei GraphQL

00:12:09.200 --> 00:12:10.600
habe ich immer so die Frage, also ich

00:12:10.600 --> 00:12:12.620
muss ja das ganze Schema schreiben

00:12:12.620 --> 00:12:15.020
und irgendwie habe ich immer am Ende

00:12:15.020 --> 00:12:15.840
das Gefühl, ja die

00:12:15.840 --> 00:12:20.400
Django OM gibt mir das aber eigentlich gratis, was ich dem rausgeben will.

00:12:22.160 --> 00:12:33.000
Ja, es ist so ein bisschen mismatched zwischen, man hat halt eigentlich das nochmal, weil man irgendwie dem Frontend halt so eine Art Datenbankinterface zur Verfügung stellt.

00:12:33.600 --> 00:12:41.660
Es ist schon so ein bisschen, ja, ich weiß auch nicht, also ich bin in letzter Zeit, also ich habe auch mal eine Zeit lang irgendwie intensiv GraphQL gemacht, meistens dann halt Django Graphene.

00:12:41.660 --> 00:12:56.660
Ja, das wird dann auch manchmal so unerklärlich langsam und ich mache halt mal so Probleme, das rauszukriegen dann, warum da und ja, ich glaube ich hatte auch diverse Designprobleme, auch ich glaube der Autor von Graphene meinte dann irgendwann, ach, ihr müsst das nochmal alles komplett neu schreiben und keine Ahnung.

00:12:56.700 --> 00:12:57.900
An den Punkt kommt man eigentlich immer.

00:12:57.900 --> 00:13:06.360
Ja, natürlich. Und ich weiß auch nicht, ich weiß ehrlich gesagt nicht, ob GraphQL überhaupt noch so eine Idee ist.

00:13:06.360 --> 00:13:10.220
Ich habe letztens auch kritische Stimmen gehört, in die Richtung.

00:13:10.220 --> 00:13:12.180
Ja, Armin Runacher

00:13:12.180 --> 00:13:14.080
hat es vielleicht jetzt letztens auf Twitter, da schrieb er dann so

00:13:14.080 --> 00:13:15.600
irgendwie, also, ach,

00:13:15.900 --> 00:13:17.720
das war glaube ich, oder war das der HTMX-Typ?

00:13:17.840 --> 00:13:18.820
Ich bin mir nicht mehr sicher.

00:13:19.800 --> 00:13:22.040
Der dann schrieb, naja, bedenke, dass

00:13:22.040 --> 00:13:23.820
du, ach so, genau, ich glaube,

00:13:23.880 --> 00:13:26.220
Armin Runacher hat immer gesagt, also diese GraphQL-Geschichte

00:13:26.220 --> 00:13:28.220
ist so unfassbar komplex und das wird alles so

00:13:28.220 --> 00:13:30.140
wie ist jemand

00:13:30.140 --> 00:13:32.340
jemals auf diese Idee gekommen, das so zu machen?

00:13:33.100 --> 00:13:35.780
darauf hat dann der

00:13:35.780 --> 00:13:37.960
HTMX-Autor irgendwie geantwortet und meinte so, ja, also

00:13:37.960 --> 00:13:39.880
bedenke immer, wenn du so einen

00:13:39.880 --> 00:13:41.740
generischen Datenbankendpunkt

00:13:41.740 --> 00:13:43.680
quasi deinem Frontend zur Verfügung

00:13:43.680 --> 00:13:45.600
stellst, du stellst dir nicht nur deinem Frontend

00:13:45.600 --> 00:13:47.840
zur Verfügung, sondern auch allen anderen, inklusive

00:13:47.840 --> 00:13:48.980
Leuten, die dich angreifen wollen.

00:13:49.000 --> 00:13:50.820
Ja, also du kannst auf jeden Fall schon tossen damit.

00:13:51.000 --> 00:13:53.000
Das ist natürlich extrem schwierig zu verhindern,

00:13:53.180 --> 00:13:54.480
dass das nicht geht.

00:13:56.480 --> 00:13:56.920
Also

00:13:56.920 --> 00:13:57.540
ja, ja.

00:13:58.780 --> 00:14:00.800
Also auf jeden Fall trotzdem, der Workshop war sehr interessant.

00:14:01.100 --> 00:14:02.180
Ja, aber es ist gut sein.

00:14:02.480 --> 00:14:04.700
So ein bisschen ähnlich von FastAPI,

00:14:04.860 --> 00:14:06.680
also ungefähr, also vom Prinzip her viel

00:14:06.680 --> 00:14:07.960
mit modernen Typings und so.

00:14:09.480 --> 00:14:11.020
Ja, dann gab es noch einen schönen

00:14:11.020 --> 00:14:12.600
Talk, das war auch direkt am Anfang, über

00:14:12.600 --> 00:14:14.940
einen Blog-Eintrag

00:14:14.940 --> 00:14:16.500
von Peter Norweg, und zwar

00:14:16.500 --> 00:14:18.480
hat das Luciano Romano das gemacht, und

00:14:18.480 --> 00:14:20.540
über Lisk-Screen-Parser in Python

00:14:20.540 --> 00:14:22.380
relativ kurz, das gab so ein,

00:14:22.440 --> 00:14:23.640
weiß nicht wie lang das ist,

00:14:24.420 --> 00:14:26.120
gelogen 70 Teilen oder sowas in Python,

00:14:26.440 --> 00:14:28.380
kompletter Lisk-Screen-Parser, was halt irgendwie ganz cool ist,

00:14:28.440 --> 00:14:30.360
weil man da so ein bisschen versteht, wie so ein Parser funktioniert

00:14:30.360 --> 00:14:31.940
und was so ein Ast ist und

00:14:31.940 --> 00:14:34.660
so ein Lisk-Screen ist ja relativ ähnlich zu JavaScript, glaube ich,

00:14:34.720 --> 00:14:36.540
oder so, wie man dann Tugends baut und Funktionen

00:14:36.540 --> 00:14:40.020
und fand es ganz interessant, das mal so zu sehen, auch mit

00:14:40.020 --> 00:14:41.020
Python und so versehen.

00:14:42.560 --> 00:14:46.040
Generell, wo Python überall verwendet wird,

00:14:46.280 --> 00:14:48.040
also James Webb Space Telescope

00:14:48.040 --> 00:14:51.540
von der NASA war auch jemand da, der dann sagte, hey, wie denn die Bilder

00:14:51.540 --> 00:14:54.600
in Python zur Erde geschickt werden und so, das freut man sich

00:14:54.600 --> 00:14:56.240
immer, dass es so berühmte Anwendungsfelder gibt.

00:14:58.620 --> 00:15:00.700
Die Lynn hat einen sehr schönen Talk

00:15:00.700 --> 00:15:03.420
gemacht über Everyday-RPs von Spotify.

00:15:03.420 --> 00:15:04.820
ist das eine Entwicklerin, die da

00:15:04.820 --> 00:15:07.300
einfach so einen netten Talk gemacht hat,

00:15:07.400 --> 00:15:09.500
so wie wir das auch machen, aber sie hat eine sehr hübsche

00:15:09.500 --> 00:15:11.180
Folien, die können wir auch mal verlinken.

00:15:11.320 --> 00:15:12.440
Das haben wir nicht. Genau.

00:15:13.460 --> 00:15:14.440
Da kann man sich nochmal so angucken.

00:15:15.440 --> 00:15:17.440
Abis Design, glaube ich, das war irgendwie, dann fand ich ganz

00:15:17.440 --> 00:15:17.820
interessant.

00:15:19.980 --> 00:15:21.240
Auch super, das war einer der,

00:15:21.720 --> 00:15:23.420
für mich fand ich, das war so die didaktisch besten Talks,

00:15:23.420 --> 00:15:24.780
das war von Niall O'Connor, irgendwie über

00:15:24.780 --> 00:15:27.460
Fibonacci Retrace Levels, Asset Price

00:15:27.460 --> 00:15:29.480
Prediction Reverse von der Bank of

00:15:29.480 --> 00:15:31.780
America, der ist auch so rumgespringen,

00:15:31.880 --> 00:15:32.400
hat die ganze Zeit über

00:15:32.400 --> 00:15:34.680
Resistances gesprochen und da ist

00:15:34.680 --> 00:15:36.840
immer die Folie gewechselt.

00:15:36.840 --> 00:15:39.180
Ein weiter, ein weiter, in the long run we are all dead

00:15:39.180 --> 00:15:40.840
und dann klick, klick, klick, eine Folie nach dem

00:15:40.840 --> 00:15:42.900
anderen Team. Das war super, ich fand's toll.

00:15:43.100 --> 00:15:44.660
Muss man sich eigentlich wenigstens mal angucken.

00:15:45.940 --> 00:15:46.820
Ich muss auch mal irgendwann

00:15:46.820 --> 00:15:47.820
so ein Trading-Bot bauen, keine Ahnung.

00:15:49.160 --> 00:15:50.260
Was ich auch ganz cool fand, war das

00:15:50.260 --> 00:15:52.800
Team von Huggingface

00:15:52.800 --> 00:15:54.700
war da. Die haben ja dieses

00:15:54.700 --> 00:15:56.800
DALI gemacht, das heißt, da kann man

00:15:56.800 --> 00:15:58.560
ja irgendwie durch Texteingaben Bilder

00:15:58.560 --> 00:15:59.780
generieren lassen von so einer KI.

00:15:59.780 --> 00:16:01.880
Oh, da habe ich jetzt auch, da habe ich meine

00:16:01.880 --> 00:16:03.640
Verifikation bekommen, ich kann jetzt

00:16:03.640 --> 00:16:05.440
per Dolly Bilder generieren

00:16:05.440 --> 00:16:07.700
Ja, cool, genau, ja und das Coole ist

00:16:07.700 --> 00:16:09.880
es gibt da einen Python-Wrapper drum, um HGFace

00:16:09.880 --> 00:16:11.900
der nennt sich Gradio, den kann man einfach

00:16:11.900 --> 00:16:14.060
installieren und dann kann man gerade sagen Gradio Use

00:16:14.060 --> 00:16:15.680
den Namen dieses

00:16:15.680 --> 00:16:17.700
Machine Learning Modells und kann dann direkt diese

00:16:17.700 --> 00:16:19.760
vortrainierten Modelle nehmen und die auf seine eigenen Daten schmeißen

00:16:19.760 --> 00:16:21.580
und die auch annotieren und die Features irgendwie

00:16:21.580 --> 00:16:23.520
anpassen, das fand ich sehr nice, so zum

00:16:23.520 --> 00:16:25.980
ausprobieren und so ganz schnell Machine Learning

00:16:25.980 --> 00:16:27.700
innerhalb von kurzen Teilen bauen, das war

00:16:27.700 --> 00:16:29.700
Ja, sehr cool, very nice

00:16:29.700 --> 00:16:32.720
Ja, da gab es noch so ein paar politische Talks

00:16:32.720 --> 00:16:34.640
über AI, Dystopia und so, was man alles nicht

00:16:34.640 --> 00:16:36.440
mit Killer-Robotern machen kann und so

00:16:36.440 --> 00:16:38.780
wenn man sich das nochmal angucken möchte, so die Argumentationen

00:16:38.780 --> 00:16:39.240
dahinter stecken

00:16:39.240 --> 00:16:41.900
Dann

00:16:41.900 --> 00:16:44.560
darüber, wie man 3.11 jetzt schneller

00:16:44.560 --> 00:16:46.160
gemacht hat, hat Mike Shannon gesagt

00:16:46.160 --> 00:16:47.200
Ja, das ist super

00:16:47.200 --> 00:16:49.600
Das war auch sehr schön, also ein bisschen C-Python wieder

00:16:49.600 --> 00:16:51.920
und da in dem Fall auch Sam Gross von

00:16:51.920 --> 00:16:54.400
Facebook hat was dazu gesagt, wie er

00:16:54.400 --> 00:16:56.440
No-Gill macht und wie das aussieht

00:16:56.440 --> 00:16:58.540
dass man halt in Python nicht mehr No-Gill benutzen möchte

00:16:58.540 --> 00:17:02.440
Robin habe ich gesehen, das ist ein neues

00:17:02.440 --> 00:17:04.420
Framework, ein

00:17:04.420 --> 00:17:06.760
asynchrones Python-Web-Framework, das mit einer Rust-Runtime

00:17:06.760 --> 00:17:08.500
läuft. Dann kannst du halt sowas wie Ubicon

00:17:08.500 --> 00:17:10.680
sparen vorneweg und hast halt

00:17:10.680 --> 00:17:12.580
direkt diese Rust-Runtime und das ist relativ

00:17:12.580 --> 00:17:13.980
schnell, wenn du relativ gute

00:17:13.980 --> 00:17:16.720
Anforderungen hast. Ja, das ist auf jeden Fall eine interessante

00:17:16.720 --> 00:17:18.280
Idee. Also ich meine, ich würde jetzt sagen,

00:17:19.160 --> 00:17:20.620
also ob einem das so wahnsinnig viel

00:17:20.620 --> 00:17:22.640
hilft, wenn man das jetzt in Rust

00:17:22.640 --> 00:17:24.700
also das Einzige, also ich meine, Ubicon finde ich ja eigentlich schon ganz

00:17:24.700 --> 00:17:26.540
gut, ist relativ schnell und so,

00:17:27.020 --> 00:17:27.860
aber also zum Beispiel

00:17:27.860 --> 00:17:57.860
in, wenn ich Files ausliefere, also meine Benchmarks sagen, so Ubiquon ist deutlich schneller, äh, deutlich langsamer als sowas wie Nginx und so, ich weiß nicht warum. Ich hab keine Ahnung, wahrscheinlich müsst ihr mal tiefer reingucken, was das eigentlich, also bei den Roboing ist auf jeden Fall auch diese, ähm, so ein paar Benchmarks, ich weiß halt immer nicht, du bist ja immer bei Benchmarks, bist du da ein bisschen kritisch, wie gut die sind oder wie weit gerade die sind? Ja, ja, schwierig, also sag mal so, es ist einfach schwierig, Benchmarks so zu machen, dass sie halt etwas sagen, die Informationen darüber geben, was du eigentlich wissen willst und nicht, dass du irgendwie dein Benchmark-Tool gebenchmarked hast oder deine CPU gebenchmarked hast oder den Speicherbus gebildet hast, es ist halt irgendwie,

00:17:57.860 --> 00:17:59.300
kann vielfältig schief gehen.

00:17:59.680 --> 00:18:01.980
Ja, also jedenfalls, das war super interessant.

00:18:02.340 --> 00:18:03.500
Achso, genau, ich hatte auch noch dieses

00:18:03.500 --> 00:18:05.360
Tim-Gross-Talk, da geht es halt um Reference-Counting auch,

00:18:05.520 --> 00:18:07.480
mit dem Nogel, dass man halt irgendwie das ersetzen kann.

00:18:09.200 --> 00:18:09.800
Ja, dann

00:18:09.800 --> 00:18:12.100
gab es noch

00:18:12.100 --> 00:18:13.600
einen Talk über Jot, fand ich ganz interessant,

00:18:13.720 --> 00:18:15.740
da wusste ich noch nicht alles drüber, da haben die Jessica erzählt,

00:18:16.520 --> 00:18:17.100
so ein bisschen nochmal

00:18:17.100 --> 00:18:19.740
so die Details

00:18:19.740 --> 00:18:21.400
darüber, was da für ein Payload drin ist und so weiter,

00:18:21.480 --> 00:18:23.580
das war interessant. Und noch

00:18:23.580 --> 00:18:25.400
der Luciano Roman hat noch einen über Typing.

00:18:26.300 --> 00:18:27.460
Ja, der hat ja jetzt,

00:18:27.460 --> 00:18:33.340
Also überhaupt, ich weiß nicht, ob der so bekannt ist, der Name, wenn man den sagt, dass der den Leuten interessiert.

00:18:33.600 --> 00:18:34.660
Das ist der Autor von Fluid Python.

00:18:35.880 --> 00:18:39.200
Ganz lange Zeit schon Community aktiv.

00:18:39.560 --> 00:18:43.600
Und ich finde, Python ist halt auch so eines der besten Python-Bücher, die so draußen sind.

00:18:44.080 --> 00:18:47.780
Und davon gab es jetzt auch im Frühjahr irgendwie eine zweite Ausgabe.

00:18:48.740 --> 00:18:51.200
Und da ist eine der Neuerungen ein Kapitel über Typing.

00:18:51.680 --> 00:18:52.240
Und das ist halt super.

00:18:53.900 --> 00:18:56.140
Genau, das meint ja so, wie du dich das vorgestellt hast.

00:18:56.140 --> 00:18:56.400
Das war.

00:18:56.800 --> 00:18:58.120
Ich höre dich bei der Talk bei

00:18:58.120 --> 00:18:59.700
Pythons as Guido in Tende.

00:19:00.140 --> 00:19:00.760
Ah, okay.

00:19:01.120 --> 00:19:02.480
Weil das würde mich jetzt mal interessieren,

00:19:02.560 --> 00:19:03.780
weil ich habe das,

00:19:04.000 --> 00:19:04.980
also ich habe da so ein bisschen reingelesen,

00:19:05.000 --> 00:19:05.820
ich habe es noch nicht komplett gelesen,

00:19:05.940 --> 00:19:06.920
aber so ein bisschen quer gelesen

00:19:06.920 --> 00:19:08.280
und ich weiß auch sonst,

00:19:08.340 --> 00:19:09.620
was er darüber schon mal so geschrieben hat

00:19:09.620 --> 00:19:10.940
und der war ja auch schon mal Gast

00:19:10.940 --> 00:19:11.940
in diversen Podcasts und so.

00:19:12.700 --> 00:19:14.680
Und der ist ja auch eher so ein bisschen kritisch

00:19:14.680 --> 00:19:16.100
gegenüber dieser ganzen Type-In-Geschichte.

00:19:16.480 --> 00:19:17.440
Er sagt so, meine Güte,

00:19:17.520 --> 00:19:19.160
das ist halt irgendwie ein ganz schöner Aufwand,

00:19:19.220 --> 00:19:19.720
das zu lernen

00:19:19.720 --> 00:19:21.400
und teilweise ist es ganz schön schwer.

00:19:22.260 --> 00:19:22.920
Also das Beispiel,

00:19:22.980 --> 00:19:24.240
was ich jetzt auch schon ein paar Mal gebracht habe

00:19:24.240 --> 00:19:25.720
mit Min- und Max-Funktionen

00:19:25.720 --> 00:19:27.780
und den Type-Annotationen, das kommt von

00:19:27.780 --> 00:19:29.960
ihm. Ja, ich glaube, er hat ein Protokoll

00:19:29.960 --> 00:19:32.000
entwickelt, wie man das machen kann. Also typing.protocol

00:19:32.000 --> 00:19:33.560
macht er irgendwie, um solche Sachen zu lösen.

00:19:33.680 --> 00:19:34.320
Das war ganz spannend.

00:19:34.720 --> 00:19:37.700
Ja, dann Supersearch

00:19:37.700 --> 00:19:39.760
mit OpenSearch, war noch ganz interessant.

00:19:39.940 --> 00:19:41.440
Also OpenSearch als Elasticsearch

00:19:41.440 --> 00:19:43.540
Fork, irgendwie mit Python.

00:19:43.960 --> 00:19:45.060
Ganz schöner Talk dazu.

00:19:45.920 --> 00:19:46.100
Ja,

00:19:47.100 --> 00:19:49.700
Dublin war toll, man konnte auch

00:19:49.700 --> 00:19:51.180
an den Strand fahren, war super Wetter und

00:19:51.180 --> 00:19:53.200
nette Leute kennengelernt, großer Marlene.

00:19:53.200 --> 00:19:53.900
Und ja.

00:19:55.720 --> 00:19:56.420
Ja, sehr schön.

00:19:57.420 --> 00:20:00.020
Das war eine super Veranstaltung. Kann ich empfehlen, das nächste Mal gerne wieder.

00:20:00.420 --> 00:20:02.500
Ja, nächstes Mal schaffe ich es gleich auch.

00:20:03.220 --> 00:20:04.380
Ein Gruß an Jörn Hendrik auch.

00:20:04.780 --> 00:20:05.400
War auch sehr schön.

00:20:06.660 --> 00:20:06.760
Ja.

00:20:07.860 --> 00:20:09.160
Ja, habt ihr noch News?

00:20:12.160 --> 00:20:13.700
Dann sind wir vielleicht endlich beim Thema.

00:20:14.800 --> 00:20:15.020
Ja.

00:20:15.380 --> 00:20:16.940
Das Thema ist nämlich heute Ensebel.

00:20:18.060 --> 00:20:19.720
Und ich würde sagen, jetzt ist auch der perfekte

00:20:19.720 --> 00:20:21.620
Teilpunkt für Max, dass Max sich vorstellt und

00:20:21.620 --> 00:20:22.420
Hallo sagt.

00:20:23.040 --> 00:20:24.340
Ja, hallo, ich bin Max.

00:20:24.340 --> 00:20:25.740
und

00:20:25.740 --> 00:20:28.240
ja, programmiere

00:20:28.240 --> 00:20:30.120
viel in Python,

00:20:30.760 --> 00:20:31.580
mache viel mit Django,

00:20:32.900 --> 00:20:34.080
bin bei einer

00:20:34.080 --> 00:20:36.080
Compliance-Beratung, wir kümmern uns um

00:20:36.080 --> 00:20:38.120
Datenschutz, Qualitätsmanagement,

00:20:38.640 --> 00:20:40.120
Arbeitssicherheit und eigentlich

00:20:40.120 --> 00:20:42.060
stelle ich so den Beratern die Tools

00:20:42.060 --> 00:20:43.180
zur Verfügung, damit die

00:20:43.180 --> 00:20:45.820
weniger arbeiten müssen

00:20:45.820 --> 00:20:46.960
und alles ein bisschen schöner

00:20:46.960 --> 00:20:48.700
am Ende aussieht.

00:20:50.080 --> 00:20:51.960
Und da setzen wir hauptsächlich Python

00:20:51.960 --> 00:20:53.700
ein und haben natürlich auch eine

00:20:53.700 --> 00:20:55.900
Ecke an Servern, die wir dann

00:20:55.900 --> 00:20:57.520
mit Ansible bespielen.

00:21:01.300 --> 00:21:03.900
Das heißt Ansible zur Servereinrichtung.

00:21:05.160 --> 00:21:05.900
Genau, also so.

00:21:06.280 --> 00:21:07.900
Ansible macht ja Konfigurationsmanagement.

00:21:08.880 --> 00:21:09.800
Kennt ihr alle Ansible?

00:21:10.860 --> 00:21:11.600
Ja, ich doch.

00:21:12.240 --> 00:21:13.960
Was macht Ansible? Ja genau, Konfigurationsmanagement

00:21:13.960 --> 00:21:15.720
heißt also, du rollst

00:21:15.720 --> 00:21:17.820
irgendwas auf dem Server aus und sagst dem,

00:21:18.020 --> 00:21:19.140
was das für ein Server sein soll und dann

00:21:19.140 --> 00:21:22.260
macht Ansible die ganzen Skripts und die Konfigurationen

00:21:22.260 --> 00:21:23.540
und die Einstellungen von der Kiste.

00:21:23.700 --> 00:21:26.200
Genau, also Ansible ist

00:21:26.200 --> 00:21:31.820
deklarativ, das heißt, ich sage dem Ansible nur, so soll das am Ende aussehen

00:21:31.820 --> 00:21:35.940
und dann kümmert sich das um alles

00:21:35.940 --> 00:21:37.000
weitere.

00:21:39.200 --> 00:21:43.900
Es gibt da natürlich viele verschiedene Tools, die das halt machen.

00:21:43.900 --> 00:21:48.100
Da gibt es natürlich auch Chef und Puppet, die man zum Beispiel nutzen kann.

00:21:48.220 --> 00:21:51.380
Salt gibt es natürlich auch. Das sind so die großen, die man dann

00:21:51.380 --> 00:21:53.140
letztlich hat.

00:21:53.820 --> 00:21:55.700
Und die Frage ist dann immer,

00:21:55.880 --> 00:21:58.280
okay, welches von diesen Tools nehme ich denn am Ende?

00:21:59.340 --> 00:22:00.000
Und ich finde,

00:22:00.840 --> 00:22:01.820
ja, Ansible ist halt

00:22:01.820 --> 00:22:03.880
das Tool mit der niedrigsten Hürde,

00:22:04.540 --> 00:22:05.360
weil man

00:22:05.360 --> 00:22:07.040
am Ende halt

00:22:07.040 --> 00:22:08.700
YAML schreibt

00:22:08.700 --> 00:22:12.020
und dort halt relativ klar reinschreibt,

00:22:12.020 --> 00:22:13.580
was man denn am Ende haben möchte.

00:22:14.480 --> 00:22:15.700
Und es funktioniert halt

00:22:15.700 --> 00:22:18.040
agentless, das heißt, ich muss halt

00:22:18.040 --> 00:22:19.940
vorher keinen Kontakt zu dem

00:22:19.940 --> 00:22:21.820
Server gehabt haben, also

00:22:21.820 --> 00:22:22.860
kein Agent installieren

00:22:22.860 --> 00:22:26.080
und dem werfe

00:22:26.080 --> 00:22:27.920
ich dann einfach Befehle zu und der führt die dann

00:22:27.920 --> 00:22:28.200
aus.

00:22:31.160 --> 00:22:31.940
Ja, das ist

00:22:31.940 --> 00:22:34.060
so wie, also per SSH brauchst du natürlich Zugriff.

00:22:34.220 --> 00:22:35.720
Genau, man braucht SSH-Zugriff

00:22:35.720 --> 00:22:37.980
und man braucht Python auf der Kiste.

00:22:39.480 --> 00:22:39.920
Ja, okay.

00:22:40.100 --> 00:22:40.980
Genau, und

00:22:40.980 --> 00:22:43.200
ab da läuft es dann

00:22:43.200 --> 00:22:44.340
sehr autonom.

00:22:45.760 --> 00:22:47.840
Auf der anderen Seite gibt es natürlich auch

00:22:47.840 --> 00:22:49.560
so ein paar Trade-offs in der Richtung.

00:22:49.940 --> 00:22:51.640
ist nämlich dann, dass Ansible

00:22:51.640 --> 00:22:53.440
eigentlich so den State der Maschine

00:22:53.440 --> 00:22:54.620
nicht kennt.

00:22:55.140 --> 00:22:57.580
Wenn man Agent drauf hat, der meldet dann

00:22:57.580 --> 00:22:58.780
regelmäßig zurück und sagt dann,

00:22:59.260 --> 00:23:00.980
ja hör mal, hier ist übrigens gerade

00:23:00.980 --> 00:23:03.740
die Pakete sind ausgelaufen, kannst mal ein Update

00:23:03.740 --> 00:23:05.620
machen, davon weiß

00:23:05.620 --> 00:23:06.820
Ansible dann nichts.

00:23:06.980 --> 00:23:09.300
Es geht einfach kaputt oder aus, wenn irgendwas nicht stimmt.

00:23:09.680 --> 00:23:11.480
Ja, also der hält dann

00:23:11.480 --> 00:23:13.500
State nicht, also wenn du sagst,

00:23:13.580 --> 00:23:15.560
okay, ich möchte halt immer die aktuellste Version

00:23:15.560 --> 00:23:16.820
vom Apache drauf haben,

00:23:17.840 --> 00:23:18.660
dann ist das

00:23:18.660 --> 00:23:21.060
für den Moment, wo das ausgeführt wird, so.

00:23:21.420 --> 00:23:23.180
Genau, und danach ist es halt historisch, ja.

00:23:23.420 --> 00:23:25.160
Genau, danach ist es dann gewesen.

00:23:25.980 --> 00:23:27.180
Und die andere Annahme ist natürlich

00:23:27.180 --> 00:23:29.260
dann auch, dass halt niemand

00:23:29.260 --> 00:23:30.980
auf dem Server was macht,

00:23:31.920 --> 00:23:33.500
außer über Ansible.

00:23:35.160 --> 00:23:36.880
Damit man halt den State hat,

00:23:37.000 --> 00:23:38.900
den man einmal... Aber das ist so eine Konvention, die man dann

00:23:38.900 --> 00:23:40.880
haben muss. Also es könnte ja auch anders sein. Es könnte ja auch sein,

00:23:40.980 --> 00:23:42.920
dass irgendein Admin irgendein Login hat und dann einfach irgendwas macht

00:23:42.920 --> 00:23:44.980
und das hat mit dem, was die Ansible-Wahrheit war,

00:23:45.020 --> 00:23:46.700
nichts zu tun. Genau, und deswegen

00:23:46.700 --> 00:23:49.120
und weiß ich, also wenn ich das nächste Mal

00:23:49.120 --> 00:23:50.140
dann Ansible ausführe,

00:23:51.080 --> 00:23:53.180
halt nicht, wie sieht denn jetzt die Wirklichkeit

00:23:53.180 --> 00:23:54.000
auf der Maschine aus.

00:23:56.900 --> 00:23:58.860
Ja, also vielleicht wollen wir tatsächlich so ein bisschen reingehen,

00:23:58.920 --> 00:24:00.300
was Ansible macht, wie das so macht.

00:24:00.460 --> 00:24:03.120
Ja, also ich würde sagen, generell der größte

00:24:03.120 --> 00:24:04.560
Unterschied eben zu den anderen ist halt, dass es

00:24:04.560 --> 00:24:06.340
Ancient-less ist, das ist halt ein Riesenunterschied

00:24:06.340 --> 00:24:08.920
und da kommen dann halt, also einmal ist es halt ein Riesenvolk,

00:24:08.980 --> 00:24:10.700
man braucht nur SSH, das ist alles, das hat man ja

00:24:10.700 --> 00:24:12.780
meistens, also ich würde sagen, es passt halt gut zu dieser

00:24:12.780 --> 00:24:14.980
Geschichte, was passiert eigentlich, wenn man

00:24:14.980 --> 00:24:20.260
jetzt halt eben so irgendwo sich ein Rechner klickt, dann kriegt man halt meistens ein

00:24:20.260 --> 00:24:27.900
Root-Login da. Bis dahin ist es ja meistens schon automatisiert. Ab dann ist halt die

00:24:27.900 --> 00:24:30.560
Frage, was macht man dann? Aber dann braucht man halt auch nicht mehr. Dann kann man mit

00:24:30.560 --> 00:24:33.180
Enzimid schon anfangen, während man bei anderen Sachen, da muss man halt dann irgendwie einen

00:24:33.180 --> 00:24:39.240
Agent installieren und keine Ahnung. Ja, das ist halt der Vorteil, aber es ist halt

00:24:39.240 --> 00:24:41.740
natürlich in gewisser Weise auch ein Nachteil irgendwie, weil das macht dann halt dann

00:24:41.740 --> 00:24:43.280
bestimmte Sachen eben, wie er schon angesprochen hat.

00:24:43.360 --> 00:24:45.480
Also eine Geschichte, die ich noch hinzufügen würde,

00:24:45.580 --> 00:24:46.540
ist, macht das halt auch langsam.

00:24:47.280 --> 00:24:49.260
Dadurch, dass das alles sich erst haben muss.

00:24:50.200 --> 00:24:51.680
Also wenn zum Beispiel Files kopieren,

00:24:51.780 --> 00:24:53.120
viele Files kopieren, ist halt mit

00:24:53.120 --> 00:24:55.540
templates, die dann,

00:24:55.780 --> 00:24:57.260
wie man da abzahlt, das ist halt schon relativ klar.

00:24:57.400 --> 00:24:59.400
Ja, weiß ich nicht. Das kommt wieder ein bisschen

00:24:59.400 --> 00:25:01.640
drauf an. Okay, gut. Interessant, ja.

00:25:01.860 --> 00:25:02.440
Ja, also weil,

00:25:04.060 --> 00:25:05.520
ich nehme das vielleicht erst vorweg, also was

00:25:05.520 --> 00:25:07.500
bei mir immer so ein bisschen

00:25:07.500 --> 00:25:09.600
bei dieser Infrastruktur-as-a-Service-Geschichte

00:25:09.600 --> 00:25:10.740
dazukommt, ist halt dann Terraform,

00:25:10.740 --> 00:25:12.740
weil ein Terraform-Provider

00:25:12.740 --> 00:25:14.480
halt, die sind geschrieben für

00:25:14.480 --> 00:25:16.800
AWS und

00:25:16.800 --> 00:25:18.480
Azure und Google Cloud und auch zum Beispiel

00:25:18.480 --> 00:25:20.760
Hetzner oder sowas, also jeder kann seinen eigenen Provider in Go

00:25:20.760 --> 00:25:22.140
irgendwie schreiben für

00:25:22.140 --> 00:25:24.260
Terraform, diese HashiCorp-Language,

00:25:24.640 --> 00:25:25.960
in der man dann auch in YAML

00:25:25.960 --> 00:25:28.500
Infrastruktur definieren kann, also wie sieht die

00:25:28.500 --> 00:25:30.580
tatsächliche Hardware auf, wie viele Kerne

00:25:30.580 --> 00:25:32.580
hat der Rechner, den du haben willst, wie groß ist die Platte

00:25:32.580 --> 00:25:34.580
und wie ist die Netzwerkkonfiguration

00:25:34.580 --> 00:25:36.520
von dem Ding, also das alles, was

00:25:36.520 --> 00:25:37.780
diese Cloud-Provider anbieten

00:25:37.780 --> 00:25:40.460
und dann ist jetzt die Frage, wie man das

00:25:40.460 --> 00:25:41.920
Ansible beispielsweise kombiniert.

00:25:42.600 --> 00:25:44.140
Ja, man hat halt dann entweder

00:25:44.140 --> 00:25:46.460
macht man per Ansible so Terraform,

00:25:46.540 --> 00:25:48.480
da musst du manchmal nochmal erklären, wie das funktioniert,

00:25:48.560 --> 00:25:50.480
das habe ich noch nicht ganz begriffen. Und wie ich das

00:25:50.480 --> 00:25:52.700
mache, was ich ganz nett finde, ist tatsächlich

00:25:52.700 --> 00:25:53.300
Terraform

00:25:53.300 --> 00:25:55.700
anzufangen und bei dem Apply

00:25:55.700 --> 00:25:58.560
mit die Ansible-Kommandos reinzugeben,

00:25:58.960 --> 00:26:00.660
die auf dem Server laufen sollen. Und dann

00:26:00.660 --> 00:26:01.720
bedeutet das natürlich,

00:26:02.340 --> 00:26:03.920
das ist so ein bisschen von hinten in die Musse des Auges,

00:26:03.980 --> 00:26:06.420
man muss dann so ein Cloud-Init-Skript zum Beispiel mit angeben, was dann

00:26:06.420 --> 00:26:08.420
auch quasi Ansible

00:26:08.420 --> 00:26:09.820
selbst auf dem Rechner installiert und dann

00:26:09.820 --> 00:26:12.040
ein Local Host Inventory läuft.

00:26:12.340 --> 00:26:14.060
Also das Host läuft dann halt

00:26:14.060 --> 00:26:15.260
local.

00:26:15.920 --> 00:26:17.340
Ja, kann man so machen.

00:26:17.380 --> 00:26:19.220
Ist aber sehr kompliziert, ja.

00:26:19.220 --> 00:26:21.440
Ja, du hast halt hinterher das Problem,

00:26:21.560 --> 00:26:23.360
dass du halt für Management die IPs wieder rausreichen

00:26:23.360 --> 00:26:25.200
musst und einen SSH-Zugang brauchst, den Enso benutzen

00:26:25.200 --> 00:26:27.120
kann, damit es halt dann sowas wie Upgrades

00:26:27.120 --> 00:26:29.180
oder sowas auf einen Kisten ausgerollt werden kann, wenn du

00:26:29.180 --> 00:26:31.460
da mehrere Farmen mitträumen wirst.

00:26:32.060 --> 00:26:33.160
Ich weiß nicht, ob ich das

00:26:33.160 --> 00:26:35.080
kompliziert finde, aber das ist halt

00:26:35.080 --> 00:26:37.120
so andersrum, weil du hast halt immer nur so einen Local

00:26:37.120 --> 00:26:38.360
Host, die du dann provisionst.

00:26:38.900 --> 00:26:40.180
Aber der sieht dann schon so aus, wie du willst.

00:26:40.660 --> 00:26:42.960
Vielleicht erklärst du noch mal kurz, wie es andersrum bei dir funktioniert.

00:26:43.080 --> 00:26:44.040
Erst Ansible, dann Terraform.

00:26:44.820 --> 00:26:46.980
Ja, also letztlich mache ich

00:26:46.980 --> 00:26:48.880
auch erst

00:26:48.880 --> 00:26:50.120
Terraform. Achso.

00:26:50.800 --> 00:26:52.780
Und dann lasse ich mir das

00:26:52.780 --> 00:26:54.760
Inventory dynamisch erstellen.

00:26:54.760 --> 00:26:57.100
Ah, genau. Das hätte ich jetzt auch gedacht, dass das vielleicht ein guter Weg ist.

00:26:57.120 --> 00:26:58.080
Und dann, genau.

00:26:58.500 --> 00:27:00.800
Also der andere Weg, Ansible und dann

00:27:00.800 --> 00:27:02.660
Terraform, heißt dann, okay, ich habe dann erstmal

00:27:02.660 --> 00:27:04.760
Ansible und lasse dann

00:27:05.320 --> 00:27:06.560
ja,

00:27:07.120 --> 00:27:09.220
Da soweit dann schon mal alle Templates

00:27:09.220 --> 00:27:10.960
und soweit ausfüllen, wie ich das letztlich haben möchte

00:27:10.960 --> 00:27:12.740
und starte von da aus dann den Terraform.

00:27:13.920 --> 00:27:14.920
Kann man dann auch machen.

00:27:15.420 --> 00:27:15.960
Aber ich finde,

00:27:17.840 --> 00:27:18.260
der

00:27:18.260 --> 00:27:20.340
richtige TMW wäre...

00:27:20.340 --> 00:27:21.900
Vielleicht müssen wir das nochmal kurz auseinander druseln.

00:27:21.900 --> 00:27:23.900
Also erst Ansible lässt du

00:27:23.900 --> 00:27:25.880
dann die Terraform-Templates von Ansible

00:27:25.880 --> 00:27:28.020
befüllen, dass halt quasi

00:27:28.020 --> 00:27:30.100
Terraform

00:27:30.100 --> 00:27:32.080
dann weiß, welche...

00:27:32.080 --> 00:27:33.580
Also die Frage ist halt, wo läuft dann diese

00:27:33.580 --> 00:27:35.820
Ascent-Control-Node? Läuft die dann lokal und

00:27:35.820 --> 00:27:37.840
füllt dann quasi die Terraform-Templates mit den Dingen,

00:27:37.860 --> 00:27:39.700
die du dir vorgestellt hast, über ein

00:27:39.700 --> 00:27:41.760
eigenes Ansible-Inventory

00:27:41.760 --> 00:27:43.720
oder irgendwelche Rollen, die du dir definiert hast, aus.

00:27:43.900 --> 00:27:45.660
Und dann fängt es an, dann die Infrastruktur

00:27:45.660 --> 00:27:47.820
zu deployen. Und die nächste

00:27:47.820 --> 00:27:49.600
Frage wird dann wieder, wie sehen denn

00:27:49.600 --> 00:27:51.680
die Kisten aus? Also dann muss Ansible ja quasi wieder hingehen,

00:27:51.740 --> 00:27:53.720
diese Nodes, die es erstellt hat,

00:27:54.280 --> 00:27:55.580
connecten und dann da seine

00:27:55.580 --> 00:27:57.000
Rollen aufbauen.

00:27:57.320 --> 00:27:59.680
Eine Ansible-Rolle ist quasi genau das,

00:27:59.900 --> 00:28:01.660
was man hat. Also eine Konfiguration für irgendwas.

00:28:02.000 --> 00:28:03.380
Also Rolle, Datenbank-Server, Rolle,

00:28:03.520 --> 00:28:04.360
Web-Applikation, Rolle.

00:28:04.360 --> 00:28:15.880
Wollen wir nochmal in die Definition gehen, damit wir das Thema Playbooks, Plays, Tasks und Rollen klar haben, weil ich finde, das ist das Verwirrendste. Also Inventory, damit kommt man ja irgendwie so klar.

00:28:17.140 --> 00:28:19.220
Vielleicht doch nochmal erklären, für jemand, der es noch gar nicht gehört hat.

00:28:19.220 --> 00:28:44.500
Also Inventory, das sind so meine Kisten, das ist eigentlich eine YAML oder INI-Datei und da kann ich dann die IPs oder die Server reinschreiben, die ich dann erreichen möchte und die kann ich auch ein bisschen kopieren, um dann zu sagen können, okay, das sind meine Datenbank-Server, das sind meine Web-Server und die kann ich dann letztlich in einem Playbook halt ansprechen.

00:28:44.500 --> 00:28:50.300
Also ein Playbook ist quasi eine Anleitung, welche Rollen ein Server haben soll, der die und die Bestimmung erfüllt.

00:28:50.300 --> 00:29:12.840
Ja, es ist so ein bisschen die Metapher aus dem Football. Du hast dann als Coach von deinen Servern, sagst, okay, wir spielen jetzt diesen Spielzug und alle Server, die Datenbank sind, gehen jetzt alle nach links. Und da ist dann das Play drin, wo dann drin steht, okay, das sind die einzelnen Anweisungen, die erledigt werden müssen.

00:29:12.840 --> 00:29:14.440
Okay, dann in einem Play, also dann

00:29:14.440 --> 00:29:16.580
wenn eine Rolle ausgeführt wird, in jeder Rolle stehen

00:29:16.580 --> 00:29:18.260
dann Aufgaben drin, also Tasks drin,

00:29:18.780 --> 00:29:20.760
welche alle aus diesem Föber ausgeführt werden sollen,

00:29:20.880 --> 00:29:22.740
damit das so ist, wie man

00:29:22.740 --> 00:29:24.640
sich das vorstellt. Genau, aber

00:29:24.640 --> 00:29:26.720
Play ist halt, ein Playbook kann

00:29:26.720 --> 00:29:28.000
halt Rollen benutzen, aber

00:29:28.000 --> 00:29:30.640
Play, das ist keine Rolle

00:29:30.640 --> 00:29:32.720
selber, sondern Playbook ist halt, da kann ich halt

00:29:32.720 --> 00:29:34.840
genau, Rollen drin benutzen,

00:29:34.940 --> 00:29:36.680
aber es gibt auch Leute, die das gar nicht machen, sondern die alles

00:29:36.680 --> 00:29:37.760
immer inkluden irgendwie,

00:29:38.660 --> 00:29:40.180
ist halt, ja.

00:29:40.440 --> 00:29:42.280
Ja, letztlich ist es eine Hilfe, dann

00:29:42.280 --> 00:29:44.000
seinen Code zu organisieren.

00:29:45.240 --> 00:29:46.340
Man kann natürlich auch

00:29:46.340 --> 00:29:48.060
alles in eine große Datei schreiben.

00:29:48.900 --> 00:29:50.200
Ich mache tatsächlich

00:29:50.200 --> 00:29:51.660
ganz viele Rollen irgendwie.

00:29:53.220 --> 00:29:54.400
Ich weiß nicht,

00:29:54.460 --> 00:30:04.503
aber der Ensemble Galaxy ist auch ganz sch das ist halt der Cloud Die Sammlung von Rollen die Sammlung von Rollen die kann man hochstellen Wie Pip quasi blo f Ensebel

00:30:05.182 --> 00:30:07.062
Also ich bin immer so ein bisschen picky,

00:30:07.202 --> 00:30:08.422
ich mache immer viele Sachen selber, also

00:30:08.422 --> 00:30:09.562
Notimated hier und so.

00:30:10.283 --> 00:30:10.362
Ja.

00:30:13.263 --> 00:30:14.802
Die Ensebel Galaxy

00:30:14.802 --> 00:30:16.562
gucke ich mir dann auch zur Inspiration an.

00:30:16.562 --> 00:30:16.883
Genau.

00:30:18.942 --> 00:30:19.922
Ja, und

00:30:19.922 --> 00:30:22.802
jedenfalls, da könnte man sich halt auch

00:30:22.802 --> 00:30:24.143
solche Rollen einfach inkluden von dort.

00:30:24.143 --> 00:30:26.403
und dann baut man halt seine Rollen und da

00:30:26.403 --> 00:30:28.222
legt man dann halt fest,

00:30:28.503 --> 00:30:30.503
welche Konfigurationsaufgaben

00:30:30.503 --> 00:30:32.023
ausgeführt werden müssen.

00:30:32.722 --> 00:30:34.243
Da kann man dann, weiß nicht, aus

00:30:34.243 --> 00:30:36.422
Tinder-Templates Konfigurationsdateien

00:30:36.422 --> 00:30:38.462
sich belegen und befüllen lassen mit Variablen,

00:30:38.503 --> 00:30:39.543
die man reinreicht von außen

00:30:39.543 --> 00:30:42.523
und so weiter. Das ist ja genau die Besonderheit

00:30:42.523 --> 00:30:44.222
bei Rollen. Da sind ja dann

00:30:44.222 --> 00:30:46.082
Variablen mit drin, Plugins mit drin,

00:30:46.283 --> 00:30:47.523
Templates mit drin, Dateien mit drin

00:30:47.523 --> 00:30:49.922
und das ist quasi so

00:30:49.922 --> 00:30:52.302
der Gegensatz dann zum Playbook,

00:30:52.302 --> 00:30:55.523
was das dann nicht unbedingt mit drin hat

00:30:55.523 --> 00:30:57.082
also okay, also weil ich

00:30:57.082 --> 00:30:59.562
definiere mir halt immer so Playbooks

00:30:59.562 --> 00:31:01.202
wo dann halt diese Rollenliste drin ist

00:31:01.202 --> 00:31:02.822
die benenne ich dann irgendwie immer so

00:31:02.822 --> 00:31:05.243
Setup Web Server with

00:31:05.243 --> 00:31:07.283
bla oder so

00:31:07.283 --> 00:31:07.942
ja

00:31:07.942 --> 00:31:10.423
Postgres zum Beispiel und Django auf einmal

00:31:10.423 --> 00:31:12.923
also dann wäre ja die Rolle letztlich Postgres

00:31:12.923 --> 00:31:15.102
ja, dann wäre die Rolle Postgres und Django beispielsweise

00:31:15.102 --> 00:31:15.663
genau

00:31:15.663 --> 00:31:18.942
ja und vielleicht haben die noch Dependencies, keine Ahnung, also bei mir ist zum Beispiel

00:31:18.942 --> 00:31:21.062
dann so ein Minimum Server Setup oder so

00:31:21.062 --> 00:31:21.763
mit drauf oder so

00:31:21.763 --> 00:31:24.722
und letztlich die Rollen, die

00:31:24.722 --> 00:31:26.862
soll man quasi so schreiben, dass man die

00:31:26.862 --> 00:31:28.763
wiederverwenden kann.

00:31:28.842 --> 00:31:29.883
Modular, austauschbar, egal.

00:31:30.602 --> 00:31:32.743
Postgres ist halt überall, der Postgres

00:31:32.743 --> 00:31:34.562
und der... Also ich finde das zum Beispiel

00:31:34.562 --> 00:31:36.102
schwierig, weil

00:31:36.102 --> 00:31:38.442
was Ensemble ja zum Beispiel auch ermöglicht ist,

00:31:38.523 --> 00:31:40.743
eine Unterscheidung zwischen den Betriebssystemen,

00:31:40.783 --> 00:31:42.663
die benutzt werden, also ob ich jetzt

00:31:42.663 --> 00:31:44.322
ein Meta-Enterprise habe oder ein

00:31:44.322 --> 00:31:46.322
Debian oder so und

00:31:46.322 --> 00:31:48.042
das finde ich ein bisschen blöd, weil

00:31:48.042 --> 00:31:50.722
ich habe keine Lust, immer meine Rollen

00:31:50.722 --> 00:31:52.542
für alle Systeme zu schreiben, die ich nicht benutze.

00:31:53.163 --> 00:31:53.923
Ja. Also so.

00:31:54.702 --> 00:31:55.143
Genau.

00:31:55.982 --> 00:31:58.962
Also deswegen ist es eigentlich ganz gut,

00:31:59.102 --> 00:32:00.582
die Themen so homogen zu halten,

00:32:00.722 --> 00:32:02.222
damit man nicht so viele

00:32:02.222 --> 00:32:04.783
unterstützen muss. Aber da kann man

00:32:04.783 --> 00:32:06.682
natürlich auch nochmal mit dem Inventory arbeiten

00:32:06.682 --> 00:32:08.702
und dann beim Inventory

00:32:08.702 --> 00:32:10.682
den einzelnen Servern nochmal Variablen

00:32:10.682 --> 00:32:12.542
mitgeben und sagen, okay, der ist halt

00:32:12.542 --> 00:32:14.462
anders als die anderen.

00:32:15.042 --> 00:32:15.143
Ja.

00:32:17.102 --> 00:32:18.263
Genau. Also das, ja.

00:32:18.783 --> 00:32:20.582
Ich meine, ich verstehe schon, dass Leute,

00:32:20.582 --> 00:32:22.383
diesen Fall haben. Ich habe den selber auch nicht. Bei mir sind alle

00:32:22.383 --> 00:32:24.682
Server haben irgendwie das gleiche Betriebssystem.

00:32:25.202 --> 00:32:25.722
Welches benutzt du?

00:32:26.322 --> 00:32:28.562
Ja, Debian tatsächlich Pulse I zur Zeit.

00:32:29.582 --> 00:32:30.643
Das ist nicht Arch Linux.

00:32:31.182 --> 00:32:31.743
Naja, nee.

00:32:32.283 --> 00:32:32.743
By the way.

00:32:33.523 --> 00:32:36.582
Es gibt da auch interessante

00:32:36.582 --> 00:32:38.163
Alternativen. Also womit ich ab und zu mal

00:32:38.163 --> 00:32:39.442
geliebt und ordnet habe, ist halt nix.

00:32:40.403 --> 00:32:41.842
Aber ja.

00:32:41.842 --> 00:32:43.682
Ich habe nix auch benutzt, aber nur als

00:32:43.682 --> 00:32:44.942
Server-Variante.

00:32:46.003 --> 00:32:47.722
Gerade Python ist da sehr, sehr nervig

00:32:47.722 --> 00:32:49.523
mit, weil man halt gar nicht so

00:32:49.523 --> 00:32:51.623
wie Paketmanagement, wo er seine Projekte

00:32:51.623 --> 00:32:53.302
verwalten kann, sondern muss halt jedes Mal seine eigenen

00:32:53.302 --> 00:32:55.342
Environments irgendwie zusammenfummeln und ist

00:32:55.342 --> 00:32:57.342
nicht alles verfügbar und das ist einfach

00:32:57.342 --> 00:32:59.743
sehr, sehr viel Maintenance-Arbeit,

00:32:59.822 --> 00:33:00.962
wenn man da irgendwie Updates fahren will.

00:33:02.102 --> 00:33:03.663
Man hat halt sehr viel Kontrolle,

00:33:04.222 --> 00:33:05.302
die man auch ausüben muss.

00:33:06.023 --> 00:33:06.903
Ja, genau.

00:33:06.962 --> 00:33:09.243
Das ist schon irgendwie sexy, aber...

00:33:09.243 --> 00:33:11.362
Genau, das würde mich eigentlich

00:33:11.362 --> 00:33:13.342
reizen, weil mir das Konzept natürlich schon irgendwie ganz

00:33:13.342 --> 00:33:15.283
gut gefällt und so, aber auf der anderen Seite

00:33:15.283 --> 00:33:17.482
irgendwie Debian benutze ich halt schon so lange und kenne ich halt gut

00:33:17.482 --> 00:33:19.442
und es gibt keine Überraschungen und

00:33:19.442 --> 00:33:21.822
Die Frage ist, muss ich halt die Schlachten aussuchen?

00:33:22.822 --> 00:33:23.523
Dann würde ich sagen,

00:33:23.602 --> 00:33:25.423
dann überlebe ich damit, dass es halt irgendwie ein langweiliges

00:33:25.423 --> 00:33:26.143
Debian ist.

00:33:27.503 --> 00:33:29.802
Und dann kann ich die interessanten...

00:33:29.802 --> 00:33:31.322
meinen Innovation-Token

00:33:31.322 --> 00:33:33.163
irgendwo anders ausgeben, wo es halt vielleicht

00:33:33.163 --> 00:33:35.442
irgendwie mehr bringt. Aber es reizt mich schon,

00:33:35.503 --> 00:33:36.003
das muss ich sagen.

00:33:37.523 --> 00:33:39.542
Ja, also bei der Definition

00:33:39.542 --> 00:33:41.222
jetzt, ich glaube, wo waren wir denn?

00:33:41.423 --> 00:33:42.923
Inventories, Playbooks, Hosts?

00:33:43.883 --> 00:33:45.743
Haben wir das klar genug definiert?

00:33:45.883 --> 00:33:46.903
Oder sind wir da auf der Suche?

00:33:46.903 --> 00:33:48.903
Ja, genau.

00:33:49.442 --> 00:33:51.822
Ich wollte irgendwas sagen, ich habe es wieder vergessen.

00:33:52.143 --> 00:33:53.322
Ich glaube, ich habe diesen Fall eben auch,

00:33:53.442 --> 00:33:55.763
das nervt mich auch in diesen Rollen, die man halt von

00:33:55.763 --> 00:33:57.602
Galaxy

00:33:57.602 --> 00:33:59.722
bekommt, ja eben sowas wie Postgres

00:33:59.722 --> 00:34:01.023
zum Beispiel. Also

00:34:01.023 --> 00:34:03.783
was ich dann, wenn ich diese Rolle, wenn ich, ich weiß nicht,

00:34:03.822 --> 00:34:05.722
ob ihr die kennt, die habe ich mal

00:34:05.722 --> 00:34:07.283
irgendwann benutzt, ich weiß nicht, ob es ja noch aktuell ist.

00:34:07.663 --> 00:34:09.102
Da gibt es immer einen, der schreibt die alle.

00:34:09.703 --> 00:34:11.163
Wie heißt der? Gerling? Genau.

00:34:11.383 --> 00:34:12.903
Der hat auch ein richtig gutes

00:34:12.903 --> 00:34:15.302
Buch über Ansible

00:34:15.302 --> 00:34:17.383
und noch ein paar gute YouTube-Videos.

00:34:17.802 --> 00:34:18.943
Alle in die Show Notes? Genau.

00:34:18.943 --> 00:34:20.782
und der hat auch einen Vortrag,

00:34:21.302 --> 00:34:22.743
wie man rausfindet,

00:34:23.863 --> 00:34:24.923
welche Rollen

00:34:24.923 --> 00:34:26.302
gut sind in der Ansible Galaxy.

00:34:26.903 --> 00:34:29.042
Hat dann ein Schaubild gesagt

00:34:29.042 --> 00:34:30.522
mit so ein bisschen Augenzwinkern.

00:34:30.943 --> 00:34:32.403
Also man guckt dann, ob er der Autor ist.

00:34:32.403 --> 00:34:33.443
Ja, tatsächlich.

00:34:34.102 --> 00:34:36.302
Und wenn nicht, dann fragt man ihn an und wartet so lange,

00:34:36.423 --> 00:34:37.002
bis die da kommt.

00:34:38.042 --> 00:34:40.243
Ja, genau. Aber das Problem bei denen

00:34:40.243 --> 00:34:41.883
ist halt oft,

00:34:42.782 --> 00:34:44.302
weil der hat dann eben für Postgres zum Beispiel

00:34:44.302 --> 00:34:46.163
eine und die fand ich nicht, sondern ich habe seine gefragt

00:34:46.163 --> 00:34:46.683
und dann

00:34:46.683 --> 00:35:02.443
und einfach, das ist zwar, also den Hauptteil davon, der interessiert mich halt nicht, irgendwie die ganzen Installationen von allen möglichen Plattformen, ja, und dann der Teil, der mich interessiert für Debian, da hätte ich keine andere Version und dann muss ich das aber irgendwie patchen, dass das dann doch geht.

00:35:02.443 --> 00:35:07.322
Ja, gut, Ansible Galaxy, das ist halt für alle Anwendungsfälle

00:35:07.322 --> 00:35:12.943
und gut, also wie gesagt, eher so die Inspirationsquelle

00:35:12.943 --> 00:35:15.982
oder wenn man es halt wirklich mal schnell hochziehen will

00:35:15.982 --> 00:35:18.443
und so gucken, okay, wie sieht das so aus

00:35:18.443 --> 00:35:23.163
Ja, okay, das ist so ein bisschen der Docker-Container für den Server

00:35:23.163 --> 00:35:24.963
oder so, also so eine Rolle

00:35:24.963 --> 00:35:27.203
Ich spawne jetzt meine Server in der und der

00:35:27.203 --> 00:35:31.762
Ja, in gewisser Weise, das ist vielleicht ein guter Vergleich

00:35:31.762 --> 00:36:01.743
und so weiter.

00:36:01.762 --> 00:36:04.342
oder Docker Compose oder sowas.

00:36:05.042 --> 00:36:06.362
Nur, dass es halt irgendwie

00:36:06.362 --> 00:36:08.362
dass man die ganzen Einschränkungen

00:36:08.362 --> 00:36:09.562
nicht hat, die man bei Docker so hat.

00:36:10.163 --> 00:36:12.403
Und auch die ganzen

00:36:12.403 --> 00:36:14.143
Security-Sachen sind, finde ich, da deutlich,

00:36:14.143 --> 00:36:16.183
wenn man das so macht, deutlich klarer als jetzt bei Docker.

00:36:17.302 --> 00:36:18.163
Und, naja.

00:36:18.782 --> 00:36:19.482
Ja, nochmal so zum

00:36:19.482 --> 00:36:21.502
Abgrenzung Rolle und Playbook.

00:36:22.463 --> 00:36:24.262
Ja, Rolle ist wirklich dafür gedacht,

00:36:24.743 --> 00:36:25.703
alleine zu stehen.

00:36:25.963 --> 00:36:27.982
Bei dem Playbook, dann sage ich, okay,

00:36:28.102 --> 00:36:28.862
ich möchte halt

00:36:28.862 --> 00:36:31.743
so einen bestimmten Server auf die

00:36:31.743 --> 00:36:33.923
oder eine bestimmte Gruppe von Servern,

00:36:34.163 --> 00:36:35.883
so konfiguriert haben und

00:36:35.883 --> 00:36:37.822
eine Rolle wäre dann quasi so die

00:36:37.822 --> 00:36:39.143
Unterfunktion davon.

00:36:40.143 --> 00:36:41.762
Diese Konfiguration wird dann angewandt.

00:36:41.842 --> 00:36:42.002
Genau.

00:36:43.282 --> 00:36:45.282
Und das Playbook,

00:36:45.482 --> 00:36:46.743
wenn man sich dann

00:36:46.743 --> 00:36:49.663
so ein größeres Cluster

00:36:49.663 --> 00:36:51.463
vorstellt, enthält dann es halt

00:36:51.463 --> 00:36:53.383
mehrere Rollen. Also ein Loadbalancer,

00:36:53.802 --> 00:36:55.423
ein Webserver, eine Datenbank.

00:36:55.423 --> 00:36:57.403
Was der Running Back machen soll, was der Quarterback machen soll,

00:36:57.463 --> 00:36:58.322
wie die Defense stehen soll.

00:36:58.322 --> 00:36:59.262
Richtig, genau.

00:37:00.663 --> 00:37:01.062
Ja, ja.

00:37:02.723 --> 00:37:04.423
Okay, also ich glaube dann die grundsätzlichen

00:37:04.423 --> 00:37:06.102
haben wir definiert. Haben wir noch was vergessen?

00:37:06.203 --> 00:37:08.102
Achso, vielleicht Facts. Was ist ein Fact?

00:37:09.282 --> 00:37:10.322
Ja, das ist halt das, was

00:37:10.322 --> 00:37:12.062
Ansible irgendwie

00:37:12.062 --> 00:37:13.683
rausfindet. Also am Anfang...

00:37:13.683 --> 00:37:16.203
Die Variablen schreibt vielleicht? Ja, man macht das

00:37:16.203 --> 00:37:17.443
halt so ein Gathering Facts.

00:37:18.322 --> 00:37:19.862
Das kann man aber auch abschalten, wenn man es nicht braucht.

00:37:20.362 --> 00:37:22.443
Dinge, wo dann halt bestimmte Variablen belegt werden

00:37:22.443 --> 00:37:24.223
mit Informationen über das System

00:37:24.223 --> 00:37:25.683
auf dem man gerade irgendwie... Kommt natürlich daher,

00:37:25.683 --> 00:37:27.982
dass Ansible das erstmal nicht weiß.

00:37:27.982 --> 00:37:29.822
so, wo bin ich denn?

00:37:30.163 --> 00:37:32.022
Und da kriegt man natürlich dann auch ein schönes Python

00:37:32.022 --> 00:37:34.022
Directory zurück, was halt

00:37:34.022 --> 00:37:36.082
alles Erdenkliche auf diesem

00:37:36.082 --> 00:37:38.403
System herausgefunden hat.

00:37:38.482 --> 00:37:39.683
Da kann man auch mal schön reingucken.

00:37:40.423 --> 00:37:41.923
Ja, da ist auch viel interessantes Zeug drin.

00:37:42.223 --> 00:37:43.762
Genau. Auch noch genau die Sachen vielleicht,

00:37:43.883 --> 00:37:45.822
also die ganzen Variablen, die man irgendwie reinpiped

00:37:45.822 --> 00:37:48.082
oder die man dann behandelt als Facts oder sowas,

00:37:48.243 --> 00:37:50.203
die halt da schon drin sind, da kann man

00:37:50.203 --> 00:37:52.183
ja ganz viele Python-Funktionen

00:37:52.183 --> 00:37:54.062
auch drauf pipen, die halt relativ nativ

00:37:54.062 --> 00:37:56.123
sich anfühlen, wenn man das irgendwie

00:37:56.123 --> 00:37:57.723
verarbeiten möchte. Achso, du meinst,

00:37:57.723 --> 00:37:59.982
um nochmal andere Dinge, die da jetzt nicht drin waren,

00:38:00.123 --> 00:38:00.443
rauszusein.

00:38:01.123 --> 00:38:03.683
Man kann in einem Task sagen, Set Fact und dann

00:38:03.683 --> 00:38:04.683
halt irgendwas.

00:38:04.683 --> 00:38:06.443
Dann kann man dann Pipe, Strip,

00:38:06.602 --> 00:38:08.183
String, Station, was auch immer.

00:38:08.243 --> 00:38:09.963
Die Playbooks, die sind ja letztlich,

00:38:10.362 --> 00:38:12.443
läuft da halt auch ein Ginger2-Support hinter

00:38:12.443 --> 00:38:14.443
und das heißt, ich kann alles

00:38:14.443 --> 00:38:16.782
letztlich machen, was ich in Ginger2 machen kann

00:38:16.782 --> 00:38:18.262
mit den Facts, die

00:38:18.262 --> 00:38:20.223
vorher Ansible gesammelt hat und ich

00:38:20.223 --> 00:38:22.262
kann die letztlich wie ein Directory

00:38:22.262 --> 00:38:23.963
accessen, beziehungsweise ist sie ja eins

00:38:23.963 --> 00:38:26.123
und dann kann ich da alles

00:38:26.123 --> 00:38:28.102
machen, was

00:38:28.102 --> 00:38:29.282
Ginger 2 mir letztlich erlaubt.

00:38:29.403 --> 00:38:31.022
Das ist ja echt eine ganze Menge.

00:38:32.562 --> 00:38:33.322
Da vielleicht

00:38:33.322 --> 00:38:34.923
ein Exkurs. Ginger 2?

00:38:36.243 --> 00:38:37.342
Ja, Ginger 2.

00:38:38.482 --> 00:38:39.342
Templating Engine.

00:38:41.403 --> 00:38:41.883
Letztlich

00:38:41.883 --> 00:38:43.482
so wie

00:38:43.482 --> 00:38:46.163
alle Templating Engines,

00:38:46.263 --> 00:38:46.802
die man so kennt.

00:38:46.962 --> 00:38:49.102
Ist auch ähnlich.

00:38:49.982 --> 00:38:52.082
Nicht genau so.

00:38:52.203 --> 00:38:53.683
Ginger 2 ist wahrscheinlich sogar die bessere

00:38:53.683 --> 00:38:54.183
Template Language.

00:38:54.183 --> 00:38:55.663
schon ein bisschen. Genau, es gibt auch

00:38:55.663 --> 00:38:57.763
Ginger2-Support für Django, wenn man

00:38:57.763 --> 00:39:00.203
das dann machen möchte und

00:39:00.203 --> 00:39:02.423
bietet eigentlich auch die Möglichkeit,

00:39:03.282 --> 00:39:03.962
direkt Python

00:39:03.962 --> 00:39:06.062
in das Template zu schreiben oder halt in das

00:39:06.062 --> 00:39:08.062
Playbook dann und auch Funktionen zu

00:39:08.062 --> 00:39:09.683
definieren, die man dann später haben möchte.

00:39:11.123 --> 00:39:12.123
Wäre dann halt am Ende

00:39:12.123 --> 00:39:14.002
die Frage, ob man dann nicht lieber ein Modul

00:39:14.002 --> 00:39:16.243
schreibt, wo man dann direkt in Python arbeitet.

00:39:18.703 --> 00:39:19.443
Ja, okay.

00:39:20.923 --> 00:39:21.362
Interessant.

00:39:22.482 --> 00:39:23.923
Ich glaube, jetzt haben wir so ein bisschen

00:39:23.923 --> 00:39:24.383
definiert.

00:39:25.763 --> 00:39:27.962
Ich habe noch so jede Menge Fragen, die ich da irgendwie dazwischen

00:39:27.962 --> 00:39:29.423
habe, wenn man irgendwie mit dieser Sache umgeht.

00:39:29.842 --> 00:39:31.962
Aber jetzt vielleicht nochmal, warum wir kurz das definieren

00:39:31.962 --> 00:39:33.743
wollten, um diese Terraform-Enzibel-Sache

00:39:33.743 --> 00:39:34.923
nochmal so ein bisschen zu verstehen.

00:39:37.602 --> 00:39:38.022
Was

00:39:38.022 --> 00:39:39.723
spricht jetzt zum Beispiel dagegen,

00:39:40.982 --> 00:39:42.062
sowas wie dieses lokale

00:39:42.062 --> 00:39:43.842
Enzibel zu machen, deiner Meinung nach, wenn man sagt,

00:39:43.943 --> 00:39:45.482
okay, man lädt jetzt

00:39:45.482 --> 00:39:47.943
einen Localhost einfach und sagt

00:39:47.943 --> 00:39:48.763
dem, welche Rollen er hat?

00:39:50.482 --> 00:39:51.943
Ja, also wirklich

00:39:51.943 --> 00:39:53.643
viel dagegen spricht nicht. Also es ist halt

00:39:53.643 --> 00:39:55.522
anders gedacht.

00:39:56.602 --> 00:39:57.042
Und

00:39:57.042 --> 00:39:59.802
dann bin ich immer doch eher dafür,

00:39:59.842 --> 00:40:01.763
die Werkzeuge so zu benutzen,

00:40:01.842 --> 00:40:03.862
wie die letztlich gedacht sind. Klar, du würdest

00:40:03.862 --> 00:40:06.042
dir halt die SSH-Verbindung dann sparen.

00:40:06.982 --> 00:40:07.763
Nee, ich brauche die halt

00:40:07.763 --> 00:40:09.403
über Terraform muss ich die SSH-Verbindung bauen.

00:40:09.643 --> 00:40:11.443
Genau, aber nicht mehr dann die

00:40:11.443 --> 00:40:13.723
auf dem, also wenn du ja

00:40:13.723 --> 00:40:15.423
über die Local Connection gehst. Genau, ich mache dann

00:40:15.423 --> 00:40:16.862
Fire and Forget, also ich sage dem halt quasi

00:40:16.862 --> 00:40:19.643
renn los und dann macht er halt sein Endebekram.

00:40:20.542 --> 00:40:21.582
Ich habe da wenig Kontrolle

00:40:21.582 --> 00:40:23.542
drüber, ich muss halt dann auf den Servern dann in die Logs gucken

00:40:23.542 --> 00:40:25.883
oder was auch immer, um festzustellen, wo sind die denn gerade.

00:40:28.082 --> 00:40:28.763
Genau, also

00:40:28.763 --> 00:40:31.763
da gibt es ja dann auch nicht mehr diese Rückmeldung

00:40:31.763 --> 00:40:33.623
zurück. Brauche ich vielleicht

00:40:33.623 --> 00:40:35.522
am Ende auch nicht, wenn ich dann in die Logs gucke.

00:40:35.862 --> 00:40:37.443
Ja gut, man muss halt einmal ordentlich IDE backen, damit

00:40:37.443 --> 00:40:39.243
er einmal sicherstellen kann, dass ein Server das macht, was er will.

00:40:39.423 --> 00:40:39.663
Aber ja.

00:40:42.822 --> 00:40:43.562
Also es ist auf jeden Fall

00:40:43.562 --> 00:40:44.623
durchaus ein gangbarer Weg.

00:40:46.683 --> 00:40:47.602
Ist dann die Frage,

00:40:48.802 --> 00:40:49.562
ob man da

00:40:49.562 --> 00:40:51.302
ein bisschen so die Idee

00:40:51.302 --> 00:40:52.022
hinter Ansible

00:40:52.022 --> 00:40:53.143
und ja.

00:40:53.842 --> 00:40:55.842
Also ich frage mich halt, was sonst Terraform ist, weil ich

00:40:55.842 --> 00:40:58.042
frage mich halt, wie dann halt Terraform sonst aussehen soll,

00:40:58.082 --> 00:40:59.443
weil ich weiß ja gar nicht, mit

00:40:59.443 --> 00:41:02.183
Ansible anzufangen, welches Server habe ich denn denn jetzt?

00:41:02.362 --> 00:41:03.462
Ja, aber ich meine,

00:41:04.002 --> 00:41:05.703
gut, vielleicht macht ihr das, aber

00:41:05.703 --> 00:41:07.822
ich wundere mich mal, ich verwende gar keinen

00:41:07.822 --> 00:41:09.923
Terraform. Ich meine, ich habe

00:41:09.923 --> 00:41:10.962
jetzt auch nicht irgendwie

00:41:10.962 --> 00:41:14.102
jobmäßig irgendwas, große Cluster zu konfigurieren

00:41:14.102 --> 00:41:15.782
und so, wenn ich das hätte, hätte ich das vielleicht

00:41:15.782 --> 00:41:17.903
dann doch, aber so für meinen

00:41:17.903 --> 00:41:19.962
privaten oder so semi-privaten

00:41:19.962 --> 00:41:21.842
Bereich. Jochen hat gerade zugegeben, dass er sich

00:41:21.842 --> 00:41:23.842
die einzelnen Klausel einfach zusammen klickt.

00:41:23.962 --> 00:41:25.683
Ja, das hat er selbst.

00:41:25.743 --> 00:41:27.143
Und ich rufe jemanden an, der macht das dann.

00:41:28.883 --> 00:41:29.923
Aber ich kenne,

00:41:30.183 --> 00:41:31.822
es sind so wenige, ja, so Privat-

00:41:31.822 --> 00:41:33.542
Handverlesene, Server,

00:41:33.903 --> 00:41:36.943
so viele habe ich da nicht, dass ich die nicht mehr kennen würde.

00:41:37.062 --> 00:41:38.042
Da kenne ich jeden Einzelnen

00:41:38.042 --> 00:41:39.163
mit Namen sozusagen.

00:41:39.663 --> 00:41:41.322
Und die kann ich dann auch in Ventury reinschreiben.

00:41:41.362 --> 00:41:43.743
Ja, aber das ist ja eigentlich auch erst Terraform,

00:41:44.243 --> 00:41:46.062
also weil das macht ja genau das, was du da klicken würdest.

00:41:46.423 --> 00:41:46.962
Und dann Enzable.

00:41:47.362 --> 00:41:49.822
Also nur mit dem Unterschied, dass ich jetzt halt einmal hingehe

00:41:49.822 --> 00:41:51.723
und sonst in Terraform beispielsweise

00:42:21.723 --> 00:42:24.143
Moment, das wird interessant.

00:42:24.362 --> 00:42:25.322
Du machst, du

00:42:25.322 --> 00:42:27.263
connectest dich,

00:42:28.282 --> 00:42:30.163
wenn du Ansible benutzt, auf

00:42:30.163 --> 00:42:31.163
einen User? Nein.

00:42:31.923 --> 00:42:33.362
Auf dem Rechner? Nein, Moment.

00:42:34.143 --> 00:42:36.362
Ich gehe hin, ich baue eine Kiste,

00:42:36.802 --> 00:42:38.062
beispielsweise bei Hether oder bei

00:42:38.062 --> 00:42:40.203
Azure oder so, und sage dem

00:42:40.203 --> 00:42:41.462
über so ein Cloud-Init-Skript,

00:42:42.163 --> 00:42:44.243
bitte installiere Ansible

00:42:44.243 --> 00:42:46.362
lokal. Aber dann kannst du

00:42:46.362 --> 00:42:47.723
auch alles über das Cloud-Init-Skript machen.

00:42:48.403 --> 00:42:49.703
Ja, also mache ich im Prinzip schon.

00:42:49.703 --> 00:42:51.562
also, aber ich möchte

00:42:51.562 --> 00:42:53.462
halt gerne diese Flexibilität der Rollen haben,

00:42:53.842 --> 00:42:55.542
die ich dann über das Terraform-Skript

00:42:55.542 --> 00:42:57.002
reingebe, ja, das heißt, ich gebe quasi

00:42:57.002 --> 00:42:59.763
eigentlich nur den Pfad zum Playbook mit den Variablen,

00:42:59.862 --> 00:43:01.602
das kommt über Terraform, also die

00:43:01.602 --> 00:43:03.542
Extravariablen und das Playbook ist ausgeführt werden soll,

00:43:03.602 --> 00:43:05.743
kommt rein und ich klone quasi lokal

00:43:05.743 --> 00:43:07.462
das Ansible-Server-Repo

00:43:07.462 --> 00:43:09.883
und dann lasse ich da lokal

00:43:09.883 --> 00:43:11.082
mit Localhost

00:43:11.082 --> 00:43:13.883
das Playbook laufen mit den entsprechenden Variablen.

00:43:14.322 --> 00:43:15.143
Was aber auch das

00:43:15.143 --> 00:43:17.602
Geschwindigkeitsproblem, was Jochen hatte, löst, weil das halt alles

00:43:17.602 --> 00:43:18.502
lokal auf der Maschine läuft.

00:43:18.502 --> 00:43:20.362
Es kann gut sein, dass das dann schneller ist.

00:43:20.522 --> 00:43:22.203
Genau, das läuft halt dann schnell einfach durch und

00:43:22.203 --> 00:43:24.302
konfiguriert die Maschinenlokal halt einfach so, wie sie

00:43:24.302 --> 00:43:25.022
sein soll.

00:43:26.623 --> 00:43:28.562
Was ich dann natürlich machen muss, ist, also was ich

00:43:28.562 --> 00:43:30.223
auch mache, ist, ich konfiguriere jetzt meistens

00:43:30.223 --> 00:43:32.562
meinen Admin-User mit den entsprechenden Keys und tralala.

00:43:33.223 --> 00:43:34.482
Den könnte ich ja dann wieder rausgeben.

00:43:35.542 --> 00:43:36.423
Ich brauche halt den Key,

00:43:36.502 --> 00:43:37.842
der Zugriff darauf hat. Ich brauche den

00:43:37.842 --> 00:43:40.522
Nutzer-Account, der das darf

00:43:40.522 --> 00:43:42.482
und ich brauche die IP vom Server. Die kann ich mir

00:43:42.482 --> 00:43:43.982
aus den Terraform-Outputs hier wieder einsammeln

00:43:43.982 --> 00:43:45.943
und mir dann quasi so ein

00:43:45.943 --> 00:43:47.443
Service-Ansible

00:43:47.443 --> 00:43:49.082
noch da reinschreiben.

00:43:49.982 --> 00:43:51.962
Das sind aber dann trotzdem zwei Repos. Das eine Repo ist das

00:43:51.962 --> 00:43:54.022
Terraform-Repo mit diesem Service-Ansible, wo dann quasi

00:43:54.022 --> 00:43:55.842
ich mit Updates fahren kann oder sowas.

00:43:55.923 --> 00:43:58.322
Oder ich überprüfe bitte den State für alle Web-Applikationen

00:43:58.322 --> 00:44:00.042
und upgradee Django auf die neueste Variante

00:44:00.042 --> 00:44:00.362
oder so.

00:44:02.243 --> 00:44:04.183
Und auf der anderen Seite des Ansibles-Setup

00:44:04.183 --> 00:44:06.183
läuft halt über das Ansible-Repo,

00:44:06.183 --> 00:44:08.923
wo halt dann die ganzen Standard-Rollen

00:44:08.923 --> 00:44:10.082
drin sind.

00:44:10.342 --> 00:44:10.962
Ah, okay.

00:44:11.982 --> 00:44:14.263
Ja, interessant. Also das ist irgendwie ganz anders,

00:44:14.443 --> 00:44:15.482
als ich das mal gesagt habe.

00:44:15.482 --> 00:44:17.602
Ja, ne, witzig.

00:44:18.522 --> 00:44:19.802
Also ich muss sagen, es funktioniert ganz gut.

00:44:20.022 --> 00:44:21.602
Es witzigt sich auch so ein bisschen von hinten, wie ich Brustsatz

00:44:21.602 --> 00:44:23.723
habe, ich habe mehrere Blog-Einträge durchgelesen

00:44:23.723 --> 00:44:25.123
mit so für und wieder und ich,

00:44:25.542 --> 00:44:27.663
das war am Anfang so ein bisschen halt gefummelt, das so hinzubekommen,

00:44:27.743 --> 00:44:29.562
dass das so funktioniert, aber

00:44:29.562 --> 00:44:30.423
das funktioniert halt gut.

00:44:31.482 --> 00:44:32.403
Ja, also

00:44:32.403 --> 00:44:34.982
mein einziger Einwand wäre dann

00:44:34.982 --> 00:44:37.462
zu sagen, okay, du hast die halt

00:44:37.462 --> 00:44:38.443
dann sehr stark verknüpft.

00:44:39.842 --> 00:44:40.943
Ja, habe ich das?

00:44:43.763 --> 00:44:45.203
Ja, also schon. Also ich meine,

00:44:45.482 --> 00:44:50.002
Das will ich ja auch. Also ich will ja quasi schon sagen, was für Rollen das haben soll. Nicht nur die Hardware festlegen.

00:44:53.203 --> 00:44:57.263
Weil das ist ja auch genau das. Also ich will ja nicht nur irgendeine Hardware haben und dann sagen, okay, vielleicht das mal, das mal, das mal, das.

00:44:57.322 --> 00:44:59.862
Sondern ich habe eigentlich, wenn ich eine Hardware habe, hat die auf jeden Fall schon direkt einen Zweck.

00:45:01.302 --> 00:45:08.042
Und das läuft halt dann so, dass ich quasi Terraform-Ordner habe für jedes einzelne Projekt.

00:45:08.042 --> 00:45:14.163
Also auch für so bestimmte Rollen ist ein Terraform-Ordner Dango-Server, ein Terraform-Ordner Bucket, ein Terraform-Ordner Datenbank-Server, irgendwie so.

00:45:14.163 --> 00:45:24.203
und da werden die Sachen halt dann, kann man die auch so schnell skalieren, weil die Variablen stehen halt dann direkt mit drin und dann sagt man halt, okay, Tatmark-Server ist ein bisschen schneller oder so und hat ein bisschen andere Netzwerkkonfigurationen oder sowas.

00:45:25.183 --> 00:45:25.743
Ja, gut.

00:45:25.862 --> 00:45:26.462
Okay, ja auch.

00:45:26.462 --> 00:45:27.403
Das klingt irgendwie, ja.

00:45:27.423 --> 00:45:32.683
Genau, also erinnert mich auch so ein bisschen an Vagrant, was man vor Docker gemacht hat.

00:45:32.743 --> 00:45:38.163
Da konnte man ja auch die Ansible-Playbooks reingeben und dann hat der einen dann den Vagrant so hochgezogen, wie man das letztlich im Playbook stand.

00:45:38.482 --> 00:45:39.562
Ja, ja, ja.

00:45:39.663 --> 00:45:39.862
Also.

00:45:40.062 --> 00:45:40.723
Ja, ja, ja.

00:45:40.723 --> 00:45:43.282
Ich erinnere mich da auch noch dran, das habe ich 2000, wann war das?

00:45:43.282 --> 00:45:45.282
2012, 13

00:45:45.282 --> 00:45:47.342
habe ich das mal gemacht. Das war ziemlich schrecklich,

00:45:47.423 --> 00:45:47.903
ehrlich gesagt.

00:45:49.643 --> 00:45:50.962
Ja, aber da gab es noch kein Docker.

00:45:51.143 --> 00:45:53.282
Da gab es noch kein Docker, genau. Deswegen muss man da ein bisschen...

00:45:54.943 --> 00:45:55.582
Ja, ja, ja.

00:45:57.002 --> 00:45:57.562
Anderer Punkt.

00:45:58.302 --> 00:45:59.423
Entschuldigung, ich wollte dich nicht unterbrechen,

00:45:59.522 --> 00:46:00.002
aber...

00:46:00.002 --> 00:46:03.243
Ich zum Beispiel,

00:46:03.282 --> 00:46:03.782
ich mag es auch,

00:46:04.243 --> 00:46:06.462
den BN Desktop

00:46:06.462 --> 00:46:08.302
per Ansible auszurollen.

00:46:08.883 --> 00:46:10.982
Ja, also kann ich

00:46:10.982 --> 00:46:12.743
absolut verstehen, nur weil

00:46:12.743 --> 00:46:14.683
und ich hatte auch so eine Diskussion online,

00:46:15.362 --> 00:46:17.263
für Linux gibt es kein Endpoint-Management.

00:46:18.602 --> 00:46:20.342
Und da muss man sich einfach mal überlegen,

00:46:20.462 --> 00:46:22.582
ja, was ist denn der Endpunkt?

00:46:23.002 --> 00:46:26.482
Also was ist der Unterschied zwischen Server und Laptop bei Linux?

00:46:27.042 --> 00:46:29.123
Dass ein X11 läuft oder Valent

00:46:29.123 --> 00:46:31.423
und den Rest kann man ja genauso benutzen am Ende.

00:46:32.263 --> 00:46:34.123
Also von daher eine wunderschöne Sache,

00:46:34.223 --> 00:46:35.102
das mit Ansible zu machen.

00:46:35.342 --> 00:46:36.683
Ja, also die Alternative wäre nix gewesen.

00:46:39.822 --> 00:46:42.082
Aber dass da in mich nix genervt hat an so ein paar Punkten,

00:46:42.082 --> 00:46:43.943
weil dann habe ich dann gesagt, okay, dann mache ich es mit Enzabel, weil

00:46:43.943 --> 00:46:46.022
ich möchte auf jeden Fall eine reproduzierbare

00:46:46.022 --> 00:46:47.962
Maschine haben, weil mich nervt das jedes Mal

00:46:47.962 --> 00:46:49.623
selber rumkonfigurieren zu müssen und so

00:46:49.623 --> 00:46:52.082
und das ist halt nicht nur irgendwie dotfiles, sondern

00:46:52.082 --> 00:46:52.903
das ist halt noch mehr

00:46:52.903 --> 00:46:55.943
und deswegen wollte ich das halt bei Enzabel steuern. Da muss man halt

00:46:55.943 --> 00:46:57.943
dann immer fliegen, muss halt immer dann ein Repo

00:46:57.943 --> 00:46:59.922
haben, was halt für seinen Desktop ist, muss da halt da immer

00:46:59.922 --> 00:47:02.022
dran rumfummeln, wenn man die Konfiguration hat

00:47:02.022 --> 00:47:03.802
die updaten, aber dann kann man halt egal wo man ist einfach

00:47:03.802 --> 00:47:05.623
seine Sachen reproduzieren

00:47:05.623 --> 00:47:07.542
und wenn man auch irgendwie sein

00:47:07.542 --> 00:47:09.822
ja seine irgendwie sonstige Sachen

00:47:09.822 --> 00:47:11.683
irgendwie in der Cloud hat, dann kann man egal wo man ist einfach mit seinem

00:47:11.683 --> 00:47:13.102
System, wie man es gewohnt ist, genauso arbeiten.

00:47:13.203 --> 00:47:13.982
Das finde ich irgendwie schon nett.

00:47:14.802 --> 00:47:17.522
Ja, aber das gibt es ja auch so die Bewegung,

00:47:17.623 --> 00:47:19.562
das dann letztlich wieder über Docker zu machen.

00:47:19.822 --> 00:47:21.283
Dann auch zu sagen, okay, wir können ja auch

00:47:21.283 --> 00:47:22.763
grafische Anwendungen in Docker laufen lassen.

00:47:25.183 --> 00:47:25.302
Ja.

00:47:26.482 --> 00:47:27.842
Ja, ja, kann man auch.

00:47:27.982 --> 00:47:29.422
Aber Docker ist halt so ein Tischenlayer irgendwie noch.

00:47:29.562 --> 00:47:31.283
Das ist so ein bisschen, ich weiß nicht,

00:47:31.302 --> 00:47:33.302
ob es ein Personennummer gibt. Also ich meine, die Rechner, die wir nutzen,

00:47:33.302 --> 00:47:34.922
sind ja meistens relativ strong, aber

00:47:34.922 --> 00:47:36.922
ja.

00:47:37.842 --> 00:47:39.322
Ja, es gibt schon irgendwie so ein bisschen

00:47:39.322 --> 00:47:41.383
Einsprünge, aber es gibt inzwischen sehr, sehr

00:47:41.383 --> 00:47:43.062
häufig, dass man halt auch auf vielen Projektseiten

00:47:43.062 --> 00:47:45.342
sieht. Also ich meine gerade, ich kann es auch verstehen, wenn es

00:47:45.342 --> 00:47:46.842
halt irgendwas ist, was man einfach

00:47:46.842 --> 00:47:49.342
schwer zu installieren ist. Und da gibt es ja durchaus Software.

00:47:50.002 --> 00:47:51.263
Also man sagt, jo, okay, nimm doch

00:47:51.263 --> 00:47:53.243
hier einfach diesen Docker-Code, dann geht's.

00:47:54.542 --> 00:47:55.342
Bevor du jetzt irgendwie

00:47:55.342 --> 00:47:56.123
sowas wie zum Beispiel,

00:47:56.862 --> 00:47:59.482
es gibt halt manche Software so mit Abhängigkeiten

00:47:59.482 --> 00:47:59.942
zu

00:47:59.942 --> 00:48:03.302
Qt und so, wo man dann halt erst mal

00:48:03.302 --> 00:48:04.422
anderthalb Stunden kompilieren muss.

00:48:05.042 --> 00:48:06.962
Ja, also genau, ich glaube, das Kompilieren ist das, was lange dauert.

00:48:07.022 --> 00:48:08.623
Und Updates sind halt immer ein bisschen nervig.

00:48:08.822 --> 00:48:11.123
Wenn man halt irgendwie so Breaking Changes irgendwo hat, dann muss man alles

00:48:11.123 --> 00:48:11.562
wieder umbauen?

00:48:12.663 --> 00:48:15.102
Ja, also

00:48:15.102 --> 00:48:16.883
früher hat man auch dann

00:48:16.883 --> 00:48:18.962
mehr Ansible-Playbooks gesehen,

00:48:19.143 --> 00:48:20.783
wenn es dann um schwierige Installationen ging.

00:48:22.302 --> 00:48:23.143
Ja, leider

00:48:23.143 --> 00:48:24.422
ist es so ein bisschen auf dem

00:48:24.422 --> 00:48:25.822
absteigenden Ast.

00:48:26.883 --> 00:48:28.442
Was macht man denn jetzt? Nur Docker dann?

00:48:28.743 --> 00:48:30.763
Oft findet man halt die Docker-Container

00:48:30.763 --> 00:48:32.663
und das hier. Also wenn du das einfach

00:48:32.663 --> 00:48:34.783
dem Run sagst, dann läuft der

00:48:34.783 --> 00:48:36.042
und dann kannst du

00:48:36.042 --> 00:48:36.783
leben.

00:48:38.002 --> 00:48:39.962
Ja, das finde ich auch faszinierend, weil

00:48:39.962 --> 00:48:42.042
Ich sehe diesen Trend durchaus auch,

00:48:42.263 --> 00:48:43.482
aber ich finde ehrlich gesagt,

00:48:44.123 --> 00:48:46.183
wie fühlt es sich von der Benutzung her an?

00:48:46.903 --> 00:48:48.082
Docker wird

00:48:48.082 --> 00:48:49.203
eher immer schlimmer.

00:48:50.602 --> 00:48:52.082
Ich habe noch zwischen euch ganz gerne genutzt,

00:48:52.163 --> 00:48:54.082
aber ich weiß nicht, irgendwas finde ich nervig.

00:48:56.163 --> 00:48:57.522
Das ist immer so gekapselt auch.

00:48:57.862 --> 00:48:59.643
Ich habe nicht so den direkten Zugriff.

00:49:00.723 --> 00:49:02.082
Es nimmt

00:49:02.082 --> 00:49:03.643
einem schon irgendwie Probleme ab, aber

00:49:03.643 --> 00:49:05.862
es hat halt auch nicht so ganz

00:49:05.862 --> 00:49:08.143
die Flexibilität, wie es Demon & Ansible hat.

00:49:08.143 --> 00:49:11.802
also gerade was man bei Docker dann doch irgendwie öfter mal

00:49:11.802 --> 00:49:13.542
was einem dann passiert, so zum Beispiel irgendwie so

00:49:13.542 --> 00:49:15.482
irgendwie das Filesystem ist halt voll

00:49:15.482 --> 00:49:17.203
so, man weiß halt nicht genau warum

00:49:17.203 --> 00:49:19.243
und dann guckt man halt und denkt, ach ja deswegen

00:49:19.243 --> 00:49:22.243
ach und dann, uh, was liegt denn hier noch alles rum

00:49:22.243 --> 00:49:23.883
ich habe jetzt den container

00:49:23.883 --> 00:49:24.922
30 mal hier

00:49:24.922 --> 00:49:28.042
solche Sachen, oh Docker kommt bloß dauernd vergessen, ups

00:49:28.042 --> 00:49:30.243
an der Stelle ist die Abstraktion halt schon sehr leaky

00:49:30.243 --> 00:49:32.223
oder man muss halt sich gut mit Docker auskennen

00:49:32.223 --> 00:49:33.962
oder was ich dann halt oft sehe

00:49:33.962 --> 00:49:35.623
wie Leute dann so, so wirklich

00:49:35.623 --> 00:49:37.822
in größeren, großen Firmen, wo dann

00:49:37.822 --> 00:49:39.683
Leute da sitzen und

00:49:39.683 --> 00:49:41.763
irgendwie, wo dann das halt alles

00:49:41.763 --> 00:49:43.683
vereinheitlicht ist, wo alle Entwickler irgendwie

00:49:43.683 --> 00:49:45.743
Docker verwenden und dann so, ah ja, okay,

00:49:45.802 --> 00:49:48.042
ich muss hier ein neues Paket für das Docker-Image

00:49:48.042 --> 00:49:49.962
und dann warten die halt da irgendwie

00:49:49.962 --> 00:49:52.002
stoisch eine halbe Stunde, bis das irgendwie alles

00:49:52.002 --> 00:49:53.862
kumuliert ist und die Dinger sind halt, die

00:49:53.862 --> 00:49:55.062
Images, dann denken sie, hä,

00:49:55.643 --> 00:49:57.883
das dauert eine halbe Stunde, bis die Images

00:49:57.883 --> 00:50:00.143
da, hä, was macht ihr denn da?

00:50:00.383 --> 00:50:01.862
Und dann so, ja, das ist doch normal,

00:50:01.962 --> 00:50:03.643
das ist doch immer so, guck mal rein und so,

00:50:03.883 --> 00:50:05.243
dann nehmen sie dann halt Alpine

00:50:05.243 --> 00:50:06.243
irgendwie

00:50:06.243 --> 00:50:09.342
Linux und dann installieren sie

00:50:09.342 --> 00:50:11.302
aber NumPy und dann zieht das erstmal

00:50:11.302 --> 00:50:13.383
in GCC nach und dann wird erstmal die komplette

00:50:13.383 --> 00:50:15.143
Compiler-Toolchain irgendwie

00:50:15.143 --> 00:50:16.383
kopiliert und dann

00:50:16.383 --> 00:50:19.082
ist kein Wunder, warum das so lange dauert.

00:50:19.842 --> 00:50:21.302
Aber es ist halt irgendwie so

00:50:21.302 --> 00:50:23.042
und die Images werden riesig.

00:50:23.283 --> 00:50:25.263
Dann nehmen sie Alpine, damit die klein werden und dann werden die

00:50:25.263 --> 00:50:26.403
irgendwie anderthalb Gigabyte groß.

00:50:27.163 --> 00:50:28.283
Und dann denke ich so,

00:50:28.403 --> 00:50:30.042
also irgendwie,

00:50:30.482 --> 00:50:32.163
ihr haltet das falsch rum.

00:50:33.082 --> 00:50:34.102
Ja, genau.

00:50:35.243 --> 00:50:36.982
Das ist irgendwie das, ja.

00:50:37.663 --> 00:50:37.903
Aber

00:50:37.903 --> 00:50:40.783
ich habe das Gefühl, es

00:50:40.783 --> 00:50:43.062
hindert die Leute. Also ich denke, das ist

00:50:43.062 --> 00:50:44.562
eigentlich ein ziemliches Katastrophenszenario.

00:50:44.783 --> 00:50:45.703
Und eigentlich müsste man sagen,

00:50:46.802 --> 00:50:48.942
es müsste den Leuten doch irgendwie auffallen,

00:50:49.243 --> 00:50:50.663
dass das jetzt alles furchtbar ist, oder?

00:50:51.022 --> 00:50:52.703
Aber das ist nicht so. Die Leute

00:50:52.703 --> 00:50:54.643
halten das für normal und das ist dann jetzt halt so.

00:50:54.783 --> 00:50:56.822
Und dann verbreitet es sich trotzdem. Und das finde ich

00:50:56.822 --> 00:50:58.862
immer faszinierend. Sind wir noch bei Docker

00:50:58.862 --> 00:50:59.723
oder schon bei JavaScript?

00:51:00.223 --> 00:51:03.982
Ja, bei JavaScript.

00:51:03.982 --> 00:51:05.723
und irgendwie, ja,

00:51:05.842 --> 00:51:08.082
NPM und diesen ganzen, ja, das ist teilweise so ähnlich,

00:51:08.223 --> 00:51:08.362
ja.

00:51:09.482 --> 00:51:11.582
Es gibt doch jetzt bei LPN ganz viele andere Sachen,

00:51:11.703 --> 00:51:13.703
Dino und Bun, oder wie? Ja, aber das ist auch alles

00:51:13.703 --> 00:51:15.623
ziemlich furchtbar. Also, ich meine, gut,

00:51:15.802 --> 00:51:17.962
vielleicht liegt es irgendwann so,

00:51:18.163 --> 00:51:19.663
ja, wird das da auch mal wieder.

00:51:19.663 --> 00:51:21.502
Egal, Entschuldigung. Wir wollten nicht über

00:51:21.502 --> 00:51:23.422
da machen. Man überlebt sich halt irgendwann in die

00:51:23.422 --> 00:51:25.582
Komplexität und dann

00:51:25.582 --> 00:51:27.623
macht das auch Spaß und keiner weiß mehr,

00:51:27.723 --> 00:51:29.562
wie es geht und dann hat man auch mal so eine

00:51:29.562 --> 00:51:31.602
Expertenrolle. Das ist auch schön. Genau, also wenn keiner

00:51:31.602 --> 00:51:33.462
mehr weiß, wie es geht, dann ist es ziemlich

00:51:33.462 --> 00:51:35.922
an. Job Security

00:51:35.922 --> 00:51:37.002
ist auch ganz wichtig.

00:51:37.002 --> 00:51:37.302
Ja.

00:51:40.362 --> 00:51:41.322
Aber ja.

00:51:41.862 --> 00:51:42.002
Und

00:51:42.002 --> 00:51:44.183
ich weiß nicht.

00:51:44.942 --> 00:51:46.263
So im direkten Vergleich.

00:51:47.342 --> 00:51:48.502
Das habe ich früher gemacht.

00:51:48.602 --> 00:51:50.703
Zum Beispiel PythonPodcast.de.

00:51:50.862 --> 00:51:52.203
Wenn man sich das anguckt, das ist tatsächlich

00:51:52.203 --> 00:51:54.962
ein Cookie-Cutter-Template für Django.

00:51:55.643 --> 00:51:56.962
Und dann ist da auch

00:51:56.962 --> 00:51:58.683
ein Docker-Container oder mehrere Docker-Container,

00:51:58.743 --> 00:51:59.743
weil da ist halt auch ein Datenbank und so.

00:51:59.822 --> 00:52:02.683
Und es ist halt

00:52:02.683 --> 00:52:03.502
und irgendwie Report.

00:52:04.602 --> 00:52:06.903
Als ich angefangen habe, Sachen zu lernen,

00:52:07.002 --> 00:52:08.723
hat Jochen mir gesagt, das ist so, wie man das macht.

00:52:08.842 --> 00:52:10.403
Und dann stand ich erst mal auf dieser komplexen Ziele.

00:52:10.422 --> 00:52:12.723
Ich kam ja von Vagrant und da war das

00:52:12.723 --> 00:52:13.802
aus, als wäre das Fortschritt.

00:52:14.183 --> 00:52:16.223
Also ich musste erst mal ein paar Mal gegenhauen und habe mich jetzt mal gefragt,

00:52:16.243 --> 00:52:17.783
was ist das denn jetzt? Wie geht denn das jetzt?

00:52:18.263 --> 00:52:20.143
Muss ich mich jetzt eingeben? Muss ich mir irgendwie tausendlange

00:52:20.143 --> 00:52:21.982
Kommandozeilen, Listen schreiben?

00:52:22.342 --> 00:52:24.562
Und dann überhaupt

00:52:24.562 --> 00:52:25.962
die Introspection. Das war schon echt

00:52:25.962 --> 00:52:28.342
ein Komplexitätsmonster, muss ich sagen.

00:52:29.243 --> 00:52:29.862
Ja, also

00:52:29.862 --> 00:52:31.703
es tut mir leid, aber so ist es.

00:52:32.683 --> 00:52:34.743
und ja, aber das läuft noch

00:52:34.743 --> 00:52:35.623
alles auf Docker und so

00:52:35.623 --> 00:52:37.062
und

00:52:37.062 --> 00:52:40.743
es ist aber nicht, es ist, also wenn ich

00:52:40.743 --> 00:52:42.203
das jetzt vergleiche, ist ja auch der Betrieb davon

00:52:42.203 --> 00:52:44.763
mit irgendwie, ich mache jetzt schon seit einiger

00:52:44.763 --> 00:52:46.623
Zeit, ich habe es noch nicht geschafft, das eine auf das andere umzuziehen,

00:52:46.942 --> 00:52:48.663
also sozusagen die alte Infrastruktur läuft immer noch

00:52:48.663 --> 00:52:50.602
und ich habe den direkten Vergleich noch und letztens

00:52:50.602 --> 00:52:52.703
hatte ich da das Problem, dass da irgendwas, es ging nicht

00:52:52.703 --> 00:52:54.263
mehr und irgendwas war vollgelaufen und ich wusste,

00:52:54.542 --> 00:52:56.703
oh mein Gott, ich muss in diese Docker-Container reingucken,

00:52:56.822 --> 00:52:58.683
oh je, habe ich eigentlich ein Backup, habe ich wirklich

00:52:58.683 --> 00:53:01.042
ein Backup, hoffentlich

00:53:01.042 --> 00:53:01.883
mache ich jetzt nichts kaputt,

00:53:02.683 --> 00:53:06.962
und ich vergleiche das jetzt so mit dem, was ich jetzt mache und das ist halt

00:53:06.962 --> 00:53:10.982
irgendwie die Dinger einfach direkt via Ansible zu installieren und ich habe halt für jeden Service

00:53:10.982 --> 00:53:15.102
halt einen eigenen User und der hat halt ein eigenes Virtual-Enterter nochmal drin

00:53:15.102 --> 00:53:19.022
und das wird einfach alles so hochgezogen und

00:53:19.022 --> 00:53:22.602
hat dann auch ein schreibbares Dateisystem und so. Man kann auch so eine Backup-Rolle installieren,

00:53:22.723 --> 00:53:26.002
dann überläuft das vernünftig, jetzt weiß man auch, wo die sind, das ist alles ordentlich.

00:53:26.002 --> 00:53:30.042
Ja, aber man kann auch überall reingucken, man kann da einfach als Root mal

00:53:30.042 --> 00:53:31.982
so irgendwie über alle drüber gucken

00:53:31.982 --> 00:53:33.922
und gucken, was da so los ist. Das ist

00:53:33.922 --> 00:53:35.922
deutlich angenehmer und so viel länger

00:53:35.922 --> 00:53:37.903
sind die Playbooks nicht als die Docker-Files

00:53:37.903 --> 00:53:40.322
mit dem ganzen drumherum Start-Stopp-Zeugs,

00:53:40.403 --> 00:53:41.062
das man da sonst so hat.

00:53:41.062 --> 00:53:42.743
Ja, vor allem, wenn die einmal gut sind, dann ist das eigentlich

00:53:42.743 --> 00:53:44.243
gut. Und es ist halt viel transparenter.

00:53:45.522 --> 00:53:46.663
Ja, man muss halt gucken,

00:53:47.522 --> 00:53:48.962
welche Vorteile bietet einem

00:53:48.962 --> 00:53:50.922
letztlich der Docker-Container und nutze

00:53:50.922 --> 00:53:52.602
ich die überhaupt? Oder

00:53:52.602 --> 00:53:54.942
manchmal ist es auch ganz schön, einfach

00:53:54.942 --> 00:53:57.163
einen richtig großen Server zu haben

00:53:57.163 --> 00:53:58.962
und da laufen halt die

00:53:58.962 --> 00:54:28.942
und Jochen unterhalten sich über die Programmiersprache Python

00:54:28.962 --> 00:54:30.962
vor sich hin, weil dann sagt er, aber auf meiner

00:54:30.962 --> 00:54:32.883
Maschine läuft es und jemand klopft ihm auf die Schulter und sagt,

00:54:33.302 --> 00:54:34.903
okay, dann shippen wir eben deine Maschine.

00:54:38.403 --> 00:54:40.862
Das ist natürlich so, ja, wenn du sonst einfach

00:54:40.862 --> 00:54:42.822
nicht deployed kriegst, außer du shippst, dass das der

00:54:42.822 --> 00:54:45.022
Entwickler, dann ist Docker möglicherweise sehr gut

00:54:45.022 --> 00:54:46.982
und wenn du dann viele von solchen Sachen auf einer

00:54:46.982 --> 00:54:48.883
Maschine laufen lassen willst, dann führt vielleicht um

00:54:48.883 --> 00:54:50.143
Docker auch kein Weg drumherum.

00:54:50.683 --> 00:54:53.163
Aber das ist ja letztlich auch der Kritikpunkt

00:54:53.163 --> 00:54:54.743
an Python, dass man quasi immer die

00:54:54.743 --> 00:54:57.062
Entwicklermaschine shippen muss, damit sie überhaupt läuft.

00:54:57.683 --> 00:54:58.922
Ja, das ist natürlich auch bei

00:54:58.922 --> 00:54:59.982
so ein Problem.

00:55:01.643 --> 00:55:03.062
Ich finde Poetry löst das,

00:55:03.183 --> 00:55:04.002
wenn Poetry läuft.

00:55:04.522 --> 00:55:06.602
Ja, Poetry läuft so.

00:55:06.723 --> 00:55:09.123
Das war meine Erfahrung. Das läuft so drei Monate,

00:55:09.283 --> 00:55:10.743
vier Monate und auf einmal

00:55:10.743 --> 00:55:13.082
ist irgendwas irgendwo kaputt und dann

00:55:13.082 --> 00:55:15.042
Cache reparieren, neue Versionen

00:55:15.042 --> 00:55:16.322
installieren, pre.

00:55:17.263 --> 00:55:18.703
Fällt jetzt alles auseinander, genau.

00:55:18.822 --> 00:55:20.862
Ich stelle momentan auch

00:55:20.862 --> 00:55:23.163
Sachen, wenn ich alte Projekte habe und ich sehe,

00:55:23.163 --> 00:55:25.062
dafür bin ich noch Poetry, ich stelle es mal auf

00:55:25.062 --> 00:55:26.962
PipTools. Aber PipTools ist furchtbar.

00:55:26.962 --> 00:55:29.183
Aber PIP wird auch

00:55:29.183 --> 00:55:31.302
verfürchtert von PIP-Tools, weil letztlich ist es nur PIP.

00:55:31.683 --> 00:55:32.643
Ja, genau.

00:55:33.002 --> 00:55:34.982
Und wenn jemand PIP brechen sollte, dann

00:55:34.982 --> 00:55:36.683
fällt auf und dann machen andere Ärger.

00:55:36.942 --> 00:55:39.123
Es ist so viel Ärger, dass das dann wieder funktioniert schnell.

00:55:39.763 --> 00:55:40.663
Also genau,

00:55:40.903 --> 00:55:42.683
es ist letztlich nur PIP und

00:55:42.683 --> 00:55:44.883
man kann sich da ja Tools drumherum schreiben, die das halt

00:55:44.883 --> 00:55:45.783
angenehm zu benutzen machen.

00:55:46.223 --> 00:55:49.123
Ja, wie PUT.

00:55:50.602 --> 00:55:51.442
Oh, ich habe jetzt,

00:55:51.582 --> 00:55:53.223
das habe ich dann nochmal versucht, weil du meintest,

00:55:53.223 --> 00:55:55.723
es kann auch PIP-Tools können,

00:55:55.842 --> 00:55:56.822
also nicht so richtig, nein.

00:55:56.962 --> 00:55:57.442
Ja, genau.

00:55:58.223 --> 00:56:00.723
Und ich brauche PyProject Hummel. Also ich finde

00:56:00.723 --> 00:56:02.042
die super. Das ist eine gute Idee.

00:56:02.462 --> 00:56:02.802
Ja.

00:56:04.203 --> 00:56:04.982
Weil diese ganzen

00:56:04.982 --> 00:56:07.822
TXT-Files mit irgendwie...

00:56:07.822 --> 00:56:10.582
Ich will die ganze Konfiguration

00:56:10.582 --> 00:56:12.643
in PyProject Hummel haben. Ich will die Pakete

00:56:12.643 --> 00:56:13.302
da drin haben.

00:56:15.082 --> 00:56:16.723
Was man auch machen könnte,

00:56:16.783 --> 00:56:18.623
man kann ja einfach einen Tummel-Parser nehmen

00:56:18.623 --> 00:56:20.703
und dann die Dinger automatisch generieren

00:56:20.703 --> 00:56:21.263
aus seiner Puppe.

00:56:21.763 --> 00:56:23.322
Das ist auch wieder sehr eklig.

00:56:23.802 --> 00:56:24.203
Ja, gut.

00:56:24.482 --> 00:56:26.223
Ja, okay.

00:56:26.962 --> 00:56:35.743
Ich stelle das jetzt alles um und ich finde auch vom Deployment-Aspekt her ist PipTools deutlich angenehmer als Poetry, weil Poetry ist auch beim Deployment ganz schön hakelig.

00:56:35.903 --> 00:56:37.022
Naja, aber das habe ich jetzt gelöst.

00:56:37.643 --> 00:56:39.042
Wie installierst du denn Poetry?

00:56:39.322 --> 00:56:50.143
Also ich installiere Python, dann PipX, dann Poetry, das funktioniert gut.

00:56:50.143 --> 00:56:53.263
Ach, du installierst dann Poetry per PipX?

00:56:53.383 --> 00:56:53.582
Genau.

00:56:53.783 --> 00:56:55.183
Das ist aber nicht die empfohlene Art.

00:56:55.183 --> 00:56:57.802
Es ist furchtbar, die empfohlene Art ist furchtbar, das zu tun.

00:56:57.903 --> 00:57:00.022
Ja, das ist nämlich ein Shell-Skript runterladen und ausführen.

00:57:00.042 --> 00:57:01.683
Ja, genau, das ist komisch und deswegen per PipX,

00:57:01.842 --> 00:57:03.783
aber das funktioniert dann super und dann habe ich

00:57:03.783 --> 00:57:05.663
dann per PipX kann ich dann Potree benutzen, um

00:57:05.663 --> 00:57:07.883
halt meine Environments installieren und

00:57:07.883 --> 00:57:09.703
ein Konfig-Setting für Potree

00:57:09.703 --> 00:57:11.602
Aber das ist schon ein ganz schöner

00:57:11.602 --> 00:57:13.383
auch irgendwie... Es ist ein Playbook.

00:57:14.683 --> 00:57:15.623
Ja, ja, das ist

00:57:15.623 --> 00:57:17.362
aber ja, das funktioniert gut.

00:57:17.403 --> 00:57:19.623
Und wie kommst du an den, erzeugst du deine

00:57:19.623 --> 00:57:21.482
Virtual-Infs auch über Potree? Ja.

00:57:22.102 --> 00:57:23.683
Wie kommst du an deinen Interpreter,

00:57:23.683 --> 00:57:25.822
wenn du jetzt mal sowas wie manage migrate

00:57:25.822 --> 00:57:27.922
ausführen willst oder so im General Context?

00:57:28.042 --> 00:57:29.502
Du kannst den ja einfach dann

00:57:29.502 --> 00:57:31.042
lokal zum Beispiel nehmen.

00:57:31.763 --> 00:57:33.723
Ja, aber Poetry macht halt so

00:57:33.723 --> 00:57:35.502
komische Verzeichnisse mit einem Hash drin,

00:57:35.783 --> 00:57:37.102
die irgendwie immer anders sind. Das ist egal.

00:57:37.302 --> 00:57:39.223
Das ist nicht immer anders. Das ist reproduzierbar.

00:57:39.283 --> 00:57:41.183
Ich habe mir eine Foto geschrieben, die mit den Namen von Event.

00:57:41.362 --> 00:57:42.663
Ja, das habe ich nämlich auch gemacht. Genau.

00:57:42.683 --> 00:57:43.822
Ich sehe dann ein Muster.

00:57:44.643 --> 00:57:45.663
Genau das habe ich nämlich auch gemacht.

00:57:46.143 --> 00:57:48.623
Da gucke ich dann jetzt immer so drauf und denke mir so,

00:57:49.163 --> 00:57:51.383
warum nehme ich da an der Stelle nicht einfach ein Virtual End

00:57:51.383 --> 00:57:53.263
und dann weiß ich vorher, wo der Pfad ist.

00:57:53.263 --> 00:57:55.982
Ja, was halt geht ist, du kannst halt die Virtual Env in Project

00:57:55.982 --> 00:57:57.862
Path dann machen, das mache ich bei Deployments dann,

00:57:58.183 --> 00:57:59.502
weil dann ist das Problem erledigt.

00:57:59.862 --> 00:58:01.502
Weil dann hast du es halt einfach lokal drin liegen.

00:58:01.962 --> 00:58:03.462
Und dann kannst du den Pfad, kannst du ja auch angeben,

00:58:03.862 --> 00:58:05.562
dann macht der halt nicht irgendwo unter Envs mit

00:58:05.562 --> 00:58:07.542
Hash, sondern dann setzt das rein und das würde ich

00:58:07.542 --> 00:58:09.522
empfehlen. Aber das ist auch genau der Punkt,

00:58:09.643 --> 00:58:11.643
also benutzen wir Docker, weil wir

00:58:11.643 --> 00:58:13.643
eben daherkamen, auf Produktionsmaschinen?

00:58:13.723 --> 00:58:15.403
Ich würde fast sagen nein, weil das hat auch zu viel

00:58:15.403 --> 00:58:17.482
Hardwarefrist und man möchte ja relativ viel

00:58:17.482 --> 00:58:19.723
Kraft und auch Netzwerkprobleme hat man

00:58:19.723 --> 00:58:21.822
auch, wenn man das mit Docker macht, das ist auch sehr nervig.

00:58:21.822 --> 00:58:24.042
und deswegen würde ich die Sachen in Produktion

00:58:24.042 --> 00:58:26.062
direkt auf die Maschinen deployen, aber

00:58:26.062 --> 00:58:27.163
in Dev würde ich sagen,

00:58:27.862 --> 00:58:29.723
will man vielleicht Docker-Container benutzen zum

00:58:29.723 --> 00:58:31.903
entwickeln, weil man halt oft Entwickler hat, die auf

00:58:31.903 --> 00:58:34.002
unterschiedlichen Maschinen arbeiten, um die Konsistenz

00:58:34.002 --> 00:58:35.783
zu sichern. Also das wäre der einfachste Grund, weil

00:58:35.783 --> 00:58:37.203
die Leute halt keine Lust haben, irgendwie

00:58:37.203 --> 00:58:38.542
gleiche Sachen zu benutzen.

00:58:38.822 --> 00:58:41.082
Es gibt ja auch Entwickler, die Windows benutzen.

00:58:41.302 --> 00:58:43.942
Da kommt man dann mit Docker schon mal

00:58:43.942 --> 00:58:44.562
ein bisschen weiter.

00:58:45.102 --> 00:58:47.783
Ich musste das auch auf der Arbeit viel und da ist halt,

00:58:48.163 --> 00:58:49.582
habe ich halt auch entforst, dass wir

00:58:49.582 --> 00:58:51.723
Docker-Container nehmen, weil halt viele Sachen dann auf Linux

00:58:51.723 --> 00:58:53.223
nur kompilieren richtig und

00:58:53.223 --> 00:58:55.623
auf Windows, dass er mal von hinten durch die Brust ins Auge ist

00:58:55.623 --> 00:58:57.502
oder irgendwelche C-Libraries nachinstallieren muss,

00:58:57.822 --> 00:58:59.582
was man auch manchmal meistens hinkriegt,

00:58:59.683 --> 00:59:01.663
bis auf ein paar Ausnahmen, aber das ist manchmal sehr,

00:59:01.783 --> 00:59:03.643
sehr, sehr nervig und wenn man das mit Leuten macht, die sich

00:59:03.643 --> 00:59:05.403
da nicht gut mit auskennen, dann hat man immer

00:59:05.403 --> 00:59:07.183
Gegenüberwand und deswegen entwickeln im Docker

00:59:07.183 --> 00:59:10.163
befreit einen einfach von diesem Schmerz,

00:59:10.223 --> 00:59:11.623
weil das ist relativ klar.

00:59:12.342 --> 00:59:13.522
Wobei ich ja, also wie gesagt,

00:59:13.602 --> 00:59:15.783
mit diesem Windows-Subsystem für Linux

00:59:15.783 --> 00:59:17.643
und dann einfach da ein Debian draufhaben oder so,

00:59:17.643 --> 00:59:19.102
dann kommen wir ja auch schon relativ weit.

00:59:19.102 --> 00:59:20.422
Nur was ich jetzt letztens immer wieder

00:59:20.422 --> 00:59:22.842
doch häufiger gesehen habe, ist, dass halt, wenn

00:59:22.842 --> 00:59:24.802
dann Leute dann eine IDE verwenden, die dann wieder

00:59:24.802 --> 00:59:26.643
unter Windows läuft, dass dann irgendwie

00:59:26.643 --> 00:59:28.482
ein Fallsystem manchmal Probleme gibt oder jedenfalls

00:59:28.482 --> 00:59:30.263
Leute machen so, hä, und dann kommen hier komische Fehler.

00:59:30.582 --> 00:59:33.562
Oh, irgendwie ist das, was da in dem Linux-Fallsystem

00:59:33.562 --> 00:59:34.322
ist, nicht das gleiche.

00:59:34.922 --> 00:59:36.922
Genau, und die Pfade werden halt gemountet,

00:59:36.982 --> 00:59:38.502
also zum Beispiel in Windows-Gipfelstatt so ein

00:59:38.502 --> 00:59:40.163
fag.wc, Doppelpunkt, Backslash, bla bla bla.

00:59:40.422 --> 00:59:42.362
Das wird halt unter Mount C irgendwie abgelegt.

00:59:42.403 --> 00:59:44.562
Und dann muss man halt die Pfade tatsächlich gucken. Das muss man eigentlich

00:59:44.562 --> 00:59:45.562
über ein Weibchenvergabe machen.

00:59:46.082 --> 00:59:47.522
Die werden zum Beispiel von VS Code

00:59:47.522 --> 00:59:49.442
nicht immer direkt unterstützt, sondern nur in bestimmten

00:59:49.442 --> 00:59:51.482
Fällen und dann muss man eigentlich relativ laden

00:59:51.482 --> 00:59:52.842
und muss halt dann zum Beispiel wie jetzt Code

00:59:52.842 --> 00:59:54.883
dann das Verzeichnis machen und so.

00:59:55.542 --> 01:00:05.185
WSL hat noch ein paar andere Probleme Zum Beispiel ist es dann oft wenn man Windows hat weil dann irgendwelche Leute mit Active Directory Zugriff das einfach sperren k hat man zwei WSL drauf aber ohne Update also das kann man

01:00:05.185 --> 01:00:07.085
halt nicht richtig benutzen und die Frage ist,

01:00:07.165 --> 01:00:09.005
warum man Windows benutzen will, wenn man WSL benutzt, weil

01:00:09.005 --> 01:00:10.445
also aus der, ich sag mal,

01:00:11.025 --> 01:00:13.065
Maschinendeployment-Methode. Also der

01:00:13.065 --> 01:00:15.185
Grund, warum ich das in letzter Zeit immer gesehen

01:00:15.185 --> 01:00:16.885
habe, ist halt, weil Leute sagen, ja, ja, weil halt

01:00:16.885 --> 01:00:19.105
der Rest der Firma quasi

01:00:19.105 --> 01:00:21.045
in der Windows-Welt hängt und man mit dem kooperieren

01:00:21.045 --> 01:00:22.885
können möchte. Genau, aber so mache ich das bei mir

01:00:22.885 --> 01:00:24.865
privat auch, wenn ich Windows benutze und dann mache ich das auch mit

01:00:24.865 --> 01:00:27.005
WSL2 oder so, das ist super, aber

01:00:27.005 --> 01:00:28.585
jetzt in der Firma beispielsweise, wenn ich jetzt

01:00:28.585 --> 01:00:30.865
ein Windows-Management-System habe oder

01:00:30.865 --> 01:00:32.765
ein Team habe, was halt über Active Directory

01:00:32.765 --> 01:00:34.885
die Zugriffe kontrolliert und ausrollen will,

01:00:35.165 --> 01:00:36.745
dann macht es relativ wenig Sinn, wenn ich den Leuten dann

01:00:36.745 --> 01:00:37.885
WSL freischalte, weil dann

01:00:37.885 --> 01:00:40.985
die nämlich wieder rauskommen und das will ich ja eigentlich

01:00:40.985 --> 01:00:41.305
gar nicht.

01:00:42.505 --> 01:00:43.385
Das ist so ein bisschen blöd.

01:00:44.425 --> 01:00:46.845
Da gibt es noch nicht so die gute Lösung für oder wenig

01:00:46.845 --> 01:00:48.985
gut konfigurierte Teams

01:00:48.985 --> 01:00:50.665
würde ich jetzt sagen oder ist das gar nicht so einfach,

01:00:50.765 --> 01:00:51.805
das ordentlich zu konfigurieren?

01:00:51.805 --> 01:00:53.905
dass das halt genau diese ganzen

01:00:53.905 --> 01:00:56.025
Scherze dann nicht ermöglicht oder halt

01:00:56.025 --> 01:00:57.085
ein bisschen besser macht

01:00:57.085 --> 01:01:00.085
Ja, dann wäre die Frage, vielleicht ist es dann besser

01:01:00.085 --> 01:01:01.425
wenn die nicht auf der lokalen Maschine

01:01:01.425 --> 01:01:03.905
arbeiten, sondern

01:01:03.905 --> 01:01:05.525
mit einer IDE dann

01:01:05.525 --> 01:01:08.185
irgendwo hinkonnekten und darauf arbeiten

01:01:08.185 --> 01:01:09.205
Ja

01:01:09.205 --> 01:01:11.045
Also letztlich

01:01:11.045 --> 01:01:12.525
Und dann fällt das WLAN aus

01:01:12.525 --> 01:01:15.405
Da kann man nichts mehr machen

01:01:15.405 --> 01:01:17.885
Da weiß man gar nicht mehr, wo die Dokumentation ist

01:01:17.885 --> 01:01:20.165
Irgendwo muss man halt schärmen

01:01:20.165 --> 01:01:21.405
Das fand ich sehr witzig

01:01:21.405 --> 01:01:23.685
habe ich jetzt letztens einen Podcast

01:01:23.685 --> 01:01:25.645
gehört mit der

01:01:25.645 --> 01:01:27.745
mit einer der

01:01:27.745 --> 01:01:29.745
Engineering-Chefin und ich glaube es ist nicht CTO, sondern

01:01:29.745 --> 01:01:31.505
irgendwas drunter, aber auch Chefin von

01:01:31.505 --> 01:01:32.965
500 Entwicklern bei GitHub,

01:01:33.745 --> 01:01:35.785
die meinte, GitHub

01:01:35.785 --> 01:01:36.925
ist intern

01:01:36.925 --> 01:01:39.625
auf Codespaces umgezogen.

01:01:41.045 --> 01:01:41.745
Also quasi komplett

01:01:41.745 --> 01:01:43.105
in der Cloud.

01:01:44.225 --> 01:01:45.605
Also wie ist Code und Codespace?

01:01:45.985 --> 01:01:47.545
Also sozusagen deren

01:01:47.545 --> 01:01:49.005
komplette Entwicklungsumgebung sind halt immer

01:01:49.005 --> 01:01:51.345
auf irgendeiner Maschine

01:01:51.345 --> 01:01:52.105
bei Azure.

01:01:53.325 --> 01:01:55.265
Machen sie halt deswegen, weil sie bei Azure nicht zahlen müssen,

01:01:55.365 --> 01:01:56.045
weil sie gehört zu Microsoft.

01:01:56.045 --> 01:01:57.565
Komisch, komisch, komisch.

01:01:58.805 --> 01:02:00.165
Ja, ist natürlich praktisch.

01:02:00.825 --> 01:02:02.025
Es könnte natürlich

01:02:02.025 --> 01:02:03.945
ihren Move dahin

01:02:03.945 --> 01:02:05.685
ein wenig irgendwie

01:02:05.685 --> 01:02:07.605
genatscht haben, sozusagen,

01:02:07.805 --> 01:02:08.745
dass das passiert.

01:02:09.505 --> 01:02:11.125
Kurze Warnung an der Stelle.

01:02:11.565 --> 01:02:13.305
Die Azure Linux Web Apps

01:02:13.305 --> 01:02:15.345
laufen auf einem Windows.

01:02:17.605 --> 01:02:18.265
Unten runter,

01:02:18.365 --> 01:02:19.945
das ist so ein bisschen blöd. Das ist mir noch ein paar Mal auch gefallen,

01:02:19.945 --> 01:02:21.725
als ich irgendwelche Tracebacks bekommen habe, wo ich dachte, also ups.

01:02:23.205 --> 01:02:23.405
Ja,

01:02:23.725 --> 01:02:25.685
ich weiß auch nicht, ob das so, also ich

01:02:25.685 --> 01:02:27.785
wäre da nicht so early

01:02:27.785 --> 01:02:30.005
dabei, das zu adopten, quasi so rein

01:02:30.005 --> 01:02:31.985
in der Cloud zu kommen, aber ich kann es in gewisser

01:02:31.985 --> 01:02:33.805
Weise verstehen, weil man löst damit halt auch

01:02:33.805 --> 01:02:35.565
dieses Problem, was Docker ansonsten

01:02:35.565 --> 01:02:37.305
vielleicht dann lösen würde und halt

01:02:37.305 --> 01:02:38.825
unterschmerzen, weil ehrlich gesagt,

01:02:38.945 --> 01:02:40.885
also gut, ich kann jetzt nur von Mac sprechen,

01:02:41.645 --> 01:02:43.505
kann sein, dass es unter Windows besser ist, aber

01:02:43.505 --> 01:02:44.965
auf Mac ist Docker Desktop

01:02:44.965 --> 01:02:48.005
halt ein unfassbarer

01:02:48.005 --> 01:02:48.245
Schrott.

01:02:48.245 --> 01:02:52.325
echt. Also wie oft mir das

01:02:52.325 --> 01:02:54.385
gestorben ist und zwar auf eine Art, dass ich das nicht mehr

01:02:54.385 --> 01:02:55.125
reparieren konnte.

01:02:56.625 --> 01:02:58.305
Ja, da Updates gehen nicht oder so.

01:02:58.405 --> 01:02:59.225
Ja, Updates gehen nicht.

01:02:59.925 --> 01:03:02.425
Ich hatte es mehrfach, dass mir doch jemand gesagt hat,

01:03:02.765 --> 01:03:04.105
das Spinery ist kaputt.

01:03:04.385 --> 01:03:05.525
So nach einem Update-Versuch.

01:03:06.405 --> 01:03:06.805
Kaputt.

01:03:06.805 --> 01:03:08.665
Ganz hart einfach das wegschmeißen und dann

01:03:08.665 --> 01:03:10.525
nochmal wegschmeißen, aus der Registry,

01:03:10.625 --> 01:03:12.805
aus der Windows-Registry rauslöschen, also quasi die ganzen

01:03:12.805 --> 01:03:14.845
Pfeils irgendwo aufsammeln und rausfinden, wo die

01:03:14.845 --> 01:03:16.765
sind, wegschmeißen, neu machen, damit

01:03:16.765 --> 01:03:17.645
es funktioniert. Furchtbar.

01:03:18.245 --> 01:03:20.365
und langsam und komisch

01:03:20.365 --> 01:03:22.105
und ich verstehe nicht so richtig,

01:03:22.365 --> 01:03:24.525
warum dieses Ding so...

01:03:24.525 --> 01:03:26.125
Und wenn man davon wegkommt,

01:03:26.265 --> 01:03:27.965
dadurch, dass man das in der Cloud macht, ja, das könnte man

01:03:27.965 --> 01:03:30.065
mir vorstellen, dass es für viele Leute vielleicht durchaus...

01:03:30.065 --> 01:03:31.385
Ja, okay. Ja, wahrscheinlich.

01:03:31.865 --> 01:03:32.385
Gute Idee.

01:03:33.665 --> 01:03:35.205
Wir entwickeln die Leute dazu, wie es gut ist.

01:03:35.805 --> 01:03:38.085
Ja, also PyCharm bietet das jetzt auch,

01:03:38.685 --> 01:03:40.365
dass man in der Cloud arbeiten kann.

01:03:40.505 --> 01:03:42.205
In derselben? Oder ist das dann um zwei unterschiedliche?

01:03:42.325 --> 01:03:44.045
Also muss man sich entscheiden? Oder kann man die

01:03:44.045 --> 01:03:44.845
parallel benutzen?

01:03:45.585 --> 01:03:47.605
Ich glaube, das sind unterschiedliche.

01:03:47.605 --> 01:03:49.805
bietet nämlich da glaube ich, also

01:03:49.805 --> 01:03:51.705
es gibt dann wieder so ein Angebot,

01:03:52.585 --> 01:03:54.065
dass man da so

01:03:54.065 --> 01:03:55.845
Dev Spaces zusammen hat.

01:03:56.345 --> 01:03:57.885
Bist du PyCharm oder VS Code?

01:03:58.785 --> 01:03:59.265
PyCharm.

01:03:59.485 --> 01:04:01.725
Also PyCharm für Python

01:04:01.725 --> 01:04:04.045
und VS Code ist eigentlich ein schöner

01:04:04.045 --> 01:04:05.865
Texteditor, also wenn man das

01:04:05.865 --> 01:04:07.805
Microsoft Zeug wegnimmt und VS Codium nimmt,

01:04:07.885 --> 01:04:09.785
dann ist das ein schöner Editor und

01:04:09.785 --> 01:04:10.925
dann kann man halt

01:04:10.925 --> 01:04:12.785
viele Sachen damit machen.

01:04:13.345 --> 01:04:14.845
Ich mag es sehr gerne.

01:04:15.605 --> 01:04:17.065
Ja, aber letztlich so dieses

01:04:17.065 --> 01:04:20.505
vollintegrierte IDE, da ist man ja bei PyCharm einfach

01:04:20.505 --> 01:04:22.665
komplett

01:04:22.665 --> 01:04:26.085
ohne irgendwas konfigurieren zu müssen.

01:04:26.245 --> 01:04:29.025
Man macht es an und dann ist man drin.

01:04:29.905 --> 01:04:32.445
Würde ich auch sagen, ja, vielleicht mit Konfiguration,

01:04:32.445 --> 01:04:34.945
aber wir haben ja mit diesem Battle

01:04:34.945 --> 01:04:38.625
noch nichts gefunden, was ich nicht andersrum so oder so lösen könnte.

01:04:38.945 --> 01:04:39.745
Das ist ein Muster.

01:04:43.305 --> 01:04:45.745
Ja, also

01:04:45.745 --> 01:04:47.585
Man kann das durchaus, also ich habe beides jetzt auch schon

01:04:47.585 --> 01:04:49.765
ausgebildet, man kann durchaus beides verwenden, denke ich.

01:04:49.825 --> 01:04:51.665
Aber ich finde auch PyCharm ist halt, wenn man Python

01:04:51.665 --> 01:04:53.685
macht, ist schon, es hat auch noch so ein paar

01:04:53.685 --> 01:04:55.305
nette Funktionen. Also zum Beispiel ein Ding, das mich mir

01:04:55.305 --> 01:04:56.545
vielleicht habe ich was,

01:04:57.065 --> 01:04:59.445
ob du das mit VSCode hingekriegt hast,

01:04:59.485 --> 01:05:00.765
weil ich habe es bisher noch nicht hingekriegt,

01:05:01.305 --> 01:05:03.545
bei auf PyTest Fixtures klicken

01:05:03.545 --> 01:05:04.965
und dann im Code der Fixture landen.

01:05:05.645 --> 01:05:06.945
Das macht PyCharm einfach so.

01:05:08.425 --> 01:05:09.125
Auf die Fixtures?

01:05:09.525 --> 01:05:11.605
Ja, weil das tatsächlich ein Use Case, den ich häufig

01:05:11.605 --> 01:05:13.465
habe, wo ich dann bei VSCode dann so klicke und denke,

01:05:13.605 --> 01:05:15.645
äh, klingt das denn jetzt nicht richtig?

01:05:15.745 --> 01:05:16.725
Das funktioniert irgendwie nicht.

01:05:16.965 --> 01:05:18.405
Ach nee, wie ist gut, kann das nicht.

01:05:19.445 --> 01:05:21.325
Das fand ich auch immer sehr angenehm bei PyCharm.

01:05:21.845 --> 01:05:23.745
Dass man halt so schnell springen kann.

01:05:24.125 --> 01:05:25.045
Ja gut, das Ganze, also wie es so

01:05:25.045 --> 01:05:26.525
entwickelt ist, muss ich gerade überlegen.

01:05:27.225 --> 01:05:29.005
Muss ich mal ausprobieren. Also vielleicht gibt es irgendein Plugin,

01:05:29.065 --> 01:05:30.985
das das kann, aber so einfach so

01:05:30.985 --> 01:05:33.065
und mit dem Microsoft-Language-Server und so, das geht nicht.

01:05:33.065 --> 01:05:35.245
Aber ich finde, die entwickeln relativ schnell.

01:05:35.405 --> 01:05:37.005
Es gab auch einen Microsoft-Standard auf der Europe-Python,

01:05:37.085 --> 01:05:39.305
wo die meinten so, oh ja, voll gut, und sagt mal, was uns noch fehlt.

01:05:39.365 --> 01:05:40.425
Wir bauen das halt einfach so einfach ein.

01:05:41.265 --> 01:05:43.225
Ja, ja, da ist viel Druck hintergrat.

01:05:43.225 --> 01:05:44.045
Ja, ja.

01:05:44.045 --> 01:05:48.105
Zum Beispiel auch Azure war halt irgendwie erst auf Python 3.8 noch, da habe ich mir auch gedacht, hey Leute, geht doch gar nicht.

01:05:48.565 --> 01:05:50.085
Aber da arbeiten sie wohl dran, da ist wohl...

01:05:50.085 --> 01:05:52.425
Aber Editor Wars.

01:05:52.965 --> 01:05:54.365
Ja, wir haben es eigentlich...

01:05:54.365 --> 01:05:59.825
Also Wim ist eigentlich auch ganz gut.

01:05:59.965 --> 01:06:01.285
Ja, genau.

01:06:01.445 --> 01:06:02.425
Gut, dass hier niemand E-Mails hat.

01:06:03.345 --> 01:06:03.945
Hallo, Johann.

01:06:04.285 --> 01:06:04.825
Ja, ja, ja.

01:06:06.005 --> 01:06:08.325
Ja, oh, das ist auch ganz...

01:06:08.325 --> 01:06:11.445
Da muss man ein bisschen Zeit mitbringen, aber vielleicht...

01:06:11.445 --> 01:06:14.925
Ich hatte dann so ein nostalgisches

01:06:14.925 --> 01:06:16.665
Gefühl und dann musste ich das anhören.

01:06:17.205 --> 01:06:18.265
Lex Friedman Podcast.

01:06:19.825 --> 01:06:20.705
Eine der letzten

01:06:20.705 --> 01:06:22.445
Episoden ist mit

01:06:22.445 --> 01:06:24.065
John Carmack.

01:06:26.045 --> 01:06:28.605
Der John Carmack, der von

01:06:28.605 --> 01:06:29.205
Quake.

01:06:29.205 --> 01:06:30.565
Ja, genau.

01:06:31.685 --> 01:06:33.665
Es ist fast

01:06:33.665 --> 01:06:34.805
fünfeinhalb Stunden lang, aber

01:06:34.805 --> 01:06:39.185
für die jüngere Generation.

01:06:41.765 --> 01:06:42.785
Ein Docker-Bild.

01:06:44.225 --> 01:06:44.465
Genau.

01:06:46.545 --> 01:06:47.545
Das war sehr kurzweilig.

01:06:48.405 --> 01:06:51.225
Für der SecCode 1 brauche ich immer die Konsole auf Tilde.

01:06:51.785 --> 01:06:52.445
Ah, ja, ja.

01:06:52.545 --> 01:06:53.065
Das war mein Bein.

01:06:53.505 --> 01:06:56.785
Ja, und das war ganz interessant,

01:06:56.945 --> 01:06:57.905
weil da beteiligte sich

01:06:57.905 --> 01:07:01.065
sich an diesem Editor Wars ein bisschen

01:07:01.065 --> 01:07:03.005
und der

01:07:03.005 --> 01:07:05.625
hat dann auch irgendwann mal versucht, Wim zu verwenden.

01:07:05.905 --> 01:07:07.805
Also ich meine, eine Woche angeschlossen

01:07:07.805 --> 01:07:09.625
versucht er es zu lernen und dann rauszukriegen,

01:07:09.765 --> 01:07:11.585
warum Leute das gut finden, aber es hat

01:07:11.585 --> 01:07:12.985
ihn nicht überzeugen können. Er ist

01:07:12.985 --> 01:07:15.505
auch so eher auf der IDE-Seite und

01:07:15.505 --> 01:07:16.625
viele Debugger verwenden.

01:07:17.905 --> 01:07:18.845
Und ja,

01:07:19.285 --> 01:07:21.405
er macht das nicht so extrem wie andere. Andere machen

01:07:21.405 --> 01:07:22.905
sowas wie eine uralte,

01:07:23.145 --> 01:07:25.365
nicht wie das Code, sondern tatsächlich

01:07:25.365 --> 01:07:27.485
Visual Studio-Version verwenden.

01:07:27.985 --> 01:07:29.385
So Visual Studio 6 oder sowas,

01:07:29.505 --> 01:07:31.285
was dann halt auf den Rechnern damals gerade so ging.

01:07:31.285 --> 01:07:33.205
und dann auf den heutigen Rechnern ist es halt einfach

01:07:33.205 --> 01:07:34.605
sackschnell und alles ist instant

01:07:34.605 --> 01:07:35.385
sofort

01:07:35.385 --> 01:07:38.765
da und ja,

01:07:39.025 --> 01:07:41.065
dann schreibt er halt meistens irgendwie

01:07:41.065 --> 01:07:43.005
C-artiges C++ oder sowas

01:07:43.005 --> 01:07:44.965
und macht halt viel im Debugger.

01:07:45.365 --> 01:07:47.085
Aber ich fand es interessant, also einfach

01:07:47.085 --> 01:07:49.085
mal so zu hören, wie er da so

01:07:49.085 --> 01:07:50.005
Sachen macht und so.

01:07:50.565 --> 01:07:51.885
Das ist natürlich ein Guru, ne?

01:07:51.885 --> 01:07:53.625
Ja, tatsächlich.

01:07:55.525 --> 01:07:55.925
Damals

01:07:55.925 --> 01:07:56.805
habe ich so ein bisschen,

01:07:58.265 --> 01:07:59.885
ich meine, ich habe es nie gespielt, aber ich habe ein bisschen geguckt,

01:07:59.885 --> 01:08:01.025
und was sie so im Grafikbereich machen.

01:08:01.485 --> 01:08:02.585
Er hat es nie gespielt.

01:08:03.225 --> 01:08:05.045
Ich habe es vielleicht mal gespielt, aber ich habe nie

01:08:05.045 --> 01:08:07.505
Ehrgeiz entwickelt oder mich da lange

01:08:07.505 --> 01:08:09.665
miteinander...

01:08:09.665 --> 01:08:11.525
Kurze Anekdote, ich war damals

01:08:11.525 --> 01:08:13.345
Clan-Based in der Liga und da waren wir

01:08:13.345 --> 01:08:15.565
relativ weit oben, also ich glaube European Top

01:08:15.565 --> 01:08:16.905
3. Wow, okay.

01:08:17.065 --> 01:08:17.585
Das war ganz gut.

01:08:20.465 --> 01:08:21.345
Ja, gut, 2 TTF.

01:08:21.465 --> 01:08:23.365
Ja, ja, dann TTF hieß damals noch was anderes.

01:08:24.485 --> 01:08:25.605
Ja, und

01:08:25.605 --> 01:08:27.485
genau, also

01:08:27.485 --> 01:08:29.525
aber was da so im Grafikbereich zum Beispiel

01:08:29.525 --> 01:08:31.925
über Quaken oder so passiert das. Das war gerade zu der Zeit,

01:08:32.005 --> 01:08:33.405
wo ich da auch irgendwie

01:08:33.405 --> 01:08:35.485
so mit Informatik und Grafik da

01:08:35.485 --> 01:08:37.705
das war, da waren

01:08:37.705 --> 01:08:39.225
schon einige abgefahrene Sachen dabei.

01:08:39.345 --> 01:08:40.925
Wow, krass, das ist ja so irgendwie

01:08:40.925 --> 01:08:43.245
Spieleentwickler, die machen da irgendwie so ein bisschen

01:08:43.245 --> 01:08:44.505
das war schon so echt

01:08:44.505 --> 01:08:47.225
okay, das sind, die

01:08:47.225 --> 01:08:49.605
implementieren da wirklich

01:08:49.605 --> 01:08:51.025
so ganz, ganz aktuelle

01:08:51.025 --> 01:08:53.305
Forschungsgeschichten direkt

01:08:53.305 --> 01:08:55.625
und machen das halt besser als alle anderen

01:08:55.625 --> 01:08:57.025
und so. Wahnsinn.

01:08:58.145 --> 01:08:59.085
Insofern, ja, also

01:08:59.085 --> 01:09:01.765
und hat mich schon interessiert, wie der dann so arbeitet und so.

01:09:02.065 --> 01:09:04.165
Ehrlich gesagt, was ich so ein bisschen frustrierend fand,

01:09:04.285 --> 01:09:07.765
ist, dass eines der Geheimnisse hinter seiner Produktivität wohl einfach ist,

01:09:08.645 --> 01:09:09.545
wahnsinnig viel arbeiten.

01:09:10.625 --> 01:09:10.945
Verdammt.

01:09:11.245 --> 01:09:14.665
Hätte mir eine andere Antwort gewünscht, eine andere Lösung für dieses Problem.

01:09:14.865 --> 01:09:17.885
Ich wäre gerne auch sehr produktiv, aber das mit dem Arbeiten, das gefällt mir nicht.

01:09:18.005 --> 01:09:19.045
Das muss irgendwie anders auch gehen.

01:09:19.265 --> 01:09:19.865
Ja, finde ich auch dafür.

01:09:21.005 --> 01:09:23.605
Ja, aber er meinte so, ja, das ist halt eines seiner,

01:09:23.825 --> 01:09:25.205
der hat einfach wahnsinnig viel gearbeitet.

01:09:25.525 --> 01:09:26.685
Es gibt auch Leute, die können einfach schnell ertippen.

01:09:26.785 --> 01:09:28.425
Die haben dann sowas wie 500 oder 600 Anschläge.

01:09:28.425 --> 01:09:28.985
die Mutti, wie war das?

01:09:30.465 --> 01:09:32.145
Meistens ist es ja nicht, wie schnell ich den Code

01:09:32.145 --> 01:09:34.305
in die Datei bekomme, sondern

01:09:34.305 --> 01:09:36.605
wie schnell ich darüber nachdenke.

01:09:36.965 --> 01:09:37.505
Ja, genau.

01:09:39.005 --> 01:09:40.025
Oder im Machine Interface.

01:09:40.665 --> 01:09:42.325
Er redet dann sogar locker flockig.

01:09:42.405 --> 01:09:44.825
Er hat ja immer Stress im Internet,

01:09:44.925 --> 01:09:46.505
wenn dann Leute meinen, naja, bei mehr als 8 Stunden

01:09:46.505 --> 01:09:47.525
dann ist man ja nicht mehr so produktiv.

01:09:47.965 --> 01:09:50.485
Ja, das ist schon so. Man ist dann nach 8 Stunden nicht mehr so produktiv.

01:09:50.925 --> 01:09:52.325
Aber man ist halt noch so ein bisschen produktiv.

01:09:52.765 --> 01:09:54.545
Also nicht mehr so produktiv wie in den ersten 8 Stunden,

01:09:54.545 --> 01:09:56.365
aber man kann ja noch ein paar Stunden weiterarbeiten

01:09:56.365 --> 01:09:57.465
und ist dann halt nicht mehr so produktiv.

01:09:57.465 --> 01:09:58.765
aber das ist ja dann immer noch mehr als voll.

01:09:59.565 --> 01:10:00.565
Ja, das ist richtig.

01:10:01.065 --> 01:10:02.245
Wenn es nicht am nächsten Tag kann,

01:10:02.325 --> 01:10:05.105
bei mir ist das so, am nächsten Tag

01:10:05.105 --> 01:10:06.925
reduziert sich dann meine Produktivität auch deutlich.

01:10:07.065 --> 01:10:07.645
Bei mir ist das anders.

01:10:08.725 --> 01:10:11.205
Er meint auch, er ist ein bisschen neidisch auf Leute, die dann halt

01:10:11.205 --> 01:10:13.185
nur vier Stunden schlafen müssen und am nächsten Tag wieder topfit sind

01:10:13.185 --> 01:10:14.885
und das lange durchhalten können und das kann er auch nicht,

01:10:15.045 --> 01:10:17.185
sondern nach zwölf Stunden Programmieren ist halt bei ihm auch

01:10:17.185 --> 01:10:19.145
irgendwie Ende, aber das kann er

01:10:19.145 --> 01:10:20.665
tatsächlich sustainable durchhalten.

01:10:20.765 --> 01:10:22.825
Er meint so, zwölf Stunden am Tag programmieren kann ich

01:10:22.825 --> 01:10:25.325
sustainable machen, habe ich seit ein paar

01:10:25.325 --> 01:10:26.205
Jahrzehnten gemacht, das geht.

01:10:26.205 --> 01:10:28.305
Ich krieg dann auch keinen Burnout oder so

01:10:28.305 --> 01:10:29.605
Das geht einfach immer so weiter

01:10:29.605 --> 01:10:31.305
Okay

01:10:31.305 --> 01:10:33.905
Das ist mir ein bisschen zu hart, ehrlich gesagt

01:10:33.905 --> 01:10:36.725
Also schon nachvollziehbar, wenn man so richtig

01:10:36.725 --> 01:10:38.845
Bock hat, dann hört man auch nicht mehr auf

01:10:38.845 --> 01:10:40.825
Ja, aber das kann tatsächlich länger als 2-3 Monate

01:10:40.825 --> 01:10:42.745
durchziehen, denn irgendwann

01:10:42.745 --> 01:10:44.205
brauchst du halt wieder ein bisschen Luft

01:10:44.205 --> 01:10:44.605
und

01:10:44.605 --> 01:10:47.385
Ja

01:10:47.385 --> 01:10:51.145
Seine Einstellung war dazu

01:10:51.145 --> 01:10:52.705
Diese ganzen Quatsch brauch ich nicht, ich brauch nur

01:10:52.705 --> 01:10:54.385
Diet Coke und Pizza und dann

01:10:54.385 --> 01:10:57.285
Das Sozialleben leidet dann zwar,

01:10:57.285 --> 01:10:59.325
aber wenn man sich

01:10:59.325 --> 01:11:00.725
so richtig dann zurückzieht und dann...

01:11:00.725 --> 01:11:01.845
Die artige Vampirblässe.

01:11:03.825 --> 01:11:05.265
Erinnert mich so ein bisschen an die

01:11:05.265 --> 01:11:07.305
Anfangszeiten, wo ich dann programmiert habe

01:11:07.305 --> 01:11:09.305
und herausgefunden habe, wie alles funktioniert, auch mit Django.

01:11:10.265 --> 01:11:10.425
Und

01:11:10.425 --> 01:11:13.165
ja, da habe ich eigentlich

01:11:13.165 --> 01:11:14.245
jede freie Minute

01:11:14.245 --> 01:11:17.165
an Django geschrieben und das

01:11:17.165 --> 01:11:19.105
gemacht. Das waren coole Zeiten,

01:11:19.265 --> 01:11:21.505
aber mittlerweile geht das auch nicht mehr.

01:11:21.805 --> 01:11:23.345
Long Time No See Galaxy Far,

01:11:23.425 --> 01:11:23.965
Far Away.

01:11:24.385 --> 01:11:24.985
Ja.

01:11:25.385 --> 01:11:27.745
Aber ich frage mich, ob das bei, also das ist auch etwas,

01:11:27.805 --> 01:11:29.045
was ich von vielen Leuten höre,

01:11:29.265 --> 01:11:31.465
dass sie halt eine Phase hatten, wo sie das sehr intensiv,

01:11:31.525 --> 01:11:33.565
also ich habe auch eine Phase,

01:11:34.125 --> 01:11:35.685
so phasenweise irgendwie Dinge sehr

01:11:35.685 --> 01:11:37.745
intensiv gemacht und ich weiß nicht, ob vielleicht das

01:11:37.745 --> 01:11:38.525
notwendig ist.

01:11:38.905 --> 01:11:40.325
Bei T's Ende oder sowas.

01:11:41.385 --> 01:11:41.825
Auch danach.

01:11:43.585 --> 01:11:44.465
Bis wann geht das?

01:11:45.065 --> 01:11:47.345
Das ist so eine Feedback-Loop. Je länger du das machst,

01:11:47.445 --> 01:11:49.185
desto länger machst du das, desto länger machst du das.

01:11:49.245 --> 01:11:51.685
Und wenn du da aus dieser Loop nicht rauskommst,

01:11:51.685 --> 01:11:51.945
dann,

01:11:51.945 --> 01:11:54.485
Wo ist das Limit?

01:11:56.985 --> 01:11:57.705
Ja, keine Ahnung.

01:11:57.885 --> 01:12:00.065
Ich warte noch, ob das weitergeht. Ich hoffe mal, irgendjemand kommt da mal

01:12:00.065 --> 01:12:01.965
und sagt so, ich mache das immer so zwei Stunden am Tag und ist

01:12:01.965 --> 01:12:03.805
trotzdem irgendwie sehr produktiv dabei geworden und

01:12:03.805 --> 01:12:05.945
kriegt irgendwie Dinge hin. Das wäre nett, weil

01:12:05.945 --> 01:12:08.085
das wäre, ich wünsche mir das

01:12:08.085 --> 01:12:08.785
irgendwann mal so.

01:12:08.785 --> 01:12:10.425
Am Anfang auch, also in Python zu lernen, auch 70 Stunden

01:12:10.425 --> 01:12:11.725
investiert war. Ja, ja, eben.

01:12:12.265 --> 01:12:14.605
Ich höre das von vielen. Ja, also diese Rechnung

01:12:14.605 --> 01:12:16.145
ist halt tatsächlich irgendwie, wenn man

01:12:16.145 --> 01:12:18.745
betonen wir es mal so, schaffen maximal

01:12:18.745 --> 01:12:20.265
Produktivität in der Sendung, wenn man da ist.

01:12:20.265 --> 01:12:26.105
und wenn man jetzt 5 Stunden die Woche was macht oder 70 Stunden die Woche und dann macht man das 2 Jahre lang und man ist genauso gut,

01:12:26.625 --> 01:12:32.025
dann ist derjenige im Verhältnis zu demjenigen, der das 5 Stunden die Woche macht, einfach um 28 Jahre weiter.

01:12:32.445 --> 01:12:33.945
Ja, ich glaube, man kann es nicht so naiv rechnen.

01:12:33.965 --> 01:12:38.545
Ja, natürlich, aber der Punkt ist ja, glaube ich, relativ klar.

01:12:38.705 --> 01:12:44.925
Also man kann das im Leben nicht aufholen, wenn man das versucht, so nebenbei.

01:12:44.925 --> 01:13:03.385
Ja, also der eine Effekt ist halt, dass man natürlich irgendwie nicht die ganze Zeit so gut dazulernen kann, wenn man das so lange macht, sondern dann halt irgendwann weniger lernt und auch nicht so produktiv ist. Auf der anderen Seite ist es so, wenn man sehr langsam lernt, dann ist zwar die Zeit, die man investiert, besser investiert, aber das Problem ist, man vergisst dann ja auch wieder Sachen.

01:13:03.385 --> 01:13:14.145
Ja, wir hatten uns schon mal dagegen drum gestritten, um so eine Sache, die ich persönlich sehr effektiv finde, und zwar ist das, wenn irgendwas nicht funktioniert, da so lange gegenteil, bis es kaputt geht.

01:13:14.145 --> 01:13:14.925
Ja, genau.

01:13:15.065 --> 01:13:18.545
Also lieber weggehen und unter der Dusche fährt man dann ein,

01:13:18.625 --> 01:13:20.125
was natürlich auch stimmt bei bestimmten Sachen,

01:13:20.505 --> 01:13:22.545
aber ich finde halt auch durch dieses Gegenhauen von allen

01:13:22.545 --> 01:13:24.625
Seiten und das irgendwann kaputt machen, lernt man

01:13:24.625 --> 01:13:26.765
halt intensiver und man merkt

01:13:26.765 --> 01:13:28.485
sich die Sachen mehr, weil man so lange

01:13:28.485 --> 01:13:30.305
gegengehauen hat, bis es kaputt gegangen ist, dass man gemerkt hat,

01:13:31.325 --> 01:13:32.785
wo man halt gegenhauen kann, es passiert nichts

01:13:32.785 --> 01:13:34.245
und wo man halt vielleicht doch was umfällt, dass man

01:13:34.245 --> 01:13:36.345
beim nächsten Mal auf jeden Fall schneller dahin kommt, wo man

01:13:36.345 --> 01:13:38.305
gegenhauen muss zum Beispiel. Und wenn man

01:13:38.305 --> 01:13:40.325
dann halt nur die Einfalllösung hat,

01:13:40.385 --> 01:13:42.765
dann hat man diese ganzen Schläge von der Seite oder sowas verpasst.

01:13:43.525 --> 01:13:44.125
Also ich fand das schon immer gut.

01:13:44.145 --> 01:13:46.225
Ja, kann sein. Vielleicht sind auch unterschiedliche Leute einfach unterschiedlich.

01:13:47.425 --> 01:13:49.505
Oder unterschiedliche Themen oder sowas, wo das halt hilft oder nicht hilft.

01:13:49.605 --> 01:13:49.905
Ich weiß nicht.

01:13:50.285 --> 01:13:51.745
So ein bisschen Guru-Meditation.

01:13:54.805 --> 01:13:55.365
Ja, ja.

01:13:55.945 --> 01:13:57.645
Ja, ich habe auch das Gefühl,

01:13:57.725 --> 01:13:59.065
dass ich das früher tatsächlich nicht konnte,

01:13:59.165 --> 01:14:00.205
irgendwie mehrere Projekte gleichzeitig.

01:14:00.585 --> 01:14:01.765
Das mache ich jetzt halt gern.

01:14:02.205 --> 01:14:04.305
Wenn es irgendwo nicht weitergeht, dann mache ich halt was anderes.

01:14:05.165 --> 01:14:07.545
Und dann bis da nichts mehr weitergeht

01:14:07.545 --> 01:14:08.305
und dann wieder was anderes.

01:14:09.205 --> 01:14:11.385
Ich habe das Gefühl, das geht jetzt eigentlich ganz gut.

01:14:11.925 --> 01:14:13.405
Und früher hätte ich das überhaupt nicht machen können.

01:14:13.405 --> 01:14:15.085
Früher hätte mich das total rausgebracht.

01:14:15.565 --> 01:14:17.385
Also, ich weiß auch nicht.

01:14:17.565 --> 01:14:19.085
Ja, vielleicht ändere ich halt über die Zeit auch.

01:14:19.205 --> 01:14:20.385
Ich weiß es eigentlich keine Ahnung.

01:14:21.265 --> 01:14:22.985
Ja, seltsam. Ja, irgendwie

01:14:22.985 --> 01:14:25.005
der heilige Gral an der Stelle noch nicht gefunden.

01:14:25.385 --> 01:14:25.805
Schade, schade.

01:14:27.845 --> 01:14:29.185
Wir sind übrigens in der Ensebel-Folge.

01:14:29.465 --> 01:14:30.405
Ja, genau, genau, Ensebel.

01:14:32.445 --> 01:14:32.765
Ja.

01:14:33.225 --> 01:14:34.865
Also, ich habe hier noch so ein paar Sachen gestehen und zwar

01:14:34.865 --> 01:14:37.105
also einmal, was macht man mit den Outputs, wo bekommt man die her,

01:14:37.145 --> 01:14:38.885
wie sammelt man die ein, das ist so ein bisschen technisch schlecht zu erklären.

01:14:40.105 --> 01:14:41.405
Testen würde ich gerne nochmal drüber sprechen.

01:14:41.405 --> 01:14:42.965
Wie geht das, macht man das, braucht man das?

01:14:43.405 --> 01:14:45.585
Ja, vielleicht die ganzen Commandos, Bildschirms, was gibt es denn überhaupt?

01:14:45.765 --> 01:14:47.525
Was kann man denn damit machen, dass man so ein bisschen

01:14:47.525 --> 01:14:49.425
mal vielleicht weiß, was ist denn schon drin, wofür muss man denn

01:14:49.425 --> 01:14:50.545
so Community-Module nehmen oder so?

01:14:51.625 --> 01:14:51.945
Und

01:14:51.945 --> 01:14:54.965
wie machen wir das mit so Secrets oder so?

01:14:55.225 --> 01:14:57.445
Wie startet man die, kann man die auch

01:14:57.445 --> 01:14:59.205
irgendwie committen, macht man das Nutzerskontroll?

01:14:59.305 --> 01:15:01.325
Irgendwie so. Vielleicht nochmal so als

01:15:01.325 --> 01:15:02.425
kleine Mini-Struktur

01:15:02.425 --> 01:15:04.825
vorweg für den nächsten Teil,

01:15:05.065 --> 01:15:06.285
der nächsten Chapter-Mark.

01:15:07.345 --> 01:15:07.785
Hint, hint.

01:15:08.865 --> 01:15:10.565
Genau, wo sollen wir einsteigen?

01:15:12.225 --> 01:15:12.965
Fangen wir oben an.

01:15:12.965 --> 01:15:14.685
Also vielleicht nochmal mit dem Output.

01:15:14.765 --> 01:15:15.665
Man hat jetzt Zeugs

01:15:15.665 --> 01:15:18.825
und man braucht den Output davon, weil man irgendwie

01:15:18.825 --> 01:15:20.805
ja, man hat jetzt keine Ahnung, seine

01:15:20.805 --> 01:15:22.845
Datenbank exposed und

01:15:22.845 --> 01:15:24.965
wusste vorne nicht, welche Server-IP gab's

01:15:24.965 --> 01:15:26.785
denn da und die muss dann der Server

01:15:26.785 --> 01:15:28.905
drücken oder so. Genau, da kann

01:15:28.905 --> 01:15:30.665
ich dann in der Task selbst

01:15:30.665 --> 01:15:32.725
eine Variable registrieren mit dem Output

01:15:32.725 --> 01:15:34.865
und die kann ich dann halt über das

01:15:34.865 --> 01:15:37.085
ganze Play letztlich

01:15:37.085 --> 01:15:38.745
benutzen.

01:15:39.465 --> 01:15:40.625
Okay, ansonsten muss man die halt irgendwo

01:15:40.625 --> 01:15:42.805
hinschicken. Man kann die natürlich

01:15:42.805 --> 01:15:44.145
dann auch eine Datei schreiben?

01:15:44.625 --> 01:15:46.925
Ja, die Frage ist genau das. Man muss die vielleicht auf der

01:15:46.925 --> 01:15:48.865
Control-Node irgendwo ablegen, weil vielleicht braucht man

01:15:48.865 --> 01:15:49.785
die beim nächsten Run

01:15:49.785 --> 01:15:51.505
beispielsweise zu

01:15:51.505 --> 01:15:54.745
ähm, wie klingt das?

01:15:55.065 --> 01:15:56.825
Also man möchte jetzt sowas machen wie

01:15:56.825 --> 01:15:58.925
Updates. Und man hat

01:15:58.925 --> 01:16:00.745
jetzt nicht das Denux, dass man einfach sagen kann, okay,

01:16:00.845 --> 01:16:02.765
ich reiße den jetzt ab und baue den mit der Neuesten Version neu auf,

01:16:03.125 --> 01:16:04.465
sondern man möchte vielleicht den

01:16:04.465 --> 01:16:06.985
updaten. Und das Problem ist ja, wenn man irgendwie was

01:16:06.985 --> 01:16:08.925
so ein Staging-System vielleicht daneben

01:16:08.925 --> 01:16:10.565
haben will, um zu gucken, ob das läuft, wenn man einen Test fahren muss,

01:16:10.565 --> 01:16:12.585
wenn das eine kritische Infrastruktur ist, dann muss man

01:16:12.585 --> 01:16:14.045
vielleicht auf der alten Version aufbauen

01:16:14.045 --> 01:16:15.585
und dann updaten.

01:16:16.545 --> 01:16:18.445
Weil sonst das

01:16:18.445 --> 01:16:20.505
nicht dasselbe ist wie das Produktionssystem,

01:16:20.585 --> 01:16:21.525
was man ja nur updaten muss.

01:16:22.205 --> 01:16:24.165
Du meinst, du willst das Update testen?

01:16:24.565 --> 01:16:24.685
Genau.

01:16:25.385 --> 01:16:28.525
Also da würde ich letztlich dann sagen,

01:16:28.625 --> 01:16:29.945
okay, ich habe dann mein Inventory

01:16:29.945 --> 01:16:32.405
und dann habe ich da definiert, welche Server

01:16:32.405 --> 01:16:34.845
da in der Staging-Umgebung

01:16:34.845 --> 01:16:36.565
sind und dann lasse ich

01:16:36.565 --> 01:16:38.305
das Playbook...

01:16:38.305 --> 01:16:40.325
Aber du musst ja erst auf die historische Version laufen

01:16:40.325 --> 01:16:41.905
und dann das Update fahren.

01:16:42.625 --> 01:16:44.065
Und dafür muss ich mir wahrscheinlich

01:16:44.065 --> 01:16:46.425
die letzte

01:16:46.425 --> 01:16:48.705
Version irgendwo merken oder sowas.

01:16:49.565 --> 01:16:50.625
Ja, das ist natürlich

01:16:50.625 --> 01:16:52.425
auch nochmal so die

01:16:52.425 --> 01:16:53.885
Geschichte deklarativ.

01:16:54.505 --> 01:16:56.585
Wenn ich jetzt sage, ganz einfach

01:16:56.585 --> 01:16:58.625
im Package Manager, yum oder apt

01:16:58.625 --> 01:17:00.285
und da kann ich dann halt sagen,

01:17:01.225 --> 01:17:02.545
welchen State soll das Paket haben.

01:17:02.585 --> 01:17:04.385
Nein, beispielsweise ich habe

01:17:04.385 --> 01:17:06.565
eine Software, die ich selber geschrieben habe, dann muss ich

01:17:06.565 --> 01:17:08.445
mir die Version zum Beispiel merken, weil jetzt nicht über App kommt,

01:17:08.445 --> 01:17:10.665
zum Beispiel über den GitHub-Revo oder den GitHub-Tag oder sowas.

01:17:11.045 --> 01:17:12.465
Ja, da kann ich natürlich dann sagen,

01:17:12.585 --> 01:17:14.805
okay, welches Tag möchte ich denn überhaupt auschecken?

01:17:14.985 --> 01:17:16.485
Ja. Oder möchte ich einfach die Latest

01:17:16.485 --> 01:17:18.425
auschecken? Dann habe ich halt immer die Latest, egal

01:17:18.425 --> 01:17:20.505
welche. Genau, aber wenn ich jetzt genau dieses Update-Fall

01:17:20.505 --> 01:17:22.725
habe, dann muss ich ja mir merken, welche Version

01:17:22.725 --> 01:17:24.645
in Produktion läuft, beispielsweise.

01:17:26.065 --> 01:17:26.445
Damit ich

01:17:26.445 --> 01:17:28.445
erstmal das auschecken kann, um dann das Update auf die Latest

01:17:28.445 --> 01:17:30.565
zu fahren, um dann sicherzustellen,

01:17:30.625 --> 01:17:32.365
dass ich das testen kann, um dann die Latest auf

01:17:32.365 --> 01:17:34.365
Produktion auszurollen. Dann muss ich mir wieder merken,

01:17:34.445 --> 01:17:36.365
was war denn jetzt Latest, was läuft denn jetzt da? Und das muss ich irgendwo

01:17:36.365 --> 01:17:36.765
hinschreiben.

01:17:38.445 --> 01:17:40.125
und dafür brauche ich irgendwie so eine...

01:17:40.125 --> 01:17:42.405
Also das klingt mir ehrlich gesagt so ein bisschen kompliziert.

01:17:42.605 --> 01:17:44.605
Also ich weiß nicht, ob es das Problem

01:17:44.605 --> 01:17:46.685
löst, aber willst du

01:17:46.685 --> 01:17:48.765
wirklich deine Ansible-Geschichten testen?

01:17:48.825 --> 01:17:50.365
Weil ich würde jetzt sagen, es geht nicht so gut.

01:17:50.825 --> 01:17:52.405
Man kann das natürlich machen, aber ich weiß nicht,

01:17:52.425 --> 01:17:54.285
ist das eine schlaue Idee? Also wäre es nicht besser?

01:17:54.365 --> 01:17:56.425
Also ich würde eher dazu tendieren, die ganzen

01:17:56.425 --> 01:17:58.465
Tests in die Applikationen zu verlagern und zu sagen,

01:17:58.565 --> 01:18:00.525
wenn die Tests in meiner Applikation grün sind,

01:18:01.165 --> 01:18:02.545
dann gehe ich davon aus, dass die funktioniert.

01:18:03.545 --> 01:18:03.865
Und

01:18:03.865 --> 01:18:06.545
ob das mit der neuen Version funktioniert oder nicht,

01:18:06.545 --> 01:18:07.645
das kann ich auch lokal testen.

01:18:07.645 --> 01:18:13.205
Da wäre letztlich so die Frage, wie funktioniert mein Update-Mechanismus?

01:18:13.765 --> 01:18:18.125
Ja, also warum willst du das auf Produktion testen und nicht lokal?

01:18:19.965 --> 01:18:22.885
Ja, weil dich ja vielleicht die Infrastruktur kaputt geht beim Bauen oder sowas.

01:18:23.245 --> 01:18:26.105
Wenn ich Änderungen an der Infrastruktur habe, keine Ahnung, es kommt ein neues Netzwerk dazu oder so,

01:18:26.525 --> 01:18:29.825
dann hilft es mir jetzt nicht, wenn die Anwendung selber irgendwie grün ist und läuft,

01:18:29.965 --> 01:18:31.985
wenn da irgendwie bei der Netzwerkkonfiguration irgendwas kaputt geht.

01:18:31.985 --> 01:18:34.005
Also als quasi Integrationstest?

01:18:35.085 --> 01:18:35.625
Ungefähr, ja.

01:18:35.625 --> 01:18:41.785
und das kann ja sein, dass beim Staging-System, wenn ich das einfach vom Scratch baue, dann funktioniert diese Netzwerkkonfiguration,

01:18:42.205 --> 01:18:47.425
aber beim Update, weil da irgendwelche Versionen inkompatibel sind, muss ich irgendwie eine Migrationsfahrt wählen, damit das funktioniert.

01:18:48.845 --> 01:18:51.305
Damit ich halt von der alten auf die neue Infrastruktur umwechseln kann.

01:18:51.685 --> 01:18:57.165
Und deswegen muss ich ja irgendwie wissen, auf welche alten Variante ich das bauen muss oder so.

01:18:57.165 --> 01:19:00.805
Ja gut, das wäre dann so das Thema, das hole ich mir dann aus den Facts.

01:19:00.805 --> 01:19:06.005
Ja, aber genau, diese Facts muss ich ja irgendwie dann zwischenspeichern, weil das ist ja ein Alter-Fact gewesen.

01:19:06.225 --> 01:19:07.085
Das ist ja automatisch.

01:19:07.165 --> 01:19:14.785
Genau, also bevor irgendwas gemacht wird, werden ja die Facts geholt und anhand der Facts kann ich ja letztlich dann auch wieder entscheiden, was ich mache.

01:19:14.785 --> 01:19:25.645
Okay, das heißt, du musst dann tatsächlich sehen, okay, dein Repo ist ausgecheckt auf Tag und dann nicht auf Main oder Master oder Trunk oder was oder auf Production, wie auch immer man den Branch jetzt nennen will, in der jeweiligen Version.

01:19:26.205 --> 01:19:30.285
Genau, also das ist vielleicht auch so eine andere Denkweise.

01:19:30.805 --> 01:19:33.825
durch dieses

01:19:33.825 --> 01:19:36.045
Deklarative, also dass man halt

01:19:36.045 --> 01:19:38.005
nur sagen möchte, ich möchte immer die neueste

01:19:38.005 --> 01:19:39.905
Version haben oder ich möchte immer diese

01:19:39.905 --> 01:19:42.045
Version haben, dann wäre das

01:19:42.045 --> 01:19:44.045
letztlich schon im Play oder im Playbook

01:19:44.045 --> 01:19:45.165
definiert.

01:19:45.605 --> 01:19:46.325
Und dann würde ich halt

01:19:46.325 --> 01:19:48.925
ein Playbook ändern.

01:19:49.225 --> 01:19:51.705
Das ist genau was, was wir am Anfang hatten. Du sagst halt,

01:19:51.805 --> 01:19:53.945
wenn ich jetzt Latest eingebe, dann ist Latest

01:19:53.945 --> 01:19:55.305
in zwei Monaten nicht mehr Latest.

01:19:56.025 --> 01:19:57.885
Genau, also wenn ich dann über das Playbook nochmal

01:19:57.885 --> 01:20:00.125
laufen lasse, dann guckt er, gibt es was Neues?

01:20:00.125 --> 01:20:03.725
Okay, ich soll Latest nehmen, also update ich die Version.

01:20:04.145 --> 01:20:07.245
Und ob dann was kaputt geht, ist dem Ansible erstmal egal.

01:20:07.405 --> 01:20:08.485
Genau, und das ist das, was ich meine.

01:20:09.785 --> 01:20:15.185
Dafür müsste man sich diese Facts, was war denn jetzt Latest, irgendwie rausschreiben, also diesen State.

01:20:15.705 --> 01:20:18.045
Muss man sich irgendwie merken, um den Reproduzierwert zu haben.

01:20:18.145 --> 01:20:23.705
Also nach dem Motto, baue mir jetzt das Latest von vor zwei Monaten und dann check, ob das Update funktioniert, was ich mir überlegt habe.

01:20:23.705 --> 01:20:25.305
Ja, aber das klingt mir doch sehr stark.

01:20:25.305 --> 01:20:26.685
Ich verstehe,

01:20:27.025 --> 01:20:29.425
wofür du das machen willst.

01:20:30.465 --> 01:20:31.325
Aber ich

01:20:31.325 --> 01:20:33.025
habe auch schon gehört, dass Leute eben,

01:20:33.805 --> 01:20:34.805
das ist ja alles irgendwie auch

01:20:34.805 --> 01:20:37.325
Infrastructure as a Code

01:20:37.325 --> 01:20:41.905
Infrastructure as a Code

01:20:41.905 --> 01:20:43.345
Geschichte, dass man halt auch

01:20:43.345 --> 01:20:45.405
diese komplette Infrastruktur irgendwie testbar machen

01:20:45.405 --> 01:20:46.245
können will.

01:20:46.785 --> 01:20:48.825
Aber ich weiß nicht, will man das wirklich?

01:20:49.325 --> 01:20:50.505
Am Ende ist es halt auch so,

01:20:52.005 --> 01:20:53.065
dann müsste ich halt

01:20:53.065 --> 01:20:55.065
immer meine Version pinnen. Vielleicht ist das auch

01:20:55.065 --> 01:20:57.005
eine gute Idee zu sagen. Ich pinne sowieso

01:20:57.005 --> 01:20:58.385
immer und nehme Latest nicht.

01:20:58.945 --> 01:21:01.045
Dann würde ich halt dann

01:21:01.045 --> 01:21:03.105
mein Ansible

01:21:03.105 --> 01:21:05.005
Script oder mein Ansible

01:21:05.005 --> 01:21:06.885
Playbook bearbeiten. Dann wüsste ich das

01:21:06.885 --> 01:21:07.545
und dann würde ich halt

01:21:07.545 --> 01:21:10.945
wahrscheinlich ist ja im Git eingecheckt und dann

01:21:10.945 --> 01:21:13.225
sagen, okay, neuer Commit und dann das testen.

01:21:14.385 --> 01:21:14.965
Aber also

01:21:14.965 --> 01:21:16.765
so wie ich dich verstanden habe, ist es so,

01:21:16.865 --> 01:21:18.365
du möchtest im Grunde sagen können,

01:21:18.885 --> 01:21:20.745
also auf meinem Produktionssystem ist

01:21:20.745 --> 01:21:22.785
jetzt gerade, keine Ahnung, Version

01:21:22.785 --> 01:21:24.765
so und so viel von meinem Projekt installiert.

01:21:25.065 --> 01:21:26.505
und ich möchte jetzt auf meinem Staging-System

01:21:26.505 --> 01:21:29.145
testen können, oder das muss ja gar nicht das Staging-System

01:21:29.145 --> 01:21:31.045
sein, sondern ich ziehe automatisch

01:21:31.045 --> 01:21:32.805
mit Terraform irgendwie mir Infrastruktur hoch

01:21:32.805 --> 01:21:34.785
und zwar in Versionen, so wie ich sie auf dem

01:21:34.785 --> 01:21:36.925
Produktionssystem habe und dann will ich testen,

01:21:37.025 --> 01:21:38.865
dass wenn ich das jetzt update, dass dann

01:21:38.865 --> 01:21:40.965
alles noch funktioniert. Das ist aber im Grunde

01:21:40.965 --> 01:21:42.585
ein Test

01:21:42.585 --> 01:21:44.985
deines Systems. Genau, das würde

01:21:44.985 --> 01:21:46.825
man ja dann einfach machen und gucken, ob es geht.

01:21:48.605 --> 01:21:49.405
Das Problem ist halt,

01:21:49.445 --> 01:21:51.045
wenn du das Update auf dem Produktionssystem

01:21:51.045 --> 01:21:52.505
fährst und es funktioniert nicht, dann ist es halt blöd.

01:21:52.725 --> 01:21:53.785
Genau, deswegen Staging.

01:21:53.785 --> 01:21:55.465
Ja, oder

01:21:55.465 --> 01:21:57.885
Genau, und die muss halt dann so gerade

01:21:57.885 --> 01:22:00.245
Aber du musst halt das Update reproduzieren, du kannst halt nicht einfach

01:22:00.245 --> 01:22:01.845
dann vom Sketch eine neue Version bauen, weil dann

01:22:01.845 --> 01:22:03.445
wirst du das Produktionssystem abreißen und neu bauen

01:22:03.445 --> 01:22:06.245
Aber da würde ich sagen, will man

01:22:06.245 --> 01:22:07.105
wirklich in eine

01:22:07.105 --> 01:22:10.185
Situation kommen, in der man sowas machen muss

01:22:10.185 --> 01:22:11.625
Ich weiß nicht, ob es anders geht

01:22:11.625 --> 01:22:14.425
Ich würde versuchen, das zu vermeiden

01:22:14.425 --> 01:22:15.985
Aber wie vermeidest du das?

01:22:16.665 --> 01:22:18.325
Nämlich die Tests halt in der Applikation

01:22:18.325 --> 01:22:20.025
laufen lassen. Ja gut, aber dann weißt du, ob deine Applikation

01:22:20.025 --> 01:22:22.305
funktioniert und nicht, ob deine Serverinfrastruktur funktioniert

01:22:22.305 --> 01:22:24.265
Ja, wenn man jetzt ins Fast-Fact-Rabot geht, dann

01:22:24.265 --> 01:22:26.405
weiß ich, habe ich einen neuen Test für meine Applikation

01:22:26.405 --> 01:22:28.245
Der Sinn der Staging-Umgebung, um dann

01:22:28.245 --> 01:22:29.485
einmal das zu machen

01:22:29.485 --> 01:22:31.005
Aber die ist ja in einem anderen Zustand

01:22:31.005 --> 01:22:33.405
Genau, das ist was ich meine, also die Frage ist halt

01:22:33.405 --> 01:22:36.045
Du musst halt diese Staging-Umgebung, diesen zwei

01:22:36.045 --> 01:22:38.105
Ebenen bauen, damit du quasi

01:22:38.105 --> 01:22:39.985
dieses Update simulieren kannst, weil wenn du nur

01:22:39.985 --> 01:22:42.045
die neue Version baust im Staging-System, kann es sein, dass das

01:22:42.045 --> 01:22:44.085
aus irgendwelchen Gründen funktioniert, aber

01:22:44.085 --> 01:22:44.685
das Update halt nicht

01:22:44.685 --> 01:22:48.365
Also, ja, wie gesagt, was ich gehört habe

01:22:48.365 --> 01:22:50.145
ist, dass Leute halt auch Tests eben

01:22:50.145 --> 01:22:52.105
gegen, sie ziehen dann sogar temporär Infrastruktur

01:22:52.105 --> 01:22:54.105
hoch, ein System und

01:22:54.105 --> 01:22:55.285
machen dann ihre Tests dagegen.

01:22:55.945 --> 01:22:58.045
Das hört sich für mich ganz schrecklich an, weil das Problem

01:22:58.045 --> 01:23:00.145
ist, das macht ja dann auch seine Entwicklung total langsam, weil

01:23:00.145 --> 01:23:01.945
allein das Hochziehen von dem Kram und auch

01:23:01.945 --> 01:23:03.905
ehrlich gesagt, ich finde Ansible ist halt schon, also

01:23:03.905 --> 01:23:05.525
bei mir, ich glaube vielleicht mache ich irgendwas ganz falsch,

01:23:06.185 --> 01:23:07.485
langsam. Also das dauert Minuten.

01:23:07.585 --> 01:23:09.885
Die ICT macht es langsam, also es dauert eher länger als

01:23:09.885 --> 01:23:10.485
Stunden.

01:23:11.345 --> 01:23:13.545
Ja, das ist ja schrecklich, also wenn du halt sozusagen

01:23:13.545 --> 01:23:15.965
so einen Feedback-Loop haben willst, irgendwie du änderst was,

01:23:16.065 --> 01:23:17.825
guckst, ob es funktioniert, wenn es nicht funktioniert,

01:23:17.885 --> 01:23:19.925
wieder was ändern. Also für mich

01:23:19.925 --> 01:23:49.905
und Jochen unterhalten sich über die Programmiersprache Python

01:23:49.925 --> 01:23:51.605
eine Sache, warum Azure nervig ist.

01:23:51.605 --> 01:23:52.345
Ja, überhaupt nicht.

01:23:53.245 --> 01:23:55.785
Aber die Frage ist, was würdest du denn sagen, was wäre denn die Lösung

01:23:55.785 --> 01:23:57.365
von diesem Problem? Also für mich,

01:23:57.725 --> 01:23:59.865
ich weiß natürlich nicht, ob das immer geht, aber ich würde

01:23:59.865 --> 01:24:01.905
sagen, man schiebt die Tests in die

01:24:01.905 --> 01:24:03.905
Applikationen zum Beispiel, also ein Beispiel jetzt,

01:24:04.565 --> 01:24:05.905
wo ich das auch gehört habe, wo Leute

01:24:05.905 --> 01:24:08.045
sowas testen, wo die sagen, ja, also

01:24:08.045 --> 01:24:09.885
wenn ich jetzt zum Beispiel irgendwie

01:24:09.885 --> 01:24:11.505
nach AWS deploye

01:24:11.505 --> 01:24:13.845
und dann weiß ich zum Beispiel, die haben genau dieses

01:24:13.845 --> 01:24:15.765
Ding, wo ich auch denke, oh mein Gott, das ist einer

01:24:15.765 --> 01:24:17.725
der Gründe, warum ich ganz viel zu diesen

01:24:17.725 --> 01:24:19.385
Fileswerving auch gemacht habe,

01:24:19.925 --> 01:24:21.665
Also, das ist auch bei dem jetzigen

01:24:21.665 --> 01:24:23.465
Python-Podcast ist es so, die Files kommen von

01:24:23.465 --> 01:24:24.065
S3.

01:24:25.525 --> 01:24:27.785
Aber das Problem ist jetzt natürlich,

01:24:27.905 --> 01:24:29.445
wenn ich jetzt Files

01:24:29.445 --> 01:24:31.805
gerne hätte, wo Leute sich authentifizieren müssen,

01:24:31.865 --> 01:24:32.465
um sie sehen zu können,

01:24:33.545 --> 01:24:35.925
dann muss ich ja dann S3 darum kümmern,

01:24:36.065 --> 01:24:36.865
dass das so ist.

01:24:37.885 --> 01:24:38.325
Oder Django.

01:24:39.185 --> 01:24:41.525
Ja, das Problem, Django kann sich ja nicht

01:24:41.525 --> 01:24:43.205
darum kümmern, so in gewisser Weise, weil

01:24:43.205 --> 01:24:45.665
da ist ja sozusagen dann nur, also auf der

01:24:45.665 --> 01:24:47.185
Webseite ist ja nur ein Link auf S3.

01:24:48.185 --> 01:24:48.585
Ja.

01:24:48.585 --> 01:24:53.085
Das heißt, man kann natürlich dafür sorgen, dass der Link nicht sichtbar ist, wenn es nicht authentifiziert ist

01:24:53.085 --> 01:24:56.865
Also verschiedene Möglichkeiten, dass man dem Engine X zum Beispiel

01:24:56.865 --> 01:24:57.525
da mitgibt

01:24:57.525 --> 01:25:04.445
Wenn es über S3 geht, ist es S3, aber das S3 ist sozusagen nur das

01:25:04.445 --> 01:25:07.305
Backend für CloudFront, für so ein CDN

01:25:07.305 --> 01:25:14.165
Jetzt ist halt die Frage, okay, wenn es über ein CDN geht, das geht ja nicht über dein Engine X

01:25:14.165 --> 01:25:15.745
sondern das geht ja außenrum

01:25:15.745 --> 01:25:33.305
So, jetzt kannst du, gibt's ja natürlich schon gewisse, du kannst die URLs so generieren, dass die halt signiert sind zum Beispiel. Und dann kannst du dem S3 bzw. CloudFront oder wie auch immer sagen, ah, die URL muss aber signiert sein und die Signaturen sind nur für so und so lange gültig oder du musst halt irgendwie Cookies setzen. Es gibt ja diverse Möglichkeiten, wie man sich authentifizieren kann.

01:25:33.305 --> 01:25:35.245
Aber das Problem ist jetzt natürlich, wenn du

01:25:35.245 --> 01:25:37.045
darauf angewiesen bist, dass das wirklich funktioniert,

01:25:37.425 --> 01:25:38.665
musst du das ja eigentlich testen.

01:25:38.785 --> 01:25:40.765
Du musst ja sagen, okay, wenn jetzt jemand hier

01:25:40.765 --> 01:25:42.785
im Django-Admin gesagt hat,

01:25:42.905 --> 01:25:44.645
da darf keiner, da darf nur ein Autorifizierter

01:25:44.645 --> 01:25:46.805
darauf zugreifen, dann muss man diese Logik irgendwie

01:25:46.805 --> 01:25:48.745
testen können. Aber wenn die

01:25:48.745 --> 01:25:50.125
tatsächliche Überprüfung irgendwie

01:25:50.125 --> 01:25:53.045
in CloudFront stattfindet,

01:25:53.265 --> 01:25:54.925
dann kannst du das nicht mehr gut

01:25:54.925 --> 01:25:56.245
testen, ohne dass du

01:25:56.245 --> 01:25:58.565
tatsächlich irgendwie das nach CloudFront hochschiebst,

01:25:58.745 --> 01:25:59.845
irgendwie deine Einstellungen machst.

01:26:00.025 --> 01:26:02.385
Du musst jetzt natürlich dann einen Mock dafür machen.

01:26:02.385 --> 01:26:03.785
Ja, aber das ist ja

01:26:03.785 --> 01:26:04.925
das ist genau

01:26:04.925 --> 01:26:07.885
Jetzt kommt der Punkt, warum dann Leute

01:26:07.885 --> 01:26:10.525
genau das gleiche

01:26:10.525 --> 01:26:11.885
Szenario quasi, wenn Leute

01:26:11.885 --> 01:26:13.845
sagen so, ja und wir ziehen unsere Infrastruktur

01:26:13.845 --> 01:26:16.025
ja per Terraform hoch und das ist ja

01:26:16.025 --> 01:26:17.845
der Vorteil, dass wir das auf unterschiedliche

01:26:17.845 --> 01:26:19.485
Cloud-Anbieter hochschieben können und jetzt haben wir

01:26:19.485 --> 01:26:21.925
zum Beispiel eben genau dieses Problem, wir haben

01:26:21.925 --> 01:26:23.005
zum Beispiel da irgendwie

01:26:23.005 --> 01:26:26.005
Byte-Range-Requests irgendwie

01:26:26.005 --> 01:26:27.845
erlaubt, das muss man irgendwie bei AWS, muss man das irgendwie

01:26:27.845 --> 01:26:29.685
so und so konfigurieren, dass das geht oder eben

01:26:29.685 --> 01:26:31.965
Authentifizierung und jetzt schieben wir das Ganze nach Azure

01:26:31.965 --> 01:26:33.665
und jetzt

01:26:33.665 --> 01:26:36.445
hat irgendjemand in der Terraform-Config

01:26:36.445 --> 01:26:38.045
irgendwie diese komische Konfiguration

01:26:38.045 --> 01:26:40.065
für AWS oder so gesehen, wie man das macht,

01:26:40.445 --> 01:26:42.085
hat sich gedacht so, was ist das denn?

01:26:42.125 --> 01:26:43.665
Das habe ich ja noch nie gehört. Was sind denn

01:26:43.665 --> 01:26:46.005
Byte-Range-Requests? Ach, das ist bestimmt ein Artefakt

01:26:46.005 --> 01:26:47.185
von irgendeiner uralten Geschichte.

01:26:48.105 --> 01:26:49.885
Ich nehme das mal raus und gucke, ob es geht.

01:26:50.465 --> 01:26:51.985
Man nimmt das raus, guckt, ob es geht

01:26:51.985 --> 01:26:53.525
und dann geht es auch,

01:26:54.105 --> 01:26:56.005
aber man hat damit halt einen ganz wichtigen Teil

01:26:56.005 --> 01:26:57.165
der Funktionalität kaputt gemacht.

01:26:57.645 --> 01:26:59.925
Und jetzt müssen alle Clients plötzlich irgendwie alle Files

01:26:59.925 --> 01:27:01.685
immer komplett holen, weil ByteRange

01:27:01.685 --> 01:27:03.025
wird jetzt nicht mehr gehen und

01:27:03.025 --> 01:27:06.205
wie zum Beispiel bei Podcast oder PodcastPlayer

01:27:06.205 --> 01:27:07.185
holen sich immer nur Teile,

01:27:08.125 --> 01:27:10.085
wenn das Teilformat das unterstützt.

01:27:11.245 --> 01:27:11.965
Und ja,

01:27:12.065 --> 01:27:14.025
das ist in der Produktion dann unterbestimmt eine riesen

01:27:14.025 --> 01:27:16.265
Katastrophe, wenn das halt abgeschaltet ist und nicht mehr geht.

01:27:16.605 --> 01:27:18.185
Das heißt eigentlich, wenn du solche Sachen

01:27:18.185 --> 01:27:19.305
da drin hast, dass halt

01:27:19.305 --> 01:27:20.945
Teile der

01:27:20.945 --> 01:27:24.265
Features deiner Applikation sozusagen

01:27:24.265 --> 01:27:25.965
darin bestehen, dass du dein

01:27:25.965 --> 01:27:28.165
ObjectStore

01:27:28.165 --> 01:27:29.985
oder CDN richtig konfigurierst,

01:27:30.525 --> 01:27:32.185
dann musst du das eigentlich testen.

01:27:32.245 --> 01:27:34.005
Dann musst du das auf einer Test, irgendwie testmäßig

01:27:34.005 --> 01:27:35.885
hochziehen, dann deine

01:27:35.885 --> 01:27:37.865
Features, die halt

01:27:37.865 --> 01:27:39.605
im CDN liegen, halt testen.

01:27:39.965 --> 01:27:41.925
Und dann kannst du erst sagen, wenn das alles funktioniert, okay,

01:27:42.025 --> 01:27:44.125
es funktioniert. Das war gerade ein Plädoyer für das, was ich gerade

01:27:44.125 --> 01:27:44.605
eben gesagt habe.

01:27:45.365 --> 01:27:48.145
Für mich hört sich das an, oh mein Gott, das würde man auf gar keinen Fall

01:27:48.145 --> 01:27:50.245
machen. Für mich klingt das nach einem Plädoyer,

01:27:51.045 --> 01:27:52.105
ich software meine Files selber,

01:27:52.245 --> 01:27:52.965
ich mache das nicht bei einem CDN.

01:27:54.185 --> 01:27:55.005
Aber erst mal als Beispiel.

01:27:55.005 --> 01:27:56.765
Dann kann ich so eine Applikation testen.

01:27:56.765 --> 01:27:59.745
Aber du müsstest deine Byte-Request-Tests tatsächlich testen mit AWS?

01:28:00.165 --> 01:28:01.305
Nein, muss ich nicht.

01:28:01.345 --> 01:28:02.345
Du hast jetzt bei AWS.

01:28:02.805 --> 01:28:09.505
Okay, aber dann wäre der Test, wenn du den hättest, würdest du halt merken, wenn jemand ein Update fährt und das geht dann nicht mehr.

01:28:09.705 --> 01:28:11.285
Aber das würdest du nur mit meinem Update vielleicht.

01:28:12.665 --> 01:28:15.645
Naja, es ist halt furchtbar.

01:28:15.805 --> 01:28:17.185
Wie würdest du es denn machen?

01:28:17.205 --> 01:28:20.185
Also ich würde sagen, es geht wahrscheinlich nicht immer.

01:28:20.545 --> 01:28:25.645
Also manchmal muss man dann vielleicht sowas Furchtbares tun, wie irgendwie dann solche Tests gegen eine Testinstallation fahren.

01:28:25.645 --> 01:28:27.885
Ich würde es so machen, ich würde sagen, ich serve die

01:28:27.885 --> 01:28:30.105
Requests halt selber und teste

01:28:30.105 --> 01:28:32.085
das halt auch, dass die Byte-Range-Requests halt gehen

01:28:32.085 --> 01:28:34.065
und dass Authentifizierung geht, lokal, ohne

01:28:34.065 --> 01:28:36.085
irgendein CDN. Und ich benutze

01:28:36.085 --> 01:28:37.965
dann halt eben kein CDN für diese Art von,

01:28:38.045 --> 01:28:40.045
also vielleicht benutze ich ein CDN für Sachen, wo es egal ist,

01:28:40.085 --> 01:28:41.605
wo ich keine Konfiguration brauche, aber für die Sachen,

01:28:42.125 --> 01:28:44.165
wo ich halt irgendwie Spezialkonfigurationen brauche,

01:28:44.245 --> 01:28:45.225
nehme ich halt kein CDN, sondern

01:28:45.225 --> 01:28:46.725
serve es halt direkt.

01:28:48.285 --> 01:28:50.065
Okay, aber das ist eine Entscheidung, die an deine Stelle

01:28:50.065 --> 01:28:51.985
kommen muss. Das macht mich

01:28:51.985 --> 01:28:53.865
an mehreren Stellen vielleicht unbeweglich.

01:28:55.645 --> 01:28:58.225
Ja, also solange das funktioniert, bin ich damit deutlich flexibel.

01:28:58.245 --> 01:28:59.545
Ja, also solange du den Hut auf hast, schon.

01:29:00.745 --> 01:29:01.585
Ja, also

01:29:01.585 --> 01:29:03.665
ist halt die Frage.

01:29:03.785 --> 01:29:04.625
Ich weiß nicht, ob es auch

01:29:04.625 --> 01:29:07.625
aber diese Geschichte, ich ziehe mir eine

01:29:07.625 --> 01:29:09.625
Testinfrastruktur hoch und mache dann Tests dagegen und

01:29:09.625 --> 01:29:11.005
das dauert alles irgendwie 30 Minuten.

01:29:11.565 --> 01:29:12.985
Das klingt ziemlich schrecklich, ehrlich gesagt.

01:29:13.085 --> 01:29:13.465
3,5 Stunden.

01:29:14.565 --> 01:29:16.225
Aber letztlich muss man dann auch überlegen,

01:29:16.345 --> 01:29:19.705
sind diese Dateien so wichtig, dass ich mir 3,5 Stunden

01:29:19.705 --> 01:29:21.625
Zeit nehme, damit ich

01:29:21.625 --> 01:29:22.685
halt absolut sicher bin?

01:29:23.245 --> 01:29:23.605
Ja.

01:29:23.605 --> 01:29:29.845
Also ich sag mal, bei Kundendaten, die du nicht einfach mal so neu reinbauen kannst, dann sollte man das vielleicht in Erwärmung ziehen.

01:29:30.205 --> 01:29:34.365
Genau, und dann muss man halt gucken, was ist das Richtige.

01:29:34.665 --> 01:29:35.065
Ja, natürlich.

01:29:36.405 --> 01:29:43.165
Und vielleicht kann man dann auch überlegen, okay, ich habe jetzt in dem Bereich nichts gemacht, da reicht so die normalen Tests.

01:29:43.745 --> 01:29:43.925
Ja.

01:29:46.505 --> 01:29:47.665
Ja, ja, also.

01:29:50.865 --> 01:29:52.025
Ja, okay.

01:29:53.605 --> 01:29:54.925
Testing haben wir ja. Okay, aber

01:29:54.925 --> 01:30:06.607
vielleicht nochmal Man kann Molek gibt es bei Enzebel oder Assertions Achso ich meine ich schreibe keine Tests f die Enzebel sondern ich probiere es halt aus und wenn es geht dann sage ich mir okay das ist gut genug

01:30:07.387 --> 01:30:08.648
Alles, was ich wirklich testen möchte,

01:30:08.747 --> 01:30:09.447
teste ich in der Applikation.

01:30:09.987 --> 01:30:12.347
Also was ich mache, bei Enzebel-Sachen ist, ich mache Assertions

01:30:12.347 --> 01:30:13.507
am Anfang, so ein paar,

01:30:14.267 --> 01:30:16.267
die dann halt mir um die Ohren fliegen, weil es sich relativ schnell

01:30:16.267 --> 01:30:18.067
funktioniert, also nicht ein wahrteiliges ganze Playbook

01:30:18.067 --> 01:30:20.347
da läuft, sondern einfach direkt, okay, irgendwas geht hier nicht,

01:30:20.427 --> 01:30:21.327
danke, mach nochmal.

01:30:22.027 --> 01:30:23.447
Aber das sind so einfache Sachen eigentlich nur.

01:30:23.447 --> 01:30:25.367
Ja, also geht ja ganz am Anfang los

01:30:25.367 --> 01:30:27.327
mit einer Debug-Flag, um sich da einfach mal

01:30:27.327 --> 01:30:29.407
alles so anzeigen zu lassen und zu sehen,

01:30:29.527 --> 01:30:31.207
okay, passieren auch die Dinge,

01:30:31.407 --> 01:30:32.727
wo ich vermute, die passieren.

01:30:34.587 --> 01:30:34.947
Tatsächlich

01:30:34.947 --> 01:30:37.367
teste ich die letztlich auch

01:30:37.367 --> 01:30:39.467
gegen Vagrant und gucke dann, ob der

01:30:39.467 --> 01:30:41.967
die am Ende

01:30:41.967 --> 01:30:43.527
die Konfiguration hat, die ich haben möchte.

01:30:43.907 --> 01:30:44.767
Okay, interessant.

01:30:45.087 --> 01:30:46.168
Mit Vagrant testen?

01:30:47.867 --> 01:30:49.547
Was ist mit Molecule? Kennt ihr das?

01:30:50.787 --> 01:30:51.188
Ist auch so

01:30:51.188 --> 01:30:53.188
Endable-Molecule-Testing, da kann man

01:30:53.188 --> 01:30:55.627
Testmodule schreiben, die man dann irgendwie reinsetzt

01:30:55.627 --> 01:30:56.347
in seinen,

01:30:57.767 --> 01:30:59.327
ja, wenn man jetzt so selber Ensemble-Module

01:30:59.327 --> 01:31:00.587
schreibt, dann kann man das irgendwie machen.

01:31:01.527 --> 01:31:03.287
Müssen wir vielleicht nochmal nachgucken. Genau, also in die

01:31:03.287 --> 01:31:05.367
Verlegenheit bin ich bisher noch nicht gekommen, weil es gibt

01:31:05.367 --> 01:31:07.487
echt viel, was man letztlich,

01:31:07.847 --> 01:31:08.527
was es schon gibt.

01:31:09.307 --> 01:31:11.347
Und wenn es das nicht

01:31:11.347 --> 01:31:13.347
gibt, am Ende setze ich dann einfach ein Command

01:31:13.347 --> 01:31:15.107
ab. Ja, okay, das ist halt

01:31:15.107 --> 01:31:17.247
tatsächlich die Frage, weil es gibt halt viele,

01:31:17.507 --> 01:31:19.107
viele Buildings von Ensemble, also Ensemble-Building

01:31:19.107 --> 01:31:21.307
irgendwas, ermöglicht einem relativ viel,

01:31:21.668 --> 01:31:22.747
Kommandos auch dann.

01:31:23.188 --> 01:31:25.287
Community ist meistens schon vorinstalliert

01:31:25.287 --> 01:31:27.467
mit, wenn man das, die meisten Community-Sachen

01:31:27.467 --> 01:31:29.148
sind mit drin, für schöne Sachen.

01:31:30.447 --> 01:31:31.507
Die Frage ist, gibt es

01:31:31.507 --> 01:31:33.487
so Dinge, die man dann selber bauen will? Beispielsweise

01:31:33.487 --> 01:31:35.487
man hat irgendein Command-Line-Interface,

01:31:35.547 --> 01:31:37.327
das man ständig benutzt, was dann immer

01:31:37.327 --> 01:31:39.247
sehr hässliche, ellenlange

01:31:39.247 --> 01:31:41.347
Befehlszeilen ausgibt. Da könnte

01:31:41.347 --> 01:31:43.347
man ja selber sich ein Enable-Modul verschreiben

01:31:43.347 --> 01:31:45.188
in Python, was dann quasi ein

01:31:45.188 --> 01:31:46.947
Abstraktionslayer drüber schreibt, wo man dann

01:31:46.947 --> 01:31:49.047
ein eigenes Enable-Modul,

01:31:49.827 --> 01:31:51.347
ob man das in Galaxy hochlegt, wie auch immer,

01:31:51.347 --> 01:31:53.787
benutzt, um dann zu sagen,

01:31:53.887 --> 01:31:55.627
hey, wir hatten ein einfacheres,

01:31:56.227 --> 01:31:57.527
schöneres Interface, um

01:31:57.527 --> 01:31:59.727
so Befehle zu bieten.

01:32:01.447 --> 01:32:01.767
Ja,

01:32:02.227 --> 01:32:03.547
also tatsächlich so,

01:32:03.747 --> 01:32:05.767
bisher habe ich noch alles gefunden in Ansible,

01:32:06.207 --> 01:32:07.567
was man so braucht.

01:32:07.847 --> 01:32:09.607
Ja, oder man hat tatsächlich dann direkt Shell-Kommandos,

01:32:09.607 --> 01:32:10.787
die man halt ausführen kann. Genau.

01:32:11.688 --> 01:32:13.447
Und ja, dann hat man sich überlegt, okay,

01:32:13.507 --> 01:32:13.887
am Ende

01:32:13.887 --> 01:32:17.507
wird eine SSH-Verbindung aufgemacht

01:32:17.507 --> 01:32:18.787
und ein Shell-Kommando abgesetzt.

01:32:18.787 --> 01:32:21.547
und dann kann man natürlich gucken,

01:32:21.668 --> 01:32:23.487
okay, wenn ich ein Modul entwickle, dann

01:32:23.487 --> 01:32:25.327
gucke ich, dass halt das Richtige

01:32:25.327 --> 01:32:27.327
am Ende rauskommt. Ja, ich würde auch noch ein bisschen

01:32:27.327 --> 01:32:29.347
das Assoziationsniveau, kann man halt manchmal, wenn wirklich

01:32:29.347 --> 01:32:31.127
man komplex sagt, kann man es so ein bisschen vereinfachen,

01:32:31.207 --> 01:32:33.507
vielleicht für Leute, mit denen man arbeitet oder die es benutzen,

01:32:33.607 --> 01:32:35.087
indem man das so ein bisschen wegabstrichelt vielleicht.

01:32:35.567 --> 01:32:37.587
Aber beim Thema Modul schreiben sind wir wieder so,

01:32:38.507 --> 01:32:39.668
dann schreibe ich

01:32:39.668 --> 01:32:40.907
natürlich auch wieder ganz viele Sachen

01:32:40.907 --> 01:32:44.047
für ganz viele Betriebssysteme,

01:32:44.267 --> 01:32:45.427
die ich vielleicht dann

01:32:45.427 --> 01:32:46.807
doch nicht brauche.

01:32:46.807 --> 01:32:57.867
Also, ja, das ist halt immer so die Abwägung, wann macht es Sinn, in die höhere Abstraktion zu gehen, um einfach zu sagen, okay, das bringt mir jetzt so viel.

01:32:58.067 --> 01:33:05.947
Vielleicht hätten wir das mit der Teamgröße zu tun. Also wie viele Anwender von deinem Ende-Bim-Modul gibt es zum Beispiel intern, in dem du was machen willst und wie viele Leuten kannst du da Arbeit erleichtern oder sowas.

01:33:05.947 --> 01:33:08.967
Ja, dann

01:33:08.967 --> 01:33:10.767
ich glaube, was noch fehlt,

01:33:10.847 --> 01:33:12.727
jetzt nur noch nach meiner Liste,

01:33:13.168 --> 01:33:15.188
sind die Secrets und wie man mit Secrets umgeht

01:33:15.188 --> 01:33:17.188
und wo man die herbekommt. Gibt es irgendwelche

01:33:17.188 --> 01:33:19.487
Vaults, aus denen man sich authentifiziert?

01:33:19.547 --> 01:33:21.347
Wie macht man das? Schreibt man Secrets

01:33:21.347 --> 01:33:23.127
mit in irgendwelche Repos rein,

01:33:23.207 --> 01:33:25.087
in Source Control? Ist das eine schlechte Idee? Also man kann

01:33:25.087 --> 01:33:27.148
jetzt zum Beispiel verschlüsselt reinschreiben und dann irgendwie

01:33:27.148 --> 01:33:29.067
aufschlüsseln und dann

01:33:29.067 --> 01:33:31.087
einen Schlüssel nur mitgeben oder so und

01:33:31.087 --> 01:33:33.047
was würdet ihr sagen? Genau, also

01:33:33.047 --> 01:33:34.467
es gibt Ansible Vault

01:33:34.467 --> 01:33:37.287
und da kann ich dann letztlich

01:33:37.287 --> 01:33:38.267
einen beliebigen String

01:33:38.267 --> 01:33:41.127
verschlüsseln gegen ein Passwort

01:33:41.127 --> 01:33:43.267
und bekomme dann halt

01:33:43.267 --> 01:33:45.607
das Secret rausgeworfen,

01:33:45.688 --> 01:33:48.527
das kann ich dann in meinen Playbook reinpacken,

01:33:48.887 --> 01:33:49.407
dann kann ich das

01:33:49.407 --> 01:33:51.707
letztlich auch einchecken, weil es verschlüsselt ist

01:33:51.707 --> 01:33:54.427
und muss dann beim Ausführen des Playbooks

01:33:54.427 --> 01:33:55.947
einfach sagen, okay,

01:33:56.367 --> 01:33:58.027
frag mich nach dem Geheimnis oder nach dem

01:33:58.027 --> 01:34:00.168
Schlüssel für das Geheimnis und dann

01:34:00.168 --> 01:34:01.607
entschlüsselt er das Ganze.

01:34:02.047 --> 01:34:04.127
Ich kann es natürlich letztlich

01:34:04.127 --> 01:34:05.727
auch wieder ins Inventory schreiben

01:34:05.727 --> 01:34:07.547
zum Entschlüsseln, aber dann

01:34:07.547 --> 01:34:09.547
bin ich wieder bei dieser Debatte.

01:34:10.447 --> 01:34:11.067
Sollte ich

01:34:11.067 --> 01:34:14.087
unter welchen Umständen sollte ich Geheimnisse

01:34:14.087 --> 01:34:15.487
in meine Repos einchecken?

01:34:15.767 --> 01:34:18.027
Das ist ja spannend. Beispielsweise wenn das gerade bei

01:34:18.027 --> 01:34:20.107
dem ganzen Infrastrukturprozess, muss das ja irgendwo

01:34:20.107 --> 01:34:22.127
rein und irgendwo entschlüsselt sein.

01:34:22.327 --> 01:34:24.107
Also irgendeine Maschine kennt dann

01:34:24.107 --> 01:34:25.947
das Secret, entweder als lokale

01:34:25.947 --> 01:34:27.987
.env oder was auch immer und da muss man halt wenigstens hingehen

01:34:27.987 --> 01:34:29.987
und das für den Zeitraum, wo man die Befehle ausführt,

01:34:30.107 --> 01:34:32.067
dann entschlüsseln, aufmachen und

01:34:32.067 --> 01:34:33.907
dann da reinschieben. Dann muss man halt auch fassen, dass es irgendwo

01:34:33.907 --> 01:34:36.087
nicht in irgendwelchen Logs oder irgendwo im Speicher

01:34:36.087 --> 01:34:37.207
zwischendurch weggeschrieben wird.

01:34:37.547 --> 01:34:40.047
Genau, also letztlich die Maschine, die es ausführt,

01:34:40.148 --> 01:34:40.547
die weiß es.

01:34:43.668 --> 01:34:44.967
Ja, ja, also da gibt es...

01:34:44.967 --> 01:34:46.247
Also jede Maschine, die es ausführt, weiß es.

01:34:46.247 --> 01:34:46.487
Genau.

01:34:47.247 --> 01:34:49.188
Die Vermittlung zwischendrin muss halt auch stabil sein und so.

01:34:49.927 --> 01:34:51.127
Ja gut, die sind ja da

01:34:51.127 --> 01:34:52.787
SSR relativ abgehangen.

01:34:54.168 --> 01:34:56.027
Das ist wahrscheinlich nicht das Problem,

01:34:56.307 --> 01:34:58.148
aber ja, also ich meine, die Secrets

01:34:58.148 --> 01:34:59.648
sind halt auf der Maschine unter...

01:34:59.648 --> 01:35:01.387
Ich meine, das Schlimmste...

01:35:01.387 --> 01:35:04.087
Es gibt ja diese 12-Factor-App-Geschichte,

01:35:04.207 --> 01:35:06.107
wie man halt, also das ist halt

01:35:06.107 --> 01:35:08.127
eigentlich die Art, wie Heroku

01:35:08.127 --> 01:35:09.707
irgendwie Dinge deployed hat,

01:35:09.847 --> 01:35:11.907
und die haben das halt so aufgeschrieben und das dann so genannt.

01:35:12.487 --> 01:35:14.188
Und da ist ja eine der

01:35:14.188 --> 01:35:15.767
Geschichten so für Secrets oder so

01:35:15.767 --> 01:35:17.227
Umgebungsvariablen zu verwenden.

01:35:18.227 --> 01:35:20.007
Ist halt auch so eine, also ich mach's häufig

01:35:20.007 --> 01:35:21.987
auch so, aber auf der anderen

01:35:21.987 --> 01:35:23.927
Seite so ein simpler

01:35:23.927 --> 01:35:25.807
Einwand dagegen ist halt, dass Leute

01:35:25.807 --> 01:35:27.847
sagen, ja, du machst es damit Angreifern aber auch extrem

01:35:27.847 --> 01:35:28.827
einfach, weil

01:35:28.827 --> 01:35:32.168
eigentlich muss ein Angreifer, wenn er weiß, dass du das so machst

01:35:32.168 --> 01:35:33.947
oder ich meine eigentlich, das ist halt das erste, was man dann tut

01:35:33.947 --> 01:35:36.047
als Angreifer, einfach mal das Environment

01:35:36.047 --> 01:35:38.087
nehmen, weil das ist ja super einfach zu lesen

01:35:38.087 --> 01:35:39.427
wenn du halt das Gehaft hast, irgendwie

01:35:39.427 --> 01:35:41.407
Code im Kontext von irgendeinem Prozess auszuführen

01:35:41.407 --> 01:35:43.347
nimmst du das Environment und schickst es irgendwo hin

01:35:43.347 --> 01:35:45.927
und dann hast du halt schon viele Secrets möglicherweise

01:35:45.927 --> 01:35:47.367
alle möglichen AWS Keys und so

01:35:47.367 --> 01:35:50.407
irgendwo hingeschickt und das ist halt das erste, was ein Angreifer macht

01:35:50.407 --> 01:35:52.307
Ja, wenn man bei GitHub danach sucht, da gibt es dann

01:35:52.307 --> 01:35:52.688
einige

01:35:52.688 --> 01:35:56.887
gesquattete

01:35:56.887 --> 01:35:58.987
Raypos, die genau das

01:35:58.987 --> 01:36:01.047
machen, also die quasi den Quellcode nehmen und halt

01:36:01.047 --> 01:36:02.807
wenn man sich vertippt hat,

01:36:03.607 --> 01:36:05.148
dann einfach mal die Environment woanders

01:36:05.148 --> 01:36:07.027
hinschicken. Genau, und das ist

01:36:07.027 --> 01:36:08.867
natürlich so ein bisschen, und wenn man das irgendwie

01:36:08.867 --> 01:36:10.547
anders machen würde, also zum Beispiel

01:36:10.547 --> 01:36:12.847
über, also was ich auch gern mache,

01:36:13.227 --> 01:36:14.867
jetzt nicht bei Django mache ich es tatsächlich

01:36:14.867 --> 01:36:16.907
meistens über Environment, weil es halt irgendwie so praktisch ist

01:36:16.907 --> 01:36:18.027
und aber

01:36:18.027 --> 01:36:20.727
in Projekten, wo ich Pydentic habe,

01:36:21.007 --> 01:36:22.887
mache ich es meistens mit Base-Settings oder so, wo es

01:36:22.887 --> 01:36:24.847
dann halt aus einem File gelesen wird und man das halt

01:36:24.847 --> 01:36:26.847
wissen muss und importieren muss und das ist halt schon mal

01:36:26.847 --> 01:36:28.987
so ein automatisierter Angriff funktioniert.

01:36:29.188 --> 01:36:30.767
Und dann diese Base-Settings werden dann in

01:36:30.767 --> 01:36:31.688
Environment-Variablen geschrieben.

01:36:32.287 --> 01:36:35.127
Am Ende ist es bei

01:36:35.127 --> 01:36:37.207
der IT-Security immer das Thema,

01:36:37.387 --> 01:36:38.707
was ist denn mein Angriffsszenario,

01:36:39.267 --> 01:36:41.127
wenn ich jetzt sage,

01:36:41.207 --> 01:36:43.067
okay, ich bin eh in einem privaten Repo

01:36:43.067 --> 01:36:43.587
und

01:36:43.587 --> 01:36:46.867
wenn jemand dann Zugriff auf

01:36:46.867 --> 01:36:48.947
mein privates Report, was auf mein CI läuft

01:36:48.947 --> 01:36:50.787
und alles, also sagen wir, ich habe ein privates

01:36:50.787 --> 01:36:52.587
GitLab und da ist jemand drin,

01:36:53.247 --> 01:36:54.947
ja, dann ist es egal.

01:36:54.947 --> 01:36:58.087
oder wenn ich sage, okay,

01:36:58.227 --> 01:36:59.847
aber es ist ja dann im Rahmen

01:36:59.847 --> 01:37:02.188
und wenn jemand jetzt meine Umgebungsvariablen

01:37:02.188 --> 01:37:03.927
auslesen kann, dann auch schon wieder

01:37:03.927 --> 01:37:06.027
ein Problem.

01:37:06.487 --> 01:37:07.387
Das ist, wenn ich meinem

01:37:07.387 --> 01:37:09.767
Provider oder meinem Hoster nicht traue, dann

01:37:09.767 --> 01:37:11.688
habe ich auch ein Problem. Irgendwo

01:37:11.688 --> 01:37:13.567
muss man dann sagen, okay,

01:37:13.807 --> 01:37:15.027
diese Risiken gehe ich ein

01:37:15.027 --> 01:37:17.827
oder das sind die Maßnahmen, die ich

01:37:17.827 --> 01:37:18.227
geändert habe.

01:37:18.267 --> 01:37:21.567
Ich wurde gezwungen von der Konzern-Security,

01:37:21.688 --> 01:37:23.067
für den Konzern, für den ich was gemacht habe,

01:37:23.067 --> 01:37:25.727
eben nicht direkt Environment Variables

01:37:25.727 --> 01:37:26.967
zu setzen, was ich gewollt hätte,

01:37:27.327 --> 01:37:29.367
also in so eine

01:37:29.367 --> 01:37:31.347
Terraform irgendwie rein, da kommen das halt aus Secrets

01:37:31.347 --> 01:37:32.767
und das ist halt irgendwie gekapselt, sondern

01:37:32.767 --> 01:37:35.188
ich musste es nochmal über einen Umweg in einen

01:37:35.188 --> 01:37:37.207
extra Vault reinschreiben, der

01:37:37.207 --> 01:37:39.327
dann irgendwie extra verschlüsselt

01:37:39.327 --> 01:37:41.207
wird, wo dann keiner mehr dran Zugriff drauf haben

01:37:41.207 --> 01:37:42.007
sollte angeblich.

01:37:43.207 --> 01:37:45.007
Ende von mir war aber, es wurde dann doch wieder

01:37:45.007 --> 01:37:47.067
da als Environment Variable in diese Container

01:37:47.067 --> 01:37:48.287
reingeschrieben. Das heißt,

01:37:49.047 --> 01:37:51.027
das Ergebnis war dasselbe, nur dass ich zwischendurch

01:37:51.027 --> 01:37:52.827
noch ein paar extra Schritte gehen musste, wo

01:37:52.827 --> 01:38:22.807
und Jochen unterhalten sich über die Programmiersprache Python

01:38:22.827 --> 01:38:26.267
haben, was man überhaupt tut, bevor man irgendwie die Regeln in FOS statisch irgendwie...

01:38:26.267 --> 01:38:28.607
Ja, aber das steht so in der Policy,

01:38:28.767 --> 01:38:30.887
das machen wir so. Ja, genau, das ist ITIL.

01:38:31.007 --> 01:38:32.747
Irgendwer hat einen ITIL-Prozess definiert, wo das drinsteht,

01:38:32.787 --> 01:38:33.228
wie man das macht.

01:38:34.667 --> 01:38:36.648
Also ich kann ja einfach sagen, wie ist das? Also ich check

01:38:36.648 --> 01:38:38.547
tatsächlich die Secrets

01:38:38.547 --> 01:38:40.547
irgendwie mit ein, auch in

01:38:40.547 --> 01:38:42.607
öffentlichen Repos und da

01:38:42.607 --> 01:38:44.447
braucht man halt dann eben eine entsprechende Passphrase.

01:38:44.547 --> 01:38:46.607
Also was ich mir vorstelle, was man noch da verbessern

01:38:46.607 --> 01:38:48.287
könnte, weil momentan ist halt das Problem, okay, wie schnell

01:38:48.287 --> 01:38:50.087
verhält man denn das

01:38:50.087 --> 01:38:52.447
Passwort oder das Wohlpasswort, das man

01:38:52.447 --> 01:38:53.107
dafür braucht halt.

01:38:54.127 --> 01:38:54.707
Ja gut.

01:38:56.347 --> 01:38:58.148
Man braucht halt irgendeinen vertrauenswürdigen Kanal,

01:38:58.247 --> 01:39:00.347
über den man das übermitteln kann. Ich glaube, man kann auch

01:39:00.347 --> 01:39:01.648
irgendwie Dinge mit GPG machen.

01:39:01.767 --> 01:39:04.267
Also ich würde sowas versuchen, wie die Yubi-Keys zu verschicken.

01:39:04.607 --> 01:39:04.867
Ja.

01:39:05.827 --> 01:39:08.067
Wo dann halt die Keys drauf sind, die das funktionieren.

01:39:08.167 --> 01:39:09.487
Und dann vielleicht geht das...

01:39:09.487 --> 01:39:11.728
Die sind halt auch nicht kopiersicher oder sowas.

01:39:11.847 --> 01:39:14.167
Ja, die Yubi-Keys, genau, die könnte man natürlich dann über den

01:39:14.167 --> 01:39:15.887
SSH-Agent...

01:39:15.887 --> 01:39:17.688
Und dann könnte man

01:39:17.688 --> 01:39:20.127
GPG machen und dann könnte man das wieder

01:39:20.127 --> 01:39:20.847
entschlüsseln.

01:39:20.847 --> 01:39:21.087
Ja.

01:39:22.447 --> 01:39:24.587
Also mein idealer

01:39:24.587 --> 01:39:26.487
Workflow sozusagen, ich kann es momentan nur so

01:39:26.487 --> 01:39:28.688
beschreiben, wie ich es gerne hätte, aber ich weiß noch nicht genau, wie man

01:39:28.688 --> 01:39:30.587
es implementiert, ist halt sozusagen, dass ich sage, wenn ich

01:39:30.587 --> 01:39:32.787
jetzt halt irgendwas deployen will oder möchte an die Secrets,

01:39:33.648 --> 01:39:34.607
dass mich das

01:39:34.607 --> 01:39:36.627
Ansible halt dann, dass ich mich irgendwie bei Ansible

01:39:36.627 --> 01:39:38.587
einhake oder so und dann, dass dann, keine Ahnung,

01:39:38.648 --> 01:39:40.627
auf meinem Telefon halt dann irgendwie

01:39:40.627 --> 01:39:42.427
Two-Factor-mäßig irgendwas aufgeht und sagt halt,

01:39:42.487 --> 01:39:44.007
hier bestätige mal, dass ich irgendwie

01:39:44.007 --> 01:39:46.707
das angucken

01:39:46.707 --> 01:39:48.327
kannst und dann geht es halt auf

01:39:48.327 --> 01:39:49.148
so zum Beispiel

01:39:49.148 --> 01:39:51.547
oder YubiKey oder so.

01:39:51.547 --> 01:39:53.587
Also ich finde die Kombination cool. Auf dem Telefon geht auch

01:39:53.587 --> 01:39:55.027
halt mal bitte an das Telefon in YubiKey.

01:39:55.307 --> 01:39:55.987
Ja, irgendwie sowas.

01:39:56.367 --> 01:40:01.087
Ja, da könnte man dann auch gleich überlegen,

01:40:01.207 --> 01:40:03.987
mache ich das vielleicht auf der Ebene von SSH,

01:40:04.547 --> 01:40:06.067
dass ich den Zwei-Faktor-SSH mache?

01:40:06.148 --> 01:40:06.947
Gibt es auch eine Lösung?

01:40:07.207 --> 01:40:08.188
Da geht es auch mit YubiKey übrigens.

01:40:08.188 --> 01:40:10.067
Da habe ich letztens irgendwie, der Johannes hat das so gelinkt,

01:40:10.127 --> 01:40:11.228
so einen Artikel in seinen Weak News.

01:40:12.367 --> 01:40:12.867
Ja, ja.

01:40:14.587 --> 01:40:15.707
Ja, genau.

01:40:16.627 --> 01:40:17.587
Wem musst du vertrauen?

01:40:17.967 --> 01:40:19.407
Deinen Mitarbeitern vertrauen?

01:40:19.707 --> 01:40:21.527
Ist auch vielleicht nicht immer so einfach. Für was?

01:40:21.547 --> 01:40:23.507
und so, aber klar, also wenn du jetzt irgendwie einen Admin hast,

01:40:23.547 --> 01:40:25.327
der Sachen entwickeln soll, der muss natürlich schon zugefahren.

01:40:25.467 --> 01:40:27.107
Das macht halt sonst keinen Sinn, wenn du jedes Mal irgendwie

01:40:27.107 --> 01:40:29.367
einen Antrag stellen musst und in drei Tagen warten musst.

01:40:29.467 --> 01:40:31.547
Für mich wäre das natürlich totaler Quatsch.

01:40:32.567 --> 01:40:32.787
Ja, oder?

01:40:33.107 --> 01:40:35.427
Ja, an irgendeiner Stelle muss ich halt

01:40:35.427 --> 01:40:37.127
Leuten vertrauen und ich muss halt dann die

01:40:37.127 --> 01:40:39.467
Abwägung treffen, wem möchte ich

01:40:39.467 --> 01:40:41.527
denn vertrauen? Ich finde das mit physisch, glaube ich, ganz gut.

01:40:41.648 --> 01:40:43.688
Also wenn man den Leuten einen physischen Schlüssel in die Hand geben kann,

01:40:43.827 --> 01:40:45.407
den die vielleicht sogar

01:40:45.407 --> 01:40:47.707
kopiergeschützt, ich weiß nicht, ob es so etwas gibt.

01:40:47.827 --> 01:40:49.007
Ja, also die YubiKeys,

01:40:50.407 --> 01:40:51.387
ja, die soll

01:40:51.387 --> 01:40:52.827
also an sich, diese ganzen

01:40:52.827 --> 01:40:54.627
Hardware-Schlüssel sind kopiergeschützt.

01:40:56.847 --> 01:40:57.367
Ja, also

01:40:57.367 --> 01:40:59.228
wenn einer rausfindet, wie es geht.

01:41:01.127 --> 01:41:03.127
Wenn ich halt jemanden dann sage, okay, wir treffen uns,

01:41:03.188 --> 01:41:04.127
oder ich schicke ihn per Postakku,

01:41:04.228 --> 01:41:07.927
da fängst du dann an,

01:41:08.047 --> 01:41:09.747
wer hat dann den Zugriff auf diese ganzen Sachen.

01:41:10.287 --> 01:41:11.367
Aber wenn man den halt dann

01:41:11.367 --> 01:41:13.287
abgeben kann, dann ist das schon

01:41:13.287 --> 01:41:15.307
relativ sicher, okay, dass ich jetzt in meiner Chain

01:41:15.307 --> 01:41:17.387
dann nur die Leute anwenden, die diesen

01:41:17.387 --> 01:41:18.547
Schlüssel auch von mir bekommen haben.

01:41:19.607 --> 01:41:20.887
Das ist ja schon mal ein Vorteil.

01:41:21.387 --> 01:41:22.547
oder Zertifikate.

01:41:22.787 --> 01:41:24.567
Auch schön. Die kann man ja auch

01:41:24.567 --> 01:41:25.927
sagen, die laufen ab relativ schnell.

01:41:26.667 --> 01:41:28.447
Und dann ist die Root Authority, die

01:41:28.447 --> 01:41:29.747
ist dann...

01:41:29.747 --> 01:41:31.907
Ja, genau.

01:41:32.688 --> 01:41:34.507
Geht ja auch relativ fix, so eine CA

01:41:34.507 --> 01:41:36.487
aufzustellen. Die sicher zu halten, ist

01:41:36.487 --> 01:41:38.427
wieder schwierig. Ja, das ist absolut super. Wir haben auch so eine

01:41:38.427 --> 01:41:40.387
Root CA, die sich selbst definiert hat und

01:41:40.387 --> 01:41:42.188
die dann die ganzen Zertifikate mit raus...

01:41:42.188 --> 01:41:43.887
Warum macht ihr denn den Scheiß drauf?

01:41:44.407 --> 01:41:44.847
Ja.

01:41:46.547 --> 01:41:47.247
Ja, ja.

01:41:47.347 --> 01:41:48.767
Das ist Security auch. Sehr, sehr

01:41:48.767 --> 01:41:49.648
schwieriges Thema.

01:41:49.648 --> 01:41:51.887
Ja, man

01:41:51.887 --> 01:41:53.847
kriegt es nicht absolut sicher hin

01:41:53.847 --> 01:41:55.927
und man, also es ist wirklich, man muss sich

01:41:55.927 --> 01:41:57.648
die Risiken vor Augen führen und sagen,

01:41:58.407 --> 01:41:59.927
dieses Risiko gehe ich jetzt ein.

01:41:59.947 --> 01:42:01.787
Man braucht halt irgendwie eine unabhängige Autorität, der man

01:42:01.787 --> 01:42:02.447
vertrauen kann.

01:42:03.467 --> 01:42:04.527
TÜV geprüft, ne?

01:42:06.927 --> 01:42:07.367
Ja.

01:42:07.547 --> 01:42:09.148
Man müsste irgendwo so ein Denkmal machen,

01:42:09.287 --> 01:42:11.767
da steht dieser ursprüngliche Schlüssel drin und der ist dann

01:42:11.767 --> 01:42:12.807
noch, ne?

01:42:13.667 --> 01:42:14.107
Ja.

01:42:16.107 --> 01:42:17.287
Och, ja, ja.

01:42:17.407 --> 01:42:18.787
Es ist schwierig.

01:42:19.648 --> 01:42:20.127
Ja, das

01:42:20.127 --> 01:42:23.728
einen spannenden Aspekt, den wir

01:42:23.728 --> 01:42:25.627
noch nicht so beleuchtet haben. Also wir haben ja

01:42:25.627 --> 01:42:27.207
auch viel über Docker gesprochen

01:42:27.207 --> 01:42:29.728
und dass das so, ja, vielleicht

01:42:29.728 --> 01:42:31.507
auch Ansible verdrängt. Aber

01:42:31.507 --> 01:42:33.627
was Ansible jetzt viel macht, ist

01:42:33.627 --> 01:42:35.567
in die Network Automation

01:42:35.567 --> 01:42:36.527
reinzugehen. Das heißt,

01:42:37.707 --> 01:42:39.648
ja, alle großen Anbieter, die bieten

01:42:39.648 --> 01:42:41.467
jetzt auch Ansible-Module an. Das heißt,

01:42:41.607 --> 01:42:43.148
ich kann letztlich Cisco

01:42:43.148 --> 01:42:45.447
Switch mit Ansible konfigurieren.

01:42:46.148 --> 01:42:47.567
Das sind interessante Sachen.

01:42:47.567 --> 01:42:53.447
und alles, was relativ groß ist, Palo Alto, Unipy, Nokia,

01:42:54.507 --> 01:42:57.127
die lassen sich jetzt über Ansible ansprechen.

01:42:58.007 --> 01:43:02.047
Und wer schon mal so eine Cisco-Konsole bedient hat...

01:43:02.047 --> 01:43:08.707
Ja, das will man automatisiert wegschieben über seine eigene Shell,

01:43:08.807 --> 01:43:10.747
wo man sagt, ich habe hier ein Skript für Rennmal.

01:43:10.747 --> 01:43:17.507
Genau, Ansible definiert mir hier jetzt mal, welche IP-Adressen wohin und welche VLAN es gibt.

01:43:17.567 --> 01:43:21.067
und das ist schöner,

01:43:21.447 --> 01:43:23.247
als das alles mit der Hand einmal einzupicken.

01:43:23.267 --> 01:43:25.107
Das kann man dann auch wieder schön testen eigentlich.

01:43:26.447 --> 01:43:27.547
Dann weiß man halt, okay, stabil.

01:43:27.747 --> 01:43:28.807
Dann kann man auf jeden Fall Use Cases finden,

01:43:28.867 --> 01:43:31.587
wenn es nicht stabil ist, okay, dann mach es mal anders.

01:43:32.407 --> 01:43:33.027
Also dieses Ganze,

01:43:33.167 --> 01:43:34.807
ich muss jetzt immer manuell dran rumfummeln,

01:43:34.907 --> 01:43:35.427
bis es stimmt.

01:43:35.547 --> 01:43:38.447
Das sollte man nicht machen.

01:43:38.867 --> 01:43:41.447
Klar, das ist natürlich,

01:43:42.007 --> 01:43:43.087
davon muss man irgendwie weg.

01:43:44.927 --> 01:43:45.648
Also ich finde,

01:43:45.648 --> 01:43:47.188
also prinzipiell, dass das halt alles

01:43:47.188 --> 01:43:49.447
in Repositories drin ist und die

01:43:49.447 --> 01:43:51.407
Änderungen getrackt werden und man

01:43:51.407 --> 01:43:53.267
auch den Stand wieder reproduzieren kann.

01:43:53.407 --> 01:43:54.347
Das sind alles super Sachen.

01:43:54.747 --> 01:43:56.688
Das will man eigentlich schon haben.

01:43:58.367 --> 01:43:58.467
Aber

01:43:58.467 --> 01:44:01.327
gut, bei Testen wäre ich mir jetzt...

01:44:01.327 --> 01:44:03.107
Ich kann mir auch vorstellen, dass es Situationen gibt, wo man das

01:44:03.107 --> 01:44:05.387
auch dann testen können will. Ich wäre mir jetzt nur nicht so

01:44:05.387 --> 01:44:07.107
sicher, ob der Aufwand

01:44:07.107 --> 01:44:09.228
sich immer lohnt oder ob es nicht andere Wege gibt,

01:44:09.228 --> 01:44:10.547
das gleiche Ziel zu erreichen.

01:44:10.747 --> 01:44:12.847
Du musst es halt wie bei Ronny machen. Sobald

01:44:12.847 --> 01:44:15.007
die Coverage bei deinem Commit runtergeht

01:44:15.007 --> 01:44:17.067
oder bei deinem Pull-Request, wird er direkt

01:44:17.067 --> 01:44:17.487
by the Night.

01:44:17.987 --> 01:44:18.707
Ja, genau.

01:44:21.507 --> 01:44:21.907
Ja.

01:44:22.267 --> 01:44:22.707
Ja, ja.

01:44:23.627 --> 01:44:25.587
Ich weiß nicht. Ach so, genau.

01:44:28.327 --> 01:44:29.247
Ich wollte irgendwas sagen.

01:44:29.847 --> 01:44:30.648
Ja, genau.

01:44:31.127 --> 01:44:32.107
Dinge, die mir noch so,

01:44:32.547 --> 01:44:34.907
die ich noch gerne loswerden würde,

01:44:35.087 --> 01:44:36.487
man kann auch noch so Dinge tun wie,

01:44:37.027 --> 01:44:38.747
wenn Sachen lange laufen, kann man irgendwie

01:44:38.747 --> 01:44:40.947
Async mitgeben und dann wird halt immer nur

01:44:40.947 --> 01:44:42.767
ab und zu mal geguckt und andere Sachen können halt

01:44:42.767 --> 01:44:44.907
parallel weiterlaufen. Das ist manchmal ganz praktisch.

01:44:45.527 --> 01:44:46.847
Also auf einer Maschine oder auf

01:44:46.847 --> 01:44:48.107
an den anderen Posts.

01:44:48.127 --> 01:44:48.967
Für den Task zum Beispiel.

01:44:49.347 --> 01:44:51.728
Aber die Task auf einer Maschine parallel, in verschiedenen Prozessen?

01:44:52.607 --> 01:44:53.728
Ja, du kannst, ja, oder

01:44:53.728 --> 01:44:56.627
auf einer Maschine.

01:44:57.107 --> 01:44:57.967
Ja, genau, das wollte ich gerade fragen.

01:44:57.967 --> 01:44:59.707
Ja, klar, also du hast die Parallelität über

01:44:59.707 --> 01:45:01.688
unterschiedliche Maschinen, nicht auf einer.

01:45:02.347 --> 01:45:03.787
Ja, genau.

01:45:03.947 --> 01:45:05.947
Und du kannst natürlich auch angeben, wie viele Prozesse

01:45:05.947 --> 01:45:07.847
das sein sollen. Wenn du viele Maschinen hast

01:45:07.847 --> 01:45:09.547
und viele Prozesse, dann wird es natürlich irgendwann doof auf dem

01:45:09.547 --> 01:45:11.107
Host, auf dem du das ausführst.

01:45:12.407 --> 01:45:14.027
Ja, kann man auch so Waitpoints machen?

01:45:14.107 --> 01:45:15.707
Keine Ahnung, du musst jetzt aber warten, bis das und das

01:45:15.707 --> 01:45:16.367
und das fertig ist.

01:45:16.847 --> 01:45:40.847
und

01:45:40.847 --> 01:45:43.148
Geschichten nicht funktioniert haben

01:45:43.148 --> 01:45:45.027
und das geht ja alles.

01:45:45.207 --> 01:45:45.688
Also das kannst du ja nicht schaffen.

01:45:45.688 --> 01:45:47.027
Das sind Sachen, die sind so nervig, manchmal

01:45:47.027 --> 01:45:50.007
gerade Infrastruktur, erste Service aufbauen

01:45:50.007 --> 01:45:51.587
und dann zwischendurch hast du so Fehler, die

01:45:51.587 --> 01:45:53.827
unvorhersehbar sind, weil irgendwelche Netzwerkprobleme

01:45:53.827 --> 01:45:55.607
sind oder irgendein Name Server gerade nicht reagiert hat

01:45:55.607 --> 01:45:57.587
oder sowas und irgendeine IP noch nicht kennt oder so

01:45:57.587 --> 01:45:59.728
und dann macht es bumm und du fragst dich warum

01:45:59.728 --> 01:46:01.447
und dann lässt es nochmal laufen und es funktioniert wieder.

01:46:01.547 --> 01:46:02.767
Das ist eine furchtbare Hölle.

01:46:02.807 --> 01:46:04.728
Genau, da kannst du auch so ein Retrys mitgeben.

01:46:06.267 --> 01:46:07.148
Aber ja,

01:46:07.567 --> 01:46:09.507
man läuft halt dann halt

01:46:09.507 --> 01:46:11.467
wirklich diese unschönen Probleme rein

01:46:11.467 --> 01:46:13.247
und es wird auch nicht schöner.

01:46:15.287 --> 01:46:17.167
Achso, jetzt richtig, jetzt weiß ich wieder, was ich sagen wollte.

01:46:18.047 --> 01:46:19.067
Genau, also

01:46:19.067 --> 01:46:21.107
einer der Gründe, warum ich meine ganzen

01:46:21.107 --> 01:46:23.228
Incivil-Geschichten, die meisten davon nicht

01:46:23.228 --> 01:46:24.767
eingecheckt habe, also manche davon schon, aber

01:46:24.767 --> 01:46:26.947
die meisten nicht, ist halt, dass ich

01:46:26.947 --> 01:46:28.648
also man kann bei Incivil auch sagen,

01:46:29.367 --> 01:46:31.127
das habe ich halt noch nicht gemacht, aber

01:46:31.127 --> 01:46:33.547
sollte vielleicht, die Inventories

01:46:33.547 --> 01:46:35.148
kann man halt auch auf Server legen oder so,

01:46:35.148 --> 01:46:37.027
dass es halt nicht aus dem Textfile kommt, sondern irgendwo

01:46:37.027 --> 01:46:39.347
und momentan bei mir kommen sie meistens aus dem Textfile

01:46:39.347 --> 01:46:41.167
und das heißt, wenn ich mein Inventory wieder einchecke,

01:46:41.247 --> 01:46:43.307
dann checke ich meine gesamte Infrastruktur mit ein und das will ich

01:46:43.307 --> 01:46:45.287
echt nicht. Das Inventory kann

01:46:45.287 --> 01:46:46.867
halt auch ein Skript sein,

01:46:47.487 --> 01:46:48.547
das kann ein Ordner sein,

01:46:49.207 --> 01:46:50.987
das kann wieder ein Ansible-Modul sein,

01:46:51.148 --> 01:46:52.347
wo sich das halt dann die

01:46:52.347 --> 01:46:54.947
Punkte wieder herholt. Dynamisches Anbauen, ne?

01:46:55.007 --> 01:46:57.267
Ja, du musst halt dazwischen, wie nennt man das, Jump-Hose

01:46:57.267 --> 01:46:59.307
bauen, die dann irgendwie bestimmte Sachen vorbereiten

01:46:59.307 --> 01:47:00.787
und ausführen und dann da

01:47:00.787 --> 01:47:02.787
so eine Art Date-Warein haben.

01:47:02.787 --> 01:47:04.947
Ich kann einfach gegen den Hetzener DNS zum Beispiel

01:47:04.947 --> 01:47:06.907
fragen, so, wie sieht's

01:47:06.907 --> 01:47:08.827
hier aus und dann gibt er mir das als

01:47:08.827 --> 01:47:10.127
Inventory.

01:47:12.767 --> 01:47:13.407
Also

01:47:13.407 --> 01:47:15.467
da gibt es verschiedene Plugins

01:47:15.467 --> 01:47:17.067
AWS, Docker, Kubernetes,

01:47:17.347 --> 01:47:17.907
Proxmox

01:47:17.907 --> 01:47:20.148
und noch viele mehr.

01:47:20.867 --> 01:47:22.127
Was ist Proxmox?

01:47:22.827 --> 01:47:24.667
Das ist auch eine

01:47:24.667 --> 01:47:27.267
Virtualisierungsumgebung, also eher wie

01:47:27.267 --> 01:47:28.228
ein

01:47:28.228 --> 01:47:31.567
Hardwarehost,

01:47:32.607 --> 01:47:33.487
der einem halt dann

01:47:33.487 --> 01:47:34.427
verschiedene

01:47:34.427 --> 01:47:36.867
so wie früher

01:47:36.867 --> 01:47:37.447
vor MWR.

01:47:38.188 --> 01:47:41.087
Nur halt so ein bisschen als Community-Projekt.

01:47:42.287 --> 01:47:42.747
Okay, vielleicht

01:47:42.747 --> 01:47:43.447
auch mal reinhören.

01:47:45.207 --> 01:47:46.667
Habt ihr noch Punkte auf eurer Liste?

01:47:47.327 --> 01:47:48.827
Ja, genau.

01:47:48.887 --> 01:47:50.307
Einen Punkt habe ich noch, was man auch machen kann.

01:47:50.827 --> 01:47:52.787
Man kriegt eine Textausgabe, wenn man einfach

01:47:52.787 --> 01:47:54.127
Ansible so auf der Kommando-Zelle ausführt.

01:47:54.827 --> 01:47:56.207
Aber man kann halt

01:47:56.207 --> 01:47:58.547
Ansible auch sagen, hier ist

01:47:58.547 --> 01:48:00.947
dein Callback-Command

01:48:00.947 --> 01:48:02.847
irgendwie. Und dann

01:48:02.847 --> 01:48:04.367
kann man selber zum Beispiel eine Funktion schreiben,

01:48:04.367 --> 01:48:06.467
in die die Ausgaben von Ansible

01:48:06.467 --> 01:48:10.767
reingehen, beziehungsweise nicht nur die Ausgaben, sondern man kriegt halt wirklich... Man kann das loggen, wenn man will?

01:48:11.127 --> 01:48:14.287
Man könnte es loggen, also wozu ich das benutze ist, ich gebe halt JSON aus,

01:48:14.747 --> 01:48:18.947
also ich passe das dann halt auf und dann packe ich das in mein eigenes JSON-Format und gebe dann halt JSON aus,

01:48:19.387 --> 01:48:22.307
weil dann kann ich das halt, während es läuft,

01:48:23.027 --> 01:48:26.627
irgendwie direkt auf einer Webseite anzeigen. Okay, dann weißt du halt, in welcher State

01:48:26.627 --> 01:48:28.767
gerade ist und wo ist denn das gerade und wie weit ist denn das?

01:48:30.447 --> 01:48:34.827
Und vor allen Dingen habe ich an der Stelle auch eine sehr schöne Abstraktion,

01:48:34.827 --> 01:48:36.567
wo ich das ja auftrennen kann, weil

01:48:36.567 --> 01:48:38.527
ich verwende jetzt meistens zwar Ansible,

01:48:38.947 --> 01:48:40.827
aber es könnte auch Situationen geben, wo ich nicht

01:48:40.827 --> 01:48:42.027
Ansible verwenden will, sondern

01:48:42.027 --> 01:48:44.667
wo ich direkt SSH verwenden will

01:48:44.667 --> 01:48:46.827
oder ein Skript, einfach nur

01:48:46.827 --> 01:48:48.148
oder ein Python-Skript oder

01:48:48.148 --> 01:48:50.787
was ganz anderes. Ich will Ansible durch was anderes ersetzen.

01:48:50.927 --> 01:48:51.827
Es gibt ja auch so, ich meine,

01:48:51.967 --> 01:48:54.688
bei den Boxinen,

01:48:54.967 --> 01:48:56.567
die verwenden ja, die hatten Ansible

01:48:56.567 --> 01:48:58.987
lange Zeit verwendet und sind

01:48:58.987 --> 01:49:00.148
dann auf was anderes umgestiegen.

01:49:00.367 --> 01:49:00.747
Weißt du was?

01:49:02.787 --> 01:49:04.367
Ich habe es wieder vergessen. Ich wusste es mal.

01:49:04.827 --> 01:49:06.467
Okay, der Jens hat irgendwas Eigenes gebaut.

01:49:06.787 --> 01:49:08.648
Nee, nee, aber ja, oder er hat

01:49:08.648 --> 01:49:09.688
irgendwas Eigenes, ich weiß es nicht mehr genau.

01:49:10.747 --> 01:49:11.067
Jedenfalls,

01:49:11.327 --> 01:49:14.367
genau, also vielleicht will ich ja auf irgendwas anderes umsteigen,

01:49:14.807 --> 01:49:15.927
aber ich kann ja diesen

01:49:15.927 --> 01:49:18.347
JSON-Layer halt sozusagen

01:49:18.347 --> 01:49:20.327
erhalten, dann muss ich an meinem

01:49:20.327 --> 01:49:22.747
quasi Deployment-Überwachungstool

01:49:22.747 --> 01:49:24.807
muss ich überhaupt nichts mehr ändern,

01:49:24.947 --> 01:49:26.567
muss ich überhaupt nichts ändern, das läuft einfach so weiter

01:49:26.567 --> 01:49:28.407
und ich habe unten drunter kann ich das Ansible austauschen

01:49:28.407 --> 01:49:30.747
und also das finde ich ganz nett,

01:49:30.787 --> 01:49:32.107
dass man das weiß, dass das geht, dass man nicht

01:49:32.107 --> 01:49:33.847
irgendwie Ansible Tower oder so verwenden muss,

01:49:33.847 --> 01:49:35.007
weil das war auch sowas, nicht?

01:49:36.167 --> 01:49:37.287
Was ist Ansible Tower?

01:49:37.847 --> 01:49:39.247
Ah ja, gut, stimmt, das müssen wir noch machen.

01:49:39.267 --> 01:49:41.327
Das wäre ich auch noch zugekommen.

01:49:42.367 --> 01:49:43.267
Ja, also

01:49:43.267 --> 01:49:45.587
diese ganzen Probleme, die Ansible ja hat,

01:49:46.167 --> 01:49:47.807
zum Beispiel, manchmal hat man ja Tasks,

01:49:48.127 --> 01:49:48.967
die sollen

01:49:48.967 --> 01:49:51.707
so wie ein Cronjob laufen,

01:49:52.347 --> 01:49:53.867
aber dann sollen die nicht auf der lokalen Maschine

01:49:53.867 --> 01:49:55.407
laufen und dann

01:49:55.407 --> 01:49:56.867
hat man erstmal ein Problem.

01:49:57.467 --> 01:49:59.847
Ja, man müsste quasi irgendwas online halten die ganze Zeit, was dann Sachen...

01:50:00.407 --> 01:50:01.627
Genau, und das wäre genau

01:50:01.627 --> 01:50:03.728
Ansible Tower, der kann dann halt

01:50:03.728 --> 01:50:07.467
und da kann man halt Playbooks reintun und die laufen dann...

01:50:07.467 --> 01:50:08.067
Und wo steht denn der?

01:50:09.087 --> 01:50:11.967
Also den kann man sich von Red Hat mieten.

01:50:12.287 --> 01:50:14.228
Ah, deswegen rum jetzt zu der Enterprise-Variante.

01:50:14.667 --> 01:50:19.007
Genau, und die Enterprise-Preise werden auch nicht angezeigt auf der Webseite.

01:50:20.167 --> 01:50:22.867
Gut, aber theoretisch könnte man sich auch eigentlich so einen eigenen Server per Enzel konfigurieren,

01:50:22.927 --> 01:50:23.767
der dann Kontos laufen lässt.

01:50:24.188 --> 01:50:27.547
Genau, also Enzible Tower an sich, wenn man es gehostet laufen lässt, ist auch teuer.

01:50:27.547 --> 01:50:30.807
kann es auch selber aufsetzen

01:50:30.807 --> 01:50:31.887
aber

01:50:31.887 --> 01:50:34.688
habe ich bisher noch nie geschafft

01:50:34.688 --> 01:50:36.547
komischerweise ist es auch ein Docker-Container

01:50:36.547 --> 01:50:37.607
und kein Ansible-Playbook

01:50:37.607 --> 01:50:39.547
hätte ich jetzt eher erwartet

01:50:39.547 --> 01:50:41.107
Dogfood

01:50:41.107 --> 01:50:43.407
aber warum macht man dann nicht so etwas wie einfach Conjobs auf einem

01:50:43.407 --> 01:50:44.587
Bare Metal

01:50:44.587 --> 01:50:49.047
der Ansible-Tower

01:50:49.047 --> 01:50:50.648
gibt ja natürlich noch eine schöne Web-Oberfläche

01:50:50.648 --> 01:50:52.287
die dann die Logs einfängt

01:50:52.287 --> 01:50:53.567
und alles sagt

01:50:53.567 --> 01:50:54.688
kann man ja auch alles selber bauen

01:50:54.688 --> 01:50:55.807
und wie so ein Grafana-Problem ist.

01:50:56.867 --> 01:50:58.728
Ja, alles selber bauen ist natürlich

01:50:58.728 --> 01:51:00.287
auch immer eine gute Zeitsenkung.

01:51:01.167 --> 01:51:02.707
Ja, ich habe es getan und

01:51:02.707 --> 01:51:04.648
ja, es war dann sehr, ich konnte

01:51:04.648 --> 01:51:07.047
quasi beliebig viel Zeit dran senken, das war gar kein Problem.

01:51:07.527 --> 01:51:08.847
Ja, das war so eine

01:51:08.847 --> 01:51:10.067
der ersten Django-Apps, die ich hatte

01:51:10.067 --> 01:51:12.507
oder hat dann,

01:51:12.967 --> 01:51:14.787
also die zweite App, die hat nämlich dann

01:51:14.787 --> 01:51:16.767
die erste App, die ich hatte, deployed per

01:51:16.767 --> 01:51:17.587
Ansible Playbooks.

01:51:17.587 --> 01:51:18.087
Ach, sehr gut.

01:51:19.127 --> 01:51:20.407
Jetzt kommt mir irgendwie bekannt vor.

01:51:21.188 --> 01:51:23.247
Ja, genau, das mache ich halt auch.

01:51:23.247 --> 01:51:26.427
Genau, wir können mal gucken, ob ich das hier...

01:51:26.427 --> 01:51:29.287
Das ist natürlich so im...

01:51:29.287 --> 01:51:30.067
Ja, aber ich hatte auch...

01:51:30.067 --> 01:51:31.927
Bei mir heißt das Steward. Ich habe mir überlegt,

01:51:32.027 --> 01:51:33.467
ich muss die ganze Nacht nach Schiffen nennen.

01:51:33.827 --> 01:51:35.947
Die Server heißen alle nach Planeten und die Dinge

01:51:35.947 --> 01:51:37.827
Steward, Lieutenant, also ich gehe nach denen.

01:51:38.688 --> 01:51:39.327
Ja, genau.

01:51:41.327 --> 01:51:42.527
Es gibt auch die Möglichkeit,

01:51:42.648 --> 01:51:44.567
die Server einfach nach dem zu benennen, was sie tun.

01:51:44.667 --> 01:51:45.947
Dann ist es für alle sofort klar.

01:51:46.547 --> 01:51:47.648
Ja, also was heißt denn für alle?

01:51:47.827 --> 01:51:50.047
Es muss ja hinreichend

01:51:50.047 --> 01:51:51.307
geheim und...

01:51:51.307 --> 01:51:53.047
Wer muss das nennen?

01:51:53.247 --> 01:52:01.807
Ja, aber ich habe im Grunde sowas wie ein Tower, das macht nicht, dass das Tower macht, sondern noch ein bisschen mehr und andere Dinge, aber es ist halt tatsächlich sehr ähnlich.

01:52:01.807 --> 01:52:04.007
Ich kann richtig gut User Interfaces.

01:52:04.007 --> 01:52:05.787
Nee, gar nicht. Das sieht man hier auch.

01:52:06.228 --> 01:52:07.567
Aber das macht halt genau sowas.

01:52:08.347 --> 01:52:09.587
Das kann halt eben

01:52:09.587 --> 01:52:11.827
diese Dinge, das kann er direkt live einzeigen,

01:52:11.887 --> 01:52:13.847
was da halt passiert. Und was ich halt damit auch

01:52:13.847 --> 01:52:15.067
machen kann, ich kann halt

01:52:15.067 --> 01:52:17.487
Playbooks, die deployen halt,

01:52:17.947 --> 01:52:19.627
also wenn ich jetzt zum Beispiel Hosting machen will

01:52:19.627 --> 01:52:21.867
für andere Leute, dann kann ich dem sagen,

01:52:21.967 --> 01:52:23.967
okay, nimm halt dieses Playbook und setz halt

01:52:23.967 --> 01:52:26.148
die Domain auf das und die Datenbank

01:52:26.148 --> 01:52:26.567
auf das.

01:52:27.228 --> 01:52:29.827
Man könnte natürlich auch Variablen dann mitgeben,

01:52:29.907 --> 01:52:30.747
die abgefragt werden.

01:52:31.267 --> 01:52:31.688
Ja, genau.

01:52:34.007 --> 01:52:34.827
Das ist schön, ja.

01:52:35.287 --> 01:52:37.367
Ja, und da es ja alles Python ist,

01:52:37.707 --> 01:52:39.267
integriert sich das ja auch alles sehr schön

01:52:39.267 --> 01:52:41.407
dann wieder mit Django und man kann quasi aus dem Django

01:52:41.407 --> 01:52:43.367
raus direkt dann das Ansible aufrufen.

01:52:44.228 --> 01:52:45.587
Ja, das habe ich jetzt nicht gemacht,

01:52:45.707 --> 01:52:46.447
sondern ich habe hier,

01:52:47.188 --> 01:52:49.207
weil ich dachte, für diese Geschichte habe ich nicht Django

01:52:49.207 --> 01:52:51.747
verwendet, sondern irgendwie FastAPI,

01:52:52.547 --> 01:52:52.987
weil...

01:52:52.987 --> 01:52:53.807
Ja, wird ja auch gehen.

01:52:54.047 --> 01:52:56.867
Ja, weil damit halt alles schön async ist, weil das Problem ist,

01:52:56.887 --> 01:52:59.228
wenn ich jetzt viele Deployments laufen habe, die laufen alle

01:52:59.228 --> 01:53:01.247
async, aber die laufen lange und

01:53:01.247 --> 01:53:03.307
da kommen immer mal wieder so Events und dann

01:53:03.307 --> 01:53:05.007
habe ich halt Clients, die drauf sind und dann, ich habe das,

01:53:05.188 --> 01:53:07.127
das würde ich heute nicht mehr machen, ich habe das

01:53:07.127 --> 01:53:09.167
jetzt, hier habe ich das mit WebSockets gemacht und

01:53:09.167 --> 01:53:11.188
mit Vue, ich würde dafür

01:53:11.188 --> 01:53:12.947
heutzutage, jetzt inzwischen würde ich dafür

01:53:12.947 --> 01:53:14.867
tatsächlich HTMLX nehmen, aber

01:53:14.867 --> 01:53:16.427
ja,

01:53:16.667 --> 01:53:18.847
ja genau,

01:53:18.927 --> 01:53:20.747
ich habe ganz viele langlaufende Sachen,

01:53:21.087 --> 01:53:23.107
die parallel, wo Dinge so, dann nehme ich

01:53:23.107 --> 01:53:25.107
doch irgendwie native async alles.

01:53:26.027 --> 01:53:27.127
Ja, hat

01:53:27.127 --> 01:53:28.707
viel mehr Zeit gekostet, als ich jetzt

01:53:28.707 --> 01:53:30.707
gedacht hätte. Oh,

01:53:30.927 --> 01:53:32.967
kurzer Exkurs, ja, also

01:53:32.967 --> 01:53:56.967
und

01:54:02.967 --> 01:54:04.747
noch nicht so lange, aber ich habe da schon

01:54:04.747 --> 01:54:06.407
sehr üble Tracebacks

01:54:06.407 --> 01:54:08.728
aus den Internas von SQL Alchemy gesehen,

01:54:08.807 --> 01:54:10.807
wo ich mir dachte, so häufig

01:54:10.807 --> 01:54:11.547
solche Sachen wie

01:54:11.547 --> 01:54:14.427
an diese Stelle solltest du niemals kommen,

01:54:14.667 --> 01:54:15.947
hier versuchen gerade zwei,

01:54:16.267 --> 01:54:18.507
eine Connection wird von zwei unterschiedlichen

01:54:18.507 --> 01:54:20.688
Routinen benutzt oder so,

01:54:21.327 --> 01:54:22.688
hier ist irgendwas furchtbar schiefgelaufen,

01:54:22.807 --> 01:54:22.987
tschüss.

01:54:24.607 --> 01:54:26.487
Und das ist irgendwie häufig passiert,

01:54:26.767 --> 01:54:28.707
und überhaupt dieser ganze Tanz,

01:54:28.887 --> 01:54:30.827
also man hat ja bei SQL Alchemy hat man eine Engine

01:54:30.827 --> 01:54:32.947
und dann hat man, auf der Engine hat man eine Connection.

01:54:32.967 --> 01:54:35.007
und diese Connection braucht man halt,

01:54:35.427 --> 01:54:37.148
die ist in einem Connection-Pool und dann

01:54:37.148 --> 01:54:38.607
gibt es halt eine Session, die hat den Connection-Pool,

01:54:38.947 --> 01:54:41.027
die Session muss man auch aufmachen und dann auf dieser Session

01:54:41.027 --> 01:54:42.327
hat man halt irgendwie noch Transaktionen.

01:54:42.427 --> 01:54:44.967
Diese Transaktionen können dann natürlich noch mal genestet sein und all diese

01:54:44.967 --> 01:54:47.167
Dinge, die man aufgemacht hat, die muss man ja auch irgendwie wieder zumachen

01:54:47.167 --> 01:54:48.667
und wenn man irgendwo was vergisst,

01:54:49.107 --> 01:54:51.167
also manche von den Funktionen, mit denen man die auf-

01:54:51.167 --> 01:54:52.987
oder zumacht, sind halt synchron, manche sind

01:54:52.987 --> 01:54:55.127
asynchron. Das ist natürlich ganz schlecht,

01:54:55.188 --> 01:54:56.907
wenn man jetzt irgendwie ein Ding, was man eigentlich

01:54:56.907 --> 01:54:58.927
asynchron erwarten sollte, halt einfach so zumacht.

01:54:59.467 --> 01:55:01.148
Dann passiert auch ganz, dann bleibt

01:55:01.148 --> 01:55:04.927
plötzlich so, es funktioniert alles und irgendwann plötzlich Dinge hängen oder werden langsam

01:55:04.927 --> 01:55:08.927
und irgendwas wird komisch, irgendwas funktioniert nicht mehr so richtig und dann kann man halt irgendwie

01:55:08.927 --> 01:55:12.747
so wirklich viel Zeit damit verbringen, rauszukriegen, was läuft denn da eigentlich schief und das ist echt

01:55:12.747 --> 01:55:16.867
also das ist einfach ätzend und was mich auch

01:55:16.867 --> 01:55:20.807
irgendwie so ein bisschen geärgert hat schon, ist halt, dass das alles

01:55:20.807 --> 01:55:25.047
inkonsistent ist, also einmal ist Sync inkonsistent und dann Engine aufmachen

01:55:25.047 --> 01:55:28.867
Engine zumachen ist dann halt Engine Dispose, Connection

01:55:28.867 --> 01:55:30.627
ist aber Connection Closed. Session

01:55:30.627 --> 01:55:32.587
ist wieder auch Session Closed, glaube ich.

01:55:32.867 --> 01:55:34.467
Aber es ist halt immer unterschiedlich.

01:55:35.267 --> 01:55:36.887
Man muss halt so einen kompletten Tanz

01:55:36.887 --> 01:55:37.567
da irgendwie machen.

01:55:38.228 --> 01:55:40.047
Wenn man das aufmacht und wieder zumacht und

01:55:40.047 --> 01:55:42.587
an welcher Stelle macht man jetzt was

01:55:42.587 --> 01:55:44.807
und was darf global im Prozess

01:55:44.807 --> 01:55:46.847
leben und was muss man aber für jeden

01:55:46.847 --> 01:55:48.347
Request da reinkommen, neu machen.

01:55:48.728 --> 01:55:49.347
Das ist kein Spaß.

01:55:50.688 --> 01:55:52.747
Manchmal dachte ich mir so, ich probiere jetzt einfach alle Möglichkeiten,

01:55:52.887 --> 01:55:54.648
wie man Dinge auf und zu machen kann, irgendwie durch

01:55:54.648 --> 01:55:56.787
und versuche irgendwie zu testen, ob das dann noch

01:55:56.787 --> 01:55:58.047
funktioniert oder nicht.

01:55:58.867 --> 01:55:59.847
Also, ja.

01:55:59.907 --> 01:56:01.007
Kurze Plädoyer für Django.

01:56:01.847 --> 01:56:04.287
Ja gut, bei Django geht das halt noch gar nicht, was ich da jetzt gemacht habe.

01:56:04.547 --> 01:56:06.027
Insofern kann man nicht sagen,

01:56:06.087 --> 01:56:07.267
nehmt einfach Django, dann habt ihr das Problem nicht,

01:56:07.367 --> 01:56:08.427
sondern dann habt ihr auch die Lösung nicht.

01:56:09.367 --> 01:56:11.527
Aber es war schon, also das war,

01:56:11.807 --> 01:56:12.787
es hat mich schon so ein bisschen,

01:56:13.527 --> 01:56:14.807
also ich fand es schwierig.

01:56:15.747 --> 01:56:17.767
Ja, es funktioniert jetzt, halbwegs hoffe ich.

01:56:19.467 --> 01:56:21.367
Das hat ja auch doch irgendwo Gegengarum mitgebracht.

01:56:21.787 --> 01:56:23.327
Ich mache jetzt einfach tatsächlich alles

01:56:23.327 --> 01:56:24.367
pro Request.

01:56:24.367 --> 01:56:26.047
Wie man einfach die Konfidenz abnimmt.

01:56:26.707 --> 01:56:28.367
Die länger man drüber nachdenkt.

01:56:28.867 --> 01:56:31.107
Ja, ja, ja.

01:56:31.527 --> 01:56:32.107
Aber ja.

01:56:32.487 --> 01:56:34.507
Also ich würde fast sagen, das war das Schlusswort zu der Ensebel-Folge.

01:56:34.667 --> 01:56:36.867
Es sei denn, du hast noch was, Max, was wir vergessen haben.

01:56:38.787 --> 01:56:40.327
Nur so noch ein paar allgemeine Sachen.

01:56:40.467 --> 01:56:42.487
Also sich den ersten Commit von Ensebel anzusehen,

01:56:42.547 --> 01:56:43.267
ist auch sehr schön.

01:56:44.127 --> 01:56:46.547
Weil da ist es noch sehr einfach

01:56:46.547 --> 01:56:47.247
und man sieht, okay,

01:56:48.267 --> 01:56:49.967
Ensebel macht halt wirklich

01:56:49.967 --> 01:56:52.307
nur eine SSH auf und

01:56:52.307 --> 01:56:53.327
gibt den Command weiter.

01:56:54.447 --> 01:56:55.947
Und da versteht man noch wirklich viel,

01:56:56.567 --> 01:56:57.827
was dann später

01:56:57.827 --> 01:57:00.188
nicht mehr der Fall ist.

01:57:00.667 --> 01:57:02.347
Also, wenn man sich so

01:57:02.347 --> 01:57:03.707
grundsätzlich interessiert, okay,

01:57:04.067 --> 01:57:05.547
wie funktioniert das,

01:57:06.148 --> 01:57:07.967
dann ist das ein wirklich schöner Commit der Erste.

01:57:08.707 --> 01:57:09.228
Okay, cool.

01:57:09.867 --> 01:57:11.307
Danke für den Tipp, den muss ich unbedingt mal machen.

01:57:11.567 --> 01:57:13.287
Wenn ja auch in der Show-Note direkt linken, würde ich sagen.

01:57:13.967 --> 01:57:16.027
Ja, genau.

01:57:16.707 --> 01:57:18.228
Ja, gab es noch was zu Ensebel?

01:57:18.367 --> 01:57:19.767
Ansonsten können wir auch Pics machen.

01:57:20.587 --> 01:57:21.867
Ich würde mit dem Pix-Scan anfangen.

01:57:22.027 --> 01:57:22.188
Okay.

01:57:23.347 --> 01:57:25.667
Und zwar habe ich auch eben was vergessen bei Europython, was ich noch

01:57:25.667 --> 01:57:27.487
mitnehmen wollte, und zwar das

01:57:27.487 --> 01:57:29.047
Evis Project. Kennt das von euch jemand?

01:57:29.387 --> 01:57:31.047
Oh ja, das habe ich.

01:57:31.407 --> 01:57:33.387
Das ist sehr hübsch. Das ist geschrieben

01:57:33.387 --> 01:57:34.967
von Wes McKinney, auch

01:57:34.967 --> 01:57:36.787
die neue Company.

01:57:38.148 --> 01:57:39.648
Das ist so ein Absalationsinterface

01:57:39.648 --> 01:57:41.667
auf, ich würde sagen, also Art von SQL,

01:57:41.807 --> 01:57:43.387
in dem man halt so Datenmagerfragen machen kann

01:57:43.387 --> 01:57:45.307
auf Postgres, auf Pandas

01:57:45.307 --> 01:57:47.447
funktioniert das, das funktioniert auf Apache Impala,

01:57:47.707 --> 01:57:49.167
auf PySpark und anderen

01:57:49.167 --> 01:57:51.247
großen Sachen und das ist so ein

01:57:51.247 --> 01:57:53.307
bisschen fast wie so ein ORM oder so fast,

01:57:53.427 --> 01:57:54.728
könnte man so ähnlich sehen,

01:57:54.807 --> 01:57:57.287
auf Datenstrukturen. Also ich würde sagen,

01:57:57.487 --> 01:58:07.627
und es macht halt so etwas möglich auf Pandas, dass man halt Lazy Evaluation hat und es macht halt SQL-like Geschichten.

01:58:09.407 --> 01:58:13.027
Weil normalerweise sind alle Sachen, die man auf Data Frames macht, irgendwie so eager.

01:58:13.947 --> 01:58:18.648
Also Pandas ist sowieso, das muss man auch verdenken, es gab da so einen schönen Talk von Matthew Rocklin,

01:58:19.067 --> 01:58:24.447
der Maintainer von Pandas, der sagt, Pandas ist gerade Crossroads, wir haben jetzt ein paar Optionen, was wir machen können.

01:58:24.447 --> 01:58:30.767
also Pandas, da gab es auch schon vor Jahren einen Vortrag von Wes Van Pini, dem ursprünglichen Autor von Pandas

01:58:30.767 --> 01:58:34.507
für kleine Datenmengen funktioniert es, aber wenn es jetzt mehrere Zehn Gigabyte

01:58:34.507 --> 01:58:37.967
groß wird, dann wird es halt schlecht und es gibt halt diverse Probleme, die Pandas hat halt einfach

01:58:37.967 --> 01:58:42.347
aufgrund von der ganzen Geschichte und dass man irgendwie der Blockmanager

01:58:42.347 --> 01:58:45.867
und Nampai und ganz viel und

01:58:45.867 --> 01:58:50.447
der hat dann Pandas 2.0 quasi angeschartet und das ist aber nie zu

01:58:50.447 --> 01:58:51.107
irgendwas geworden.

01:58:52.567 --> 01:58:54.547
Aber das eigentliche Pandas-Projekt steht

01:58:54.547 --> 01:58:56.467
jetzt wieder an der gleichen Stelle sozusagen und man muss sich halt

01:58:56.467 --> 01:58:58.387
überlegen, was man macht. Und ein großer Unterschied zu

01:58:58.387 --> 01:59:00.467
anderen Geschichten ist halt, dass es so etwas wie

01:59:00.467 --> 01:59:02.167
dass man nicht sagt, okay,

01:59:02.807 --> 01:59:04.407
ich compile mir jetzt meinen Filter

01:59:04.407 --> 01:59:06.507
und sonst wie keine Ahnung, was ich auf dem DataFrame machen möchte

01:59:06.507 --> 01:59:07.527
und dann sage ich irgendwann execute,

01:59:08.547 --> 01:59:10.287
sondern es ist halt eager, was halt bedeutet,

01:59:10.367 --> 01:59:12.407
ich kann es eigentlich nicht auf viele Maschinen verteilen

01:59:12.407 --> 01:59:14.027
und dann irgendwie ein Ergebnis zurückholen.

01:59:14.027 --> 01:59:15.767
Was halt die Skalierungsprobleme bei Riesengruten.

01:59:15.827 --> 01:59:18.407
Genau, mit Spark und so, da kann man das alles machen.

01:59:18.407 --> 01:59:20.367
Oder mit Das geht das natürlich auch.

01:59:20.447 --> 01:59:21.547
aber fangen das selber halt nicht.

01:59:21.648 --> 01:59:24.507
Und Ibis ist genau das, der Rappertra von Python,

01:59:24.607 --> 01:59:26.287
dass du halt mit das und die ganzen Sachen da einfach

01:59:26.287 --> 01:59:27.967
alles drauf zugreifen kannst und es benutzen kannst.

01:59:28.587 --> 01:59:30.127
Superschönes Python High-Level-Interface.

01:59:31.307 --> 01:59:32.707
Es kommt natürlich bekannt vor,

01:59:32.807 --> 01:59:33.487
also für eine Funktion.

01:59:34.247 --> 01:59:36.247
Ja, genau, da gibt es

01:59:36.247 --> 01:59:37.787
diese Firma hinter

01:59:37.787 --> 01:59:40.327
ist das Cloudera?

01:59:40.407 --> 01:59:41.607
Ich glaube, das war da mal eine Zeit lang.

01:59:41.847 --> 01:59:43.767
Da hat er dieses Projekt auch gestartet, weil

01:59:43.767 --> 01:59:46.167
ich habe sich das zum ersten Mal vernetzt,

01:59:46.247 --> 01:59:48.127
das war auch Ende 2016,

01:59:49.027 --> 01:59:50.167
glaube ich, da habe ich Ibis

01:59:50.167 --> 01:59:52.148
zum ersten Mal verwendet, Anfang

01:59:52.148 --> 01:59:52.787
2017,

01:59:54.107 --> 01:59:56.087
weil die ganzen

01:59:56.087 --> 01:59:57.967
Geschichten, die oft in so Business Intelligence

01:59:57.967 --> 01:59:59.887
Abteilungen sind, die die

01:59:59.887 --> 02:00:02.227
mit riesigen SQL-Statements.

02:00:02.607 --> 02:00:03.787
Wenn du jetzt eigentlich aber das

02:00:03.787 --> 02:00:05.827
in Python machen möchtest, also ich kam da halt

02:00:05.827 --> 02:00:07.947
als Python-Entwickler und die

02:00:07.947 --> 02:00:09.647
machten alle irgendwie SQL vor allen Dingen

02:00:09.647 --> 02:00:10.967
um Sachen aus

02:00:10.967 --> 02:00:13.407
riesigen Hadoop-Cluster und

02:00:13.407 --> 02:00:15.807
dann SQL-Abfragen

02:00:15.807 --> 02:00:17.327
und die gehen dann per Hive,

02:00:17.687 --> 02:00:19.767
werden die halt verteilt über MapReduce

02:00:19.767 --> 02:00:21.827
oder halt das neue heiße Ding

02:00:21.827 --> 02:00:23.707
da war halt Impala, wo das dann halt in Memory

02:00:23.707 --> 02:00:25.087
und irgendwie schneller geht.

02:00:25.507 --> 02:00:27.487
Impala ist auch unterstützt von

02:00:27.487 --> 02:00:29.527
Evis, ja. Genau, und

02:00:29.527 --> 02:00:31.027
dann ist aber das Problem, okay,

02:00:31.547 --> 02:00:33.527
und dann dachte ich, okay, wie komme ich denn jetzt an meine Daten,

02:00:33.587 --> 02:00:35.407
wie kriege ich das denn jetzt in den DataFrames, weil ich würde ja gerne

02:00:35.407 --> 02:00:37.707
mit DataFrames-Dingen drauf tun und nicht

02:00:37.707 --> 02:00:39.807
das in CSVs rausschreiben,

02:00:39.867 --> 02:00:41.687
was die oft dann gemacht haben und dann in R irgendwie

02:00:41.687 --> 02:00:43.587
einlesen, das wäre alles ganz schrecklich und die saßen

02:00:43.587 --> 02:00:45.547
das war auch so eine Situation, also

02:00:45.547 --> 02:00:48.007
wo ich mir denke,

02:00:48.227 --> 02:00:49.847
wie könnt ihr ja, das ist ja

02:00:49.847 --> 02:00:51.847
irgendwie, wie könnt ihr so leben?

02:00:52.067 --> 02:00:53.647
Das geht doch nicht, dass wir so, okay,

02:00:53.807 --> 02:00:55.707
jetzt schieße ich diesen Hype-Job ab, dann gehe ich erst mal Mittagessen,

02:00:55.767 --> 02:00:57.467
weil das dauert jetzt erst mal anderthalb Stunden oder so, keine Ahnung.

02:00:58.087 --> 02:00:59.127
Ja, aber das geht doch nicht.

02:00:59.527 --> 02:01:01.347
und ja, für die ging das irgendwie.

02:01:02.487 --> 02:01:04.007
Ich hab gedacht, was soll man den ganzen Tag machen?

02:01:04.407 --> 02:01:04.867
Ja, gut.

02:01:06.907 --> 02:01:07.807
Also man muss halt nicht so viel

02:01:07.807 --> 02:01:09.487
arbeiten, wenn dann Python ist ja superproduktiv.

02:01:09.847 --> 02:01:11.267
Ja, oder dann halt eben dann auch

02:01:11.267 --> 02:01:13.487
diese komischen Zwischenschritte

02:01:13.487 --> 02:01:15.287
und Dinge und dass man halt irgendwie so

02:01:15.287 --> 02:01:17.907
komisch kommt und dann auch überhaupt diese riesigen SQL-Statements,

02:01:18.207 --> 02:01:18.927
der auch so denkt, okay,

02:01:19.467 --> 02:01:21.807
wenn das 100 Zeilen werden und man nachdenken

02:01:21.807 --> 02:01:23.367
muss, was macht denn dieses SQL-Statement eigentlich?

02:01:23.487 --> 02:01:24.827
Ui, ich muss da wirklich mal drüber nachdenken.

02:01:25.127 --> 02:01:36.199
Ich hab immer noch nicht verstanden was das wirklich tut Dann ist das schon schlimm aber man hat so Dinge hat mehrere hundert Zeilen und dann macht das so Core wo man sich denkt wenn da irgendwo ein Fehler drin ist Und das ist so kompliziert

02:01:36.579 --> 02:01:38.079
also wenn das Code wäre,

02:01:38.339 --> 02:01:40.119
das muss ausgiebig getestet werden.

02:01:40.719 --> 02:01:42.659
Und bei SQL-Statements

02:01:42.659 --> 02:01:43.939
testen ist halt auch so ein Ding, das

02:01:43.939 --> 02:01:44.799
passiert nicht so richtig.

02:01:45.539 --> 02:01:47.559
Naja, jedenfalls, genau, da bin ich dann auf

02:01:47.559 --> 02:01:50.039
Ibis auch gekommen, weil man damit halt schön

02:01:50.039 --> 02:01:51.939
quasi irgendwie

02:01:51.939 --> 02:01:54.059
Impala, ich weiß nicht, ob es damals von Impala

02:01:54.059 --> 02:01:55.739
war, irgendwas direkt abfragen konnte und dann

02:01:55.739 --> 02:01:56.979
und Data Friends freimachen.

02:01:56.979 --> 02:01:57.379
Ja.

02:01:58.459 --> 02:02:02.319
Ja, das war mein Pick der Woche.

02:02:03.219 --> 02:02:03.819
Ja, sehr schön.

02:02:05.779 --> 02:02:06.799
Hast du noch einen, Max?

02:02:07.379 --> 02:02:09.119
Ich habe tatsächlich zwei.

02:02:10.500 --> 02:02:11.099
Einmal

02:02:11.099 --> 02:02:12.859
den Django Context Decorator

02:02:12.859 --> 02:02:13.419
von Rix.

02:02:14.699 --> 02:02:17.039
Das ist ein sehr schöner, kleiner

02:02:17.039 --> 02:02:17.419
Helfer.

02:02:18.919 --> 02:02:20.859
Man sagt einfach, man macht halt

02:02:20.859 --> 02:02:21.619
den Decorator drum,

02:02:22.739 --> 02:02:23.699
sagt dann, okay,

02:02:24.699 --> 02:02:25.679
gib mir das raus

02:02:25.679 --> 02:02:26.899
und dann habe ich das halt im Kontext.

02:02:27.439 --> 02:02:29.539
Sonst muss ich mir natürlich immer die Kontextvariable holen,

02:02:29.579 --> 02:02:31.139
das da reinschreiben und dann rausschicken.

02:02:31.839 --> 02:02:33.199
So Mixed-Sense-Bound für sowas oder so.

02:02:33.319 --> 02:02:35.279
Genau, erspart. Ungefähr so drei

02:02:35.279 --> 02:02:35.819
Zellen Code.

02:02:36.939 --> 02:02:39.559
Aber Software-Ergonomie ist halt

02:02:39.559 --> 02:02:39.919
dann schön.

02:02:40.699 --> 02:02:42.999
Das andere Thema ist

02:02:42.999 --> 02:02:45.279
Xonj. Das ist eine

02:02:45.279 --> 02:02:46.199
Python-Shell.

02:02:47.699 --> 02:02:49.519
Da schreibt man halt nicht Bash, da schreibt

02:02:49.519 --> 02:02:50.399
man dann Python.

02:02:51.999 --> 02:02:53.659
Das kann man gut und schlecht finden,

02:02:53.659 --> 02:02:55.279
aber ich finde es eigentlich sehr

02:02:55.279 --> 02:03:07.992
sch denn da kann ich dann auch wie gewohnt in Python dr loopen Ist das dein Default Ja meine Default Genau ich kann da letztlich alle Commands die ich in der

02:03:07.992 --> 02:03:09.552
Shell habe, letztlich ausführen und die

02:03:09.552 --> 02:03:11.972
laufen dann halt in den Python-Interpreter

02:03:11.972 --> 02:03:13.852
rein und dann kann ich schlimme Dinge damit

02:03:13.852 --> 02:03:14.132
tun.

02:03:15.252 --> 02:03:17.292
Okay, das muss ich mal angucken. Das klingt sehr gut.

02:03:17.492 --> 02:03:18.612
Ja, ich muss das irgendwie kombinieren.

02:03:18.892 --> 02:03:21.052
Es gibt übrigens auch ein Terminal, jedenfalls auf dem Mac.

02:03:21.992 --> 02:03:23.472
Es nennt sich Kitty.

02:03:24.272 --> 02:03:25.232
Das ist auch in Python geschrieben.

02:03:25.232 --> 02:03:28.092
Genau, das funktioniert super gut mit Xonj zusammen.

02:03:28.432 --> 02:03:29.352
Okay, alles klar.

02:03:29.932 --> 02:03:31.252
Ja, gibt's auch dann den

02:03:31.252 --> 02:03:34.172
Starship-Prompt

02:03:34.172 --> 02:03:34.532
für drin.

02:03:35.492 --> 02:03:36.592
Nett, das klingt doch gut.

02:03:36.592 --> 02:03:38.692
Ja, super, super.

02:03:39.952 --> 02:03:40.352
Cool.

02:03:41.292 --> 02:03:42.852
Macht es nur nicht als Root-Prompt,

02:03:42.932 --> 02:03:43.892
wenn die dann kaputt geht.

02:03:44.572 --> 02:03:45.872
Da kommt man nicht mehr weiter.

02:03:47.752 --> 02:03:48.572
Ja gut, ne?

02:03:48.792 --> 02:03:49.832
Ändert man die Shadowfile.

02:03:50.772 --> 02:03:50.872
Ja.

02:03:53.152 --> 02:03:53.972
Genau, was hatte ich?

02:03:53.972 --> 02:03:56.192
Ja, genau. Mein Pick wäre PyTestMock.

02:03:56.452 --> 02:03:58.212
Das habe ich letztens in den WeakNotes von Simon

02:03:58.212 --> 02:03:59.552
Willison zufällig... Nee,

02:04:00.052 --> 02:04:01.272
er hat das irgendwie auf Twitter gepostet.

02:04:01.472 --> 02:04:03.692
Simon Willison hat einen ganz tollen WeakNote, haben wir nochmal verlegt.

02:04:03.812 --> 02:04:04.912
Ja, er hat einen ganz tollen WeakNote, das muss man auch mal verlinken.

02:04:04.912 --> 02:04:07.672
Ja, also wenn ihr denkt,

02:04:07.852 --> 02:04:08.052
oh,

02:04:09.512 --> 02:04:11.972
da sind ja immer interessante Links in den WeakNotes von Johannes

02:04:11.972 --> 02:04:14.032
und von mir, dann lest

02:04:14.032 --> 02:04:15.872
doch lieber die, die sind noch viel interessanter.

02:04:16.512 --> 02:04:18.452
Da lese ich mal die WeakNotes.

02:04:19.532 --> 02:04:19.672
Ja,

02:04:20.432 --> 02:04:21.832
und der hatte auf Twitter, nee, das war auf Twitter,

02:04:21.832 --> 02:04:23.672
hat er irgendwie geschrieben, so, ah ja, er hat irgendwie

02:04:23.672 --> 02:04:25.512
einen Weg gefunden, irgendwas mit S3 zu machen

02:04:25.512 --> 02:04:27.292
und dann habe ich da reingeguckt in den Kunden und dachte so, hä?

02:04:27.812 --> 02:04:40.525
Also ich habe ja in Tests oft das Problem also ich benutze Paltests zum Testen meistens und so manchmal also ich versuche ja immer ohne Mocks auszukommen oder wenn dann selber da aber manchmal geht es halt nicht sondern

02:04:40.525 --> 02:04:42.765
muss man halt irgendwie viel mocken und dann hat man das Problem,

02:04:42.865 --> 02:04:44.865
also entweder stapelt sich dann so eine Kaskade

02:04:44.865 --> 02:04:46.685
von Patch-Dekoratoren über

02:04:46.685 --> 02:04:48.545
so einen Test oder man hat halt

02:04:48.545 --> 02:04:50.485
irgendwie so eine tief geschachtelte Geschichte mit

02:04:50.485 --> 02:04:52.585
so WIS-Kontextmanagern,

02:04:53.305 --> 02:04:54.785
also geht jetzt mit einer neuen Python-Version

02:04:54.785 --> 02:04:56.645
kann man da auch dann klammern und so, aber

02:04:56.645 --> 02:04:59.625
das sieht dann manchmal schon sehr wild aus

02:04:59.625 --> 02:05:01.825
und ich denke mir so, ach so ein bisschen hässlich ist das ja schon

02:05:01.825 --> 02:05:03.785
und eigentlich, ja also

02:05:03.785 --> 02:05:05.245
gibt es da nicht irgendwie einen eleganterer Weg

02:05:05.245 --> 02:05:07.645
und PyTestMock ist ein eleganterer Weg

02:05:07.645 --> 02:05:09.625
weil da sagt man einfach, schreibt man

02:05:09.625 --> 02:05:11.205
halt in die

02:05:11.205 --> 02:05:13.745
Signatur Mocker rein und dann kriegt man halt

02:05:13.745 --> 02:05:15.365
irgendwie quasi

02:05:15.365 --> 02:05:17.925
Ding übergeben, dem kann man

02:05:17.925 --> 02:05:19.385
dann sagen, Punkt Patch

02:05:19.385 --> 02:05:21.285
und dann braucht man aber keinen Context Manager

02:05:21.285 --> 02:05:23.885
und man braucht auch nicht einen Dekorator

02:05:23.885 --> 02:05:25.765
sondern das passiert dann im Kontext

02:05:25.765 --> 02:05:27.925
von dem Test. Und wenn der Test vorbei ist,

02:05:28.025 --> 02:05:30.105
dann wird es halt wieder geunpatched

02:05:30.105 --> 02:05:32.005
sozusagen automatisch, weil es ist ja

02:05:32.005 --> 02:05:33.565
irgendwie über die PyTest-Magie da drin.

02:05:34.125 --> 02:05:35.765
Das heißt, man kann das halt alles schön linear

02:05:35.765 --> 02:05:38.065
verwenden und ist halt

02:05:38.065 --> 02:05:38.945
diese Hässlichkeiten los.

02:05:40.085 --> 02:05:41.905
Also ich mache dann auch noch einen zweiten Blick, weil

02:05:41.905 --> 02:05:43.705
wenn Tests nicht laufen, dann macht man einfach

02:05:43.705 --> 02:05:45.825
Pip in zwei Fuckit-Dekorator drüber.

02:05:45.985 --> 02:05:48.065
Dann macht der zwei Exemplars und läuft alles

02:05:48.065 --> 02:05:49.645
wunderschön. Sehr schön.

02:05:50.425 --> 02:05:51.385
Also das als Abschluss.

02:05:52.165 --> 02:05:53.725
Ja, also vielen Dank, dass ihr da wart. Danke, Max.

02:05:53.725 --> 02:05:54.845
das war eine schöne Folge

02:05:54.845 --> 02:05:56.745
bleibt uns gewogen, schaltet uns wieder ein

02:05:56.745 --> 02:05:58.465
und schreibt uns E-Mails an

02:05:58.465 --> 02:06:00.045
helloatpythonpodcast.de

02:06:00.045 --> 02:06:02.245
Danke Jochen, danke Max

02:06:02.245 --> 02:06:03.085
auf Wiederhören
