Training as Code
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 49 | |
Author | ||
License | CC Attribution 4.0 International: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/51761 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Point cloudCodeLINUXInformationAsset <Informatik>DesktopBusiness IntelligenceInternetInternetdienstIBMComputer hardwareMainframe computerPenetrationstestSoftwareSAP <Marke>SAP Solution ManagerServer (computing)Data recoveryBackupEnterprise architectureService (economics)Computing platformComputing platformMicrosoftLINUXOnline chatLogicTelecommunicationCiscoLokation <Statistik>CodeMainframe computerRandStaff (military)TuningComputer animation
04:28
Computing platformMicrosoftCiscoZoom lensVersion <Informatik>WINDOWS <Programm>Online chatAndroid (robot)HTMLApache <Programm>LINUXGraphical user interfaceWebcamDesktopWeb browserServer (computing)Firefox <Programm>Zoom lensComputing platformTable (information)TouchscreenWebcamDesktopCalculationConstraint (mathematics)Client (computing)CiscoWINDOWS <Programm>LoginOpen sourceMicrosoftAndroid (robot)Point cloudMobile appLINUXVersion <Informatik>Server (computing)Firefox <Programm>Graphical user interfaceComputer fileMAX <Programm>Noten <Programm>VolumenvisualisierungMetropolitan area networkWeb browserComputer animation
09:55
Server (computing)PowerPointPresentations <Programm>Data conversionRevision controlBinary fileXMLPoint cloudSummierbarkeitZoom lensMacOSSystems <München>Office <Programm>SoftwarePowerPointBinary filePDF <Dateiformat>TEXFRAMEWORK <Programm>EXCELRandMicrosoftTuningProduct (category theory)Overhead (computing)MAX <Programm>Server (computing)Noten <Programm>TiefeStandard deviationMEGAFile formatRippingClient (computing)Source codeComputer animationHighlight <Programm>Physical quantityPlatonic solidComputer programmingContent (media)Presentation of a groupState of matterVideo projectorRepresentation (politics)TransmitterCategory of beingRun-time systemData storage deviceComplete metric spaceGit <Software>Point cloudFile viewerLeiste <Technik>LaptopXMLCodeSlide ruleScalar potentialComputer fileMeeting/InterviewComputer animation
19:08
HTMLOpen sourceServer (computing)EditorPlug-in (computing)Hacker (term)Presentation of a groupComputer animationSummationEditorFRAMEWORK <Programm>Open sourceDataflowHTMLContent (media)Computer animation
21:25
CodeTypWalkthroughSlide ruleHTMLPDF <Dateiformat>LINUXVAX/VMSOperating systemHigh availabilityPoint cloudComputing platformGraphics tabletHTMLPlane (geometry)Open setPlug-in (computing)Statement (computer science)Programmer (hardware)LINUXOperating systemMobile appPDF <Dateiformat>DownloadSoftware bugRhombusScalar potentialRun-time systemSlide ruleComputer programmingSource codeLaptopOpen sourceSoftware repositoryRouter (computing)CodeVirtual realityContent (media)Computer fileListe <Informatik>Content (media)Debian GNU/LINUXOnline chatContinuous trackDesire path3 (number)Server (computing)VAX/VMSCentOSWritingFile formatProzentzahlFRAMEWORK <Programm>Professional network serviceJames <Programm>JavaScriptHigh availabilityWORKS SuiteComputing platformVirtuelles privates NetzwerkRoute of administrationEXTESTSoftware developerConfiguration spaceSpeciesJSONXMLUMLComputer animation
31:19
Computer fileProviderVMware WorkstationHypercubeConfiguration spaceCentOSPoint cloudStack (abstract data type)Windows AzurePOWER <Computerarchitektur>CiscoPostgreSQLDatabaseSQLComputerOperating systemSoftwareProgramming languageSSHCountingCodePoint cloudVAX/VMSWindows AzurePlug-in (computing)Operating systemRun-time systemCodeUniformer RaumSoftware testingApple <Marke>FRAMEWORK <Programm>ProviderCentOSCountingMachine codeDesktopConfiguration spaceProduct (category theory)Field extensionUnit testingComputing platformLaptopContent (media)Computer fileSound effectDatabaseVariable (mathematics)Mainframe computerProgramming languageProfessional network serviceElectronic visual displayBlock (periodic table)PRINCE2LORE <Programmiersprache>Virtual memorySystems <München>Hyper-VLEAPScripting languageFunction (mathematics)Time zoneKanteComputer animation
40:44
CountingCodeRollbewegungYAML <Framework, Informatik>Hash functionComputing platformQUICK <Programm>Greatest elementVariable (mathematics)Scripting languageProviderPoint cloudInternetCodeHTMLC-CompilerVAX/VMSProgrammierstilJavaScriptlint <Programm>PDF <Dateiformat>Git <Software>WritingStatement (computer science)Variable (mathematics)RollbewegungContent (media)Computer fileVersion <Informatik>Software repositoryWindows AzureHash functionPlug-in (computing)Run-time systemScope <Programmierung>Computing platformEditorJacobi methodWeb serviceGoogleFile formatLink (knot theory)PowerPointGrand Unified TheoryPresentation of a groupLogic gatePlane (geometry)Computer animation
50:09
CodeCAD-ProgrammMicrosoftSoftwareWINDOWS <Programm>Link (knot theory)SupremumPDF <Dateiformat>Graphical user interfaceVAX/VMSModemSocial classLaptopTwitterSlide rulePowerPointPlug-in (computing)Presentation of a groupLengthSound effectOnline chatPoreLINUXALT <Programm>SchaleLEAPGRADEMeeting/Interview
59:34
Point cloudMeeting/InterviewJSONXMLUML
Transcript: German(auto-generated)
00:08
Hallo und herzlich willkommen zu meinem Vortrag Training as Code, Remote Workshops und Schulungen. Mein Name ist Christian Stankiewicz und ich bin Senior System Engineer und Technischer Leiter für den Bereich Linux bei der SVA.
00:21
Dort beschäftige ich mich mit Linux, DevOps, Infrastructure as Code und bin darüber hinaus auch als Trainer bei uns tätig. Kurz eins versetzt zur SVA. Wir sind ein Systemintegrator, ein Systemhaus in Deutschland und wir haben mittlerweile 21 Lokationen mit über 1500 Mitarbeitern und bewegen uns in allen großen Branchen, beispielsweise Automotive, Telekommunikation und so weiter.
00:45
Wir kommen ursprünglich eigentlich aus Mainframe und Data Center Infrastructure Bereich, also Themen wie Storage und Mainframe sind unser täglich Brot, kann man sagen. Aber wir haben darüber hinaus auch andere Geschäftsbereiche für uns entdeckt, also End-User Computing, SAP und eben auch moderne Trendsthemen wie IT Security und Agile IT und Software Development.
01:08
Aber das noch ganz kurz am Rande, es sollte keine Selbstveranstaltung werden, denn wir wollen uns heute mit einem anderen Thema auseinandersetzen. Deswegen werfen wir mal einen Blick auf die Agenda. Wir schauen uns erstmal an, warum wir das ganze Thema Trading as Code
01:20
überhaupt betrachtet haben und werfen dann einen kurzen Blick auf die zahlreichen Meeting Plattformen, die es so am Markt gibt und was so die Lessons Learned für Linux Benutzer daraus sind. Und dann schauen wir uns an, welche Werkzeuge es überhaupt für Schulungsunterlagen gibt, welche da für welchen Use-Case Sinn machen. Werfen dann einen Blick auf eine automatisierte Infrastruktur und wie das eben in so ein Schulungskonzept mit reinpasst.
01:44
Und abschließend schauen wir uns das Thema Testing für Trainer und Teilnehmer an, bevor wir das Ganze gesamtheitlich als Pipeline betrachten. Gut, warum machen wir das überhaupt? Also prinzipiell ist es ja so, dass IT sehr kurzlebig ist.
02:01
Es muss immer mehr Infrastruktur in kürzerer Zeit bereitgestellt werden. Und das Ganze betrifft natürlich auch das Fachwissen. Also man sagt so, prinzipiell ist die Halbwertszeit vom Fachwissen liegt bei circa fünf Jahren. Und bei IT-Fachwissen kommt man so auf knapp anderthalb Jahre. Ausgenommen Trendsthemen, die einfach gesetzt sind.
02:22
Das heißt, neues Wissen sollte schnellstmöglich adaptiert werden. Denn so als Unternehmen hat man ja auch das Problem, Mitarbeiter sollen stets über aktuelles Wissen verfügen, aber sie sollen dennoch in irgendeiner Art und Weise profitabel bleiben. Also es ist utopisch, wenn man sagt, man hat einen halben Tag seines Arbeitstages dafür, sich mit neuen Dingen zu beschäftigen.
02:42
Und darüber hinaus ist es noch so, dass die Auswahl an Werkzeugen, die ist einfach groß, fast schon zu groß. Kommen wir kurz zum Thema Meetingplattform. Prinzipiell spätestens seit Corona ist es essentiell, eine Meetingplattform zu benutzen, einfach um Termine wahrzunehmen.
03:01
Denn Vorarztermine, Präsenztermine sind einfach nicht machbar. Und das ist aber auch ein guter Anlass, um so ein Schulungskonzept mal grundlegend zu überdenken. Denn beispielsweise ist es ja so, wenn man keine Präsenztermine hat, entfallen einfach Reisekosten und somit auch ein Zeitersparnis. Denn ich muss mich da nicht vier Stunden in den Zug setzen und muss keine Torentickets kaufen, das entfällt.
03:23
Und auch so das Thema logistische Planung ist bedeutend leichter. Also ich muss keine Räume reservieren, ich muss kein Billardessen irgendwo organisieren. Das macht dann jeder für sich so ein bisschen. Und auch die Schulungsmethoden kann man in der Hinsicht oder muss man in der Hinsicht auch anpassen. Also das Tooling, das man verwendet, um Schulungen und Workshops zu halten.
03:43
Und auch so das Thema Testumgebung. Und ja, die Meetingplattform wird einfach benötigt, um Termine mit mehreren Teilnehmern zu planen und auch durchzuführen. Und da ist der Markt eben relativ groß und das ist auch relativ schwer, die zu differenzieren. Denn jedes Tool hat inzwischen eigensteckungsgleiche Features.
04:01
Also jedes Tool hat in irgendeiner Art und Weise Chat und Webcam-Funktionen. Man kann seinen Bildschirm teilen. Das ist eigentlich überall gleich mittlerweile. Und ich denke, die meisten von euch kennen das auch. Man hat so dieses typische Meeting-Bingo. Also jeder Termin ist auf irgendeiner neuen Plattform. Und am Ende des Tages hat man dann drei, vier verschiedene Tools, die man benutzt.
04:23
Und jedes Tool macht eigentlich so ein bisschen auch das Gleiche. Das heißt, zu den üblichen Verdächtigen am Markt zählt beispielsweise Microsoft Teams, Cisco WebEx, GoTo-Meeting, Big Blue Button, auch sowas wie Zoom oder eben Jitsi Meet. Um das mal grafisch darzustellen, das ist so die Situation, wenn es darum geht,
04:43
es soll ein Meeting abgehalten werden und es stellt sich die Frage nach der Plattform. Das ist fast schon eine religiöse Frage, welches Tool da benutzt werden soll. Gut, das Ganze soll jetzt natürlich keine Werbeveranstaltung für die einzelnen Tools werden. Ich habe da persönlich auch keine Aktien drin in irgendwelchen Tools.
05:01
Ich bin da relativ emotionslos. Aber ich wollte trotzdem grob mal vergleichen, was die Tools einzeln ausmacht. Deswegen haben wir hier eine kleine Tabelle, wo eben die genannten Tools grob verglichen werden. In puncto Lizenz, ob man es on-premise betreiben kann, wie es kleintechnisch aussieht und ob es entsprechende Mobile Apps für iOS und Android gibt. Und was da so ein bisschen auffällt, ist Microsoft Teams ist on-premise nicht zu betreiben.
05:24
Das heißt, in dem Moment, wo ich Microsoft Teams benutze, habe ich im Prinzip ein Login auf der Cloud. Das kann ich ohne die Microsoft Cloud nicht betreiben. Das Ganze ist natürlich proprietär, was aber auch bei Cisco WebEx, GoTo-Meeting und Zoom der Fall ist.
05:41
Und die meisten Tools haben mittlerweile auch einen HTML-Client, beispielsweise WebEx oder Big Blue Button oder Jitsi. Für Teams gibt es sowas auch, aber da würde ich dringend empfehlen, den nativen Client zu benutzen. Der WebClient ist für mich persönlich nicht zu gebrauchen. Für Teams gibt es auch mittlerweile einen Alpha-Liebungsclient, aber der lässt sich relativ gut benutzen.
06:05
Also von dem Alpha an der Stelle nicht abschrecken lassen. Insgesamt geht es so etwas, on-premise zu betreiben. Nicht die, die da unbedingt Cloud-Visorzen benutzen möchten. Dann werden die anderen Tools im Prinzip alternativen. Und wenn man darüber hinaus noch einen Wert auf Open-Source-Software legt, dann sollte man sich
06:21
Big Blue Button und Jitsi angucken, die eben entsprechend unter der GPL oder der Apache-Lizenz lizenziert sind. Und ansonsten, die Features sind, wie gerade schon erwähnt, deckungsgleich. Jedes dieser Tools kann einen Desktop oder einzelne Fenster scheren. Man hat einen Präsentationsmodus, man kann irgendwo Dateien hochladen. Man hat einen Chat, man kann auch die Sessions aufnehmen, sodass sie dann später mit den Teilnehmern geteilt werden können.
06:46
Das ist relativ deckungsgleich. Und wenn man allerdings noch Linux benutzt, dann gibt es noch ein paar Einschränkungen. Die habe ich hier mal zusammengefasst. Meine persönlichen Lessons learned für eure Modschuldung unter Linux. Teams ist solange funktional, solange die Microsoft Cloud keine Probleme hat oder die Internetverbindung, die man benutzt.
07:05
Das bedeutet, sobald eins der beiden Probleme hat, dann hat man natürlich Probleme. Bei Teams geht das sogar so weit, dass es den kompletten Desktop abschießt. Ich konnte es noch nicht ganz nachvollziehen, warum konkret das eintritt.
07:21
Aber das Schlimmste, was mir persönlich passieren konnte die letzten Wochen und Monate, ist, dass die Internetverbindung kurz abgerissen ist. Und dann wusste ich, ich musste meinen Rechner neu starten. Davon abgesehen funktioniert der Alpha-Client allerdings hervorragend. Es gibt ein paar Funktionen, die fehlen. Beispielsweise gibt es jetzt ja Filter, die den Hintergrund unscharf rendern, während man präsentiert.
07:40
Diese Funktion, die gibt es eben nur unter Windows. Ebenso wie die Möglichkeit, dass man den Hintergrund nicht nur unscharf stellt, sondern auch sein Lieblingshintergrundbild reinrendert. Das gibt es leider auch nur unter Windows. Ansonsten, wenn es um Cisco WebEx geht, das kann man prinzipiell via Browser benutzen. Aber da ist die User Experience ein bisschen eingeschränkt.
08:02
Das bedeutet, man kann zum Beispiel Webcams nicht fixieren. Wenn man jetzt in einem großen Call ist mit 20, 30 Leuten, dann wechselt ja eigentlich immer so die Webcam zu dem, der gerade spricht. Und wenn man jetzt aber zwei, drei Leute festpinnen will, das geht nativ unter Windows, das funktioniert über den Webclient leider nicht. Mal gucken, ob hier Cisco nochmal nachliefert.
08:21
Ansonsten, GoToMeeting funktioniert prinzipiell lediglich unter Chrome bzw. die freiere und datenschutzfreundlichere Variante Chromium. Aber da hat man oftmals Verbindungsabbrüche nach einer Stunde. Ich konnte es auch noch nicht so genau nachvollziehen, woran das liegt. Also ich habe das auch mit mehreren verschiedenen Teilnehmern mal ausprobiert. Und es war immer relativ gut nachzuvollziehen, dass es nach exakt einer Stunde ist.
08:44
Aber da hilft dann eben einmal die Seite neu laden und sich neu einloggen. Und dann kann man auch wieder weiter an die Meeting teilnehmen. Ist vielleicht noch ein bisschen ungünstig, wenn man gerade was präsentiert. Ansonsten, und das ist eigentlich so die erste Wahl, wenn man Open Source oder Force nutzt, BigBlueButton und Jitsi.
09:01
Das funktioniert normalerweise hervorragend, solange der Server angemessen dimensioniert ist. Also da gibt es noch einen speziellen Jitsi DevOps Guide, den ich hier auch mal verlinkt habe. Da steht drin, wie man das am besten skaliert oder wie man es am besten aufbaut, damit es skaliert. Ein Paradebeispiel ist, die VM, die man dafür betreibt, hat einen zu langsamen Uplink.
09:21
Oder man hat halt eben im Backend zu wenig Knoten reserviert. Dann wird es eben relativ langsam. Und anfänglich war es auch problematisch, es war ja auch groß in den Medien, dass Firefox je nach Jitsi Version ein bisschen problematisch ist. Da war es dann so, dass dann die Mikrofone nicht richtig funktioniert haben und auch andere Teilnehmer dadurch beeinträchtigt wurden.
09:42
Das ist mittlerweile eigentlich behoben. Aber je nachdem, welchen Anbieter man da nutzt oder welche Jitsi Version der Anbieter nutzt, kann es da nach wie vor noch problematisch sein. Und da hilft es eben, Chromium zu benutzen. Ja, und Zoom? Naja, ich spreche nicht groß drüber. Also ich habe bisher Zoom immer gemieden.
10:03
Es gab da ja einmal einen großen Aufschrei bezüglich des Boot Access-Themas unter macOS. Kann ich jetzt persönlich wegen zu sagen, habe ich nicht benutzt. Von daher, gut, kommen wir mal zum Thema Tooling.
10:20
Und starten wir da am besten auch mal mit den Anforderungen, die wir uns gesetzt haben. Prinzipiell war uns sehr wichtig, dass wir eine Lösung haben, die einfach zu benutzen ist, um die Hürde für neue Trainer relativ gering zu halten. Also wir haben Kollegen, die können gut programmieren, wir haben aber auch Leute, die sind der Programmierung nicht so nah. Also zum Beispiel Leute, die sich mit Prozessmanagement beschäftigen.
10:43
Die sind sehr gut in ihrem Fachbereich, aber die möchten nicht unbedingt irgendeinen Code schreiben müssen, um eine Präsentation zu erstellen. Also es muss ja auch ein Mehrwert für die Trainer haben, warum sollte ich keinen PowerPoint benutzen und diese Lösung. Deswegen soll das möglichst einfach zu benutzen sein. Und daraus resultiert auch eine weitere Anforderung.
11:02
Man sollte keine besonderen Tools zur Verwendung oder Erstellung benötigen, also keine spezielle aufgeblasene Software, wo irgendwas kompiliert werden müsste oder sowas. Dann wollten wir natürlich auch Themes für Corporate Identity, um eben unseren Fund und Firmenloko einbauen zu können. Und das Ganze sollte auch nach Möglichkeit, also der Content, der generiert wird, im Klartext definiert sein und keine proprietären Formate benutzen.
11:26
Denn wenn man da noch ein Versionskontrollsystem wie beispielsweise GitLab benutzt, dann es geht nicht unbedingt dafür, predestiniert binäre Dateien in großem Format einzustellen.
11:40
Beziehungsweise man kann das zwar tun, aber wenn man sich dann Comets anschaut, dann sieht man eben nicht die Differenz, sondern irgendeinen Blob. Und das kann ja auch nicht die Lösung sein. Dann war uns auch wichtig, dass das Ganze eben auch offline ohne Server benutzbar sein soll. Es soll also möglichst einfach mit einem Doppelklick auf verschiedenen Geräten benutzt werden können, ohne dass man irgendeinen Server oder eine VM starten soll.
12:02
Und wichtig war natürlich auch eine Präsentationsansicht mit einem Timer, sodass man immer so ein bisschen die Zeit auch im Blick behalten kann. Und da wir auch sehr viele technische Schulungen und Workshops generieren, ist es natürlich auch wichtig, dass man Quellcode grafisch ansprechend darstellen kann, also eine Art Syntax-Highlighting für verschiedene Sprachen, Python, Ruby, whatever.
12:23
Das war wichtig ebenso wie ein PDF-Export, dass man dann eben einfach im Anschluss mit den Teilnehmern oder den Kunden sharen kann. Das waren so die Anforderungen. Und die erste Möglichkeit, die wir betrachtet haben und auch eine Zeit lang benutzt haben, war als klassische Präsentationsprogramme zu benutzen.
12:41
Denn da gibt es eben einfach schon vordefinierte Vorlagen. Man kennt das ja auch aus anderen Unternehmen, denke ich mal, dass es einfach eine Corporate Word Vorlage gibt oder eine für PowerPoint oder andere Tools. Und da war am Anfang der Plan eben einfach die zu benutzen und PowerPoint oder LibreOffice Impress zu benutzen. Oder eben, das ja auch eine gute Alternative ist, FreeOffice und SoftMaker Office.
13:04
Denn das ist ja häufig so, dass eben die Vorlagen, die man für die Microsoft-Produkte bekommt, dass die unter LibreOffice nicht so funktionieren. Oder sie funktionieren zwar, aber wenn man dann was reinschreibt und wieder mit einem anderen Kollegen teilt, der eben die Microsoft Tools benutzt, dass man sich dann gegenseitig die Dokumente so ein bisschen zerschießt.
13:22
Da ist meine persönliche Erfahrung, dass das mit FreeOffice beziehungsweise dem konventionellen SoftMaker Office nicht so auftritt. Also da ist so subjektiv gefühlt die Kompatibilität mit den Microsoft-Standards, sofern man das Standards nennen kann, ein bisschen höher. Das hatten wir uns eben angeschaut. Das hatte den Vorteil, dass man das eben einfach umsetzen kann.
13:41
Man kennt ja die üblichen Office-Programme. Man benutzt sie ja auch auf regelmäßiger Basis. Also der Workflow ist bekannt. Man hat da natürlich auch eine Präsentatoransicht. Aber da ist natürlich das Problem, dass so eine Änderung im Git eben intransparent ist, weil eben das im Prinzip doch Binärdateien sind. Das ist eben nicht direkt mit einem Notpad ersichtlich, was sich da jetzt geändert hat aufgrund des Format-Overheads.
14:07
Und das ich persönlich gemerkt habe, also meine ersten beiden Schulungen mit 400, 500 Folien habe ich tatsächlich mit Microsoft PowerPoint gesetzt. Und PowerPoint hat echt massive Probleme, wenn man mehr als 200 Folien hat und da auch hochauflösende Fotos oder Screenshots drin hat.
14:22
Also ich habe hier einen relativ starken Laptop mit 16 Gigramm und mit 8 CPUs, aber trotzdem lief der Lüfter auf maximaler Leiste. Und es hat zwei Minuten gedauert, bis die Präsentation auch gestartet wurde. Kann natürlich auch sein, dass das ein Bug in der Software ist, aber da habe ich schon gemerkt, das ist jetzt nicht unbedingt das beste Tooling dafür.
14:44
Gehört also eher in die Kategorie, das kannst du schon so machen, aber dann ist es halt kacke. Und kleiner Fun Fact an der Stelle, diese ganzen Microsoft Office Formate, also PPTX für PowerPoint, XLSX für Excel und so weiter, das sind eigentlich nur ZIPs mit XML-Dateien drin.
15:03
Also rein von der Definition her müsste es keine Binärdatei sein, aber man hat sich eben da für ZIP noch entschieden. Aber davon abgesehen weiß ich jetzt auch nicht, ob ich groß mit XML arbeiten wollen würde, aber das nur am Rande. Die nächste Option wäre es gewesen, sich das Thema Tech Start System anzugucken.
15:22
Also es gibt da ja mit TeX und LaTeX sehr mächtige und vielseitige Frameworks. Und viele haben das ja auch schon vielleicht im Studium benutzt, um ihre Arbeit dazu zu setzen. Und da gibt es auch sehr viele Präsentationsvorlagen, die man sich online anschauen kann. Die sehen auch alle echt gut aus, muss man sagen. Also es ist funktional und es sieht auch schick aus.
15:42
Der Nachteil daran ist allerdings auch, man benötigt dafür eine vollständige TeX Umgebung. Und da muss man schon mal vier, fünf Gigabyte Software installieren. Speicherplatz ist zwar jetzt kein großes Thema heutzutage, aber prinzipiell ist das auch wieder die Anforderung, die wir ja hatten, dass man keine spezielle Software dafür benötigt.
16:03
Und davon abgesehen, wenn man dann so eine Präsentation erstellt mit TeX oder LaTeX, dann ist es prinzipiell so, man hat ein PDF, aber man braucht im Prinzip einen speziellen Viewer für diese Präsentation. Das ist in Tatoransicht, weil der normale PDF-Reader zeigt das PDF an und man hat Sybolleisten und kann da Text reinschreiben, markieren, was auch immer.
16:22
Aber das ist jetzt nicht unbedingt für eine Präsentation oder für einen Workshop geeignet. Und darüber hinaus muss man auch ganz ehrlich sagen, die Lernkurve, die ist relativ steil. Das heißt, für einen Einsteiger ist das nicht unbedingt geeignet. Habe ich auch mal zwei Tools verlinkt, PDF PC und Beamer Presenter sind zwei solcher Viewer, die man dafür braucht.
16:44
Und ja, also das Thema TeX und LaTeX zählt eher so in die Kategorie, wie mache ich mein Leben spannender. Das ist meine persönliche Meinung. Um hier mal so ein Beispiel zu zeigen, wie so eine Präsentation in TeX aussieht, das wäre dann eben folgender Code, der zu schreiben ist.
17:00
Wenn man natürlich in der Programmierung fundiert unterwegs ist, ist das jetzt kein Problem. Aber wenn man sich jetzt vorstellt, man ist Projektleiter und man beschäftigt sich mit irgendwelchen Projektthemen und ist da Experte in seinem Thema und programmiert nicht so, dann ist das halt schon eine Hürde. Also gerade hier mit den ganzen Backstages und den geschweiften Klammern, da ist schon ein gewisses Potential für Fehler, wenn man da einfach was vergisst.
17:24
Und Troubleshooting ist da auch nicht unbedingt immer so, wenn man sich damit nicht auskennt, trivial. Hier haben wir einen Screenshot von so einem Presenter, wie der aussehen würde. Links eben das aktuelle Slide, rechts hat man das kommende Slide, hat da auch Notizen, die man noch einblenden kann und hat unten eben die Möglichkeiten, die Uhrzeit zu sehen, Anzahl der Slides.
17:45
Also so wie man es eben von beispielsweise Leave Your Office Impress und PowerPoint kennt. Ein weiteres Tool, was in den letzten Jahren durchaus gefragt war oder ist, ist das Tool Prezi oder Prezi.
18:01
Und das ist ein plattformunabhängiges Präsentationsprogramm, das eben HTML5 Technik nutzt. Das muss man sich so vorstellen, dass die Inhalte im Prinzip auf so einem großen virtuellen Blatt Papier sind und mit Effekten wird dann eben rein- und rausgezoomt und Animationen werden generiert. Das sieht also ganz schick aus, aber das Problem dabei ist, dass man eben von der Cloud das anbietet, das abhängig ist.
18:23
Das bedeutet, wenn das eben gerade nicht zur Verfügung steht, dann hat man wieder ein Problem. Und man kann das prinzipiell auch offline abspielen, also da gibt es einen speziellen Client, den man dann eben herunterlädt und dann kann man das auch offline abspielen, muss man eben dran denken. Was aber auch so ein bisschen problematisch ist, ist die Tatsache, dass es eben ein
18:43
proprietäres Dateiformat ist und das jetzt in andere, gängigere Formate zu konvertieren, erscheint relativ schwierig. Und prinzipiell die ganzen Animationen sind meiner Meinung nach nur bedingt für Schulungen nutzbar. Also es ist ganz schick, wenn man mal kurz irgendwie ein Thema präsentieren will, aber wenn man jetzt
19:01
drei Tage lang sich auf ein Fachthema spezifizieren will, dann glaube ich, ist das vielleicht nicht die beste Wahl. Um das aber mal zu zeigen, wie sowas aussieht, ist hier so eine Beispielpräsentation. Da sieht man halt eben diese Zoom-out, Zoom-ins, die dann eben zu irgendwelchen Grafiken passender Facts eingeblendet werden.
19:22
Also es sieht schon ganz schick aus, aber für eine Schulung vielleicht nicht unbedingt die beste Wahl an der Stelle. Ansonsten gibt es mega viele Web-Frameworks, also die Anzahl der gängigen Frameworks, die steigt quasi täglich. Was aber prinzipiell relativ bekannt und gefragt ist, ist einmal Reveal.js bzw. der Ableger Hacker Slides.
19:44
Dann gibt es noch Dinge wie Flowtime, Deck.js, DZ Slides. Und worauf wir aufgestoßen sind, ist das Tool Puppet Labs Showoff und Remark. Aber ich bin mir sicher, wenn wir uns in einem halben Jahr noch mal über das Thema unterhalten würden, würde es da wieder mindestens fünf neue Frameworks geben.
20:03
Beginnen wir mal mit Reveal.js. Also Reveal.js ist ein open source HTML-Framework für Präsentationen. Und das hat eben ein ansprechendes Design, hat auch nette Animationen, hat eben diese Präsentatoransicht, von der ich gesprochen habe. Und da gibt es auch zahlreiche Themes und Plugins, um den Funktionsumfang eben einfach anzupassen.
20:22
Und der Content wird aber prinzipiell in HTML geschrieben. Es gibt zwar auch Markdown-Supports, aber das funktioniert nicht im Offline-Modus. Also um diesen Markdown-Support zu benutzen, braucht man halt eine VM oder einen Container mit NPM drauf. Und das ist halt auch wieder problematisch. Für einen Techniker ist es sicherlich kein Problem.
20:42
Aber wie gesagt, für jemanden, der einfach aus einem anderen Kontext kommt und dem Thema nicht so nahe ist, ist es wieder eine Hürde. Und auch die Tatsache, dass man eben HTML-Code schreiben muss, das ist auch wieder ein Thema, wo Vorkenntnisse gefordert sind. Und das ist deswegen auch nicht für jedermann unbedingt geeignet.
21:02
Dann gibt es noch den Ableger-Hacker-Slides. Das ist eigentlich ganz cool, weil da ist noch ein Editor mit drin. Dann hat man links quasi den Editor, schreibt seinen Content und sieht rechts direkt, wie es aussieht. Aber das scheint technisch veraltet, also das dazugehörige GitHub-Repository wurde seit mehreren Jahren nicht mehr angefasst. Deswegen, würde ich sagen, ist das verwaist.
21:23
Um das aber trotzdem mal darzustellen, wie das aussieht. Hier ist ein Beispiel von so einer RevealJS-Präsentation. Man hat eben verschiedene Slides, kann nach links und nach rechts scrollen. Kann aber auch nach unten bzw. nach oben, sieht man hier, als Vertical-Slide in verschiedene Ebenen noch mit rein.
21:41
Und ja, es sieht halt ganz schick aus. Es funktioniert auch auf dem Handy und auf dem Tablet. Das sind sie auch ganz schick. Aber das Thema HTML war für uns an der Stelle eher suboptimal für das, was wir damit vorhatten. Ja, und PuppetLabs Showoff ist ein bisschen mehr als ein Präsentationstool. Es ist im Prinzip ein vollumfängliches Trainingstool.
22:03
Sehen wir auch gleich noch, habe ich noch einen Screenshot mit drin. Was da eben schön ist, dass die Inhalte einer tiefen Markdown definiert werden. Das heißt, es ist auch für Nicht-Programmierer durchaus ein überschaubarer Lernaufwand. Aber was uns halt sehr daran gefallen hat, es hat eben noch zahlreiche Zusatzfunktionen. Man hat eine Agenda für die Schulung, wo die Teilnehmer sich durchklicken können.
22:22
Man kann Dateien ablegen per Track-and-Drop. Wenn man mal eben eine Musterlösung mit den Teilnehmern sharen will beispielsweise. Man kann Notizen und Handouts direkt per Knopf zugänglich machen. Am Ende von einem Kapitel kann man einen Quiz machen, wo jeder eben dann einfach mitmacht und seine Antwort anklickt und sieht, ob er die Lektion verstanden hat.
22:43
Dann gibt es aber auch direkt einen Slidebug Tracker. Das heißt, wenn ich als Teilnehmer auf irgendeiner Folie einen Fehler finde, kann ich den markieren und anklicken. Und dann wird auch direkt ein Ticket quasi für den Trainer erstellt. Was dann natürlich auch gut ist, weil dann kann man die Schulungsunterlagen relativ einfach wieder verbessern.
23:00
Also mir geht es zumindest so, wenn ich Schulungen halte, dann mache ich mir ja parallel immer Notizen, was mir gerade an Fehlern aufgefallen ist oder den Teilnehmern. Aber manchmal geht das so ein bisschen unter, weil man muss ja eigentlich auch gerade eine Schulung halten. Und ansonsten gibt es auch noch einen Teilnehmer-Chat. Das heißt, da ist man jetzt nicht auf den Chats des Meeting-Tools angewiesen. Man kann das nativ auch direkt in der Schulung machen.
23:25
Das große Problem mit Show Off ist, dass die Entwicklung da anscheinend stockt. Also das ist ein Puppet Labs Projekt. Da gibt es auch ein GitHub Repository dazu. Aber da gibt es halt sehr viele unbehandelte Bugs. Und es sieht so aus, als würde es nur einen Maintainer geben.
23:42
Und das ist halt schade, weil das Tool hat wirklich Potential. Aber es bräuchte halt einfach nur ein, zwei Leute, die sich mit dem Thema auseinandersetzen und sich eben den ganzen Bugs annehmen. Dann wäre das bestimmt eine runde Sache. Um das mal grabig zu zeigen, so sieht das Ganze aus. Man hat hier oben so eine Menüleiste, wo eben Downloads zur Verfügung stehen,
24:01
wo man auch hier direkt Bugs melden kann oder sich auch die Slides ausdrucken kann, wenn man möchte. Links sieht man so ein bisschen, wo man sich gerade befindet und welche Kapitel gerade anstehen, welche Lektionen als nächstes kommen. Kann links unten auch Fragen stellen, die dann auch die anderen Teilnehmer sehen. Unten gibt es dann noch mal eine kurze Beschreibung.
24:21
Und man kann hier auch direkt sich einen Handout anzeigen lassen. Also echt eine schicke Sache. Aber leider, wie gesagt, scheint das Ganze so, als würde es nicht mehr aktiv gepflegt werden. Ja, und zuletzt haben wir uns das Tool Remark angeguckt. Das ist halt yet another JavaScript Framework, das eben HTML-Präsentationen anzeigen kann.
24:44
Aber das diesmal auf Markdown-Basis. Das heißt, es ist relativ simpel aufgebaut. Man kann es auch einfach anpassen. Es gibt Plugins dafür. Und man hat hier auch wieder einen Präsentator an sich mit Teiler. Hat die Möglichkeit, Quellcode hervorzuheben, je nach Sprache. Und man kann damit auch ganz einfach PDFs erstellen.
25:02
Und zwar gibt es da einen Tool, Dextape. Das ist so ein NPM-Tool. Und da kann man eben sämtliche HTML-Präsentationen, also auch zum Beispiel Reveal.js und so weiter, kann man an dieses Tool übergeben. Und dann purzelt dann am Ende halt ein PDF raus, das man dann mit den Teilnehmern oder mit dem Kunden sharen kann.
25:22
Und was da eben auch noch ganz gut ist, dass es eben relativ mit Markdown arbeitet. Das heißt, ich muss mich nicht groß einarbeiten, wie ich da Content generiere. Denn Markdown ist ja relativ übersichtlich. Das bekomme ich auch als Nicht-Programmierer hin, wenn ich mir so ein Cheat-Sheet angucke, wo die gängigen Formatträgen drinstehen.
25:40
Dann kommt man da schon ganz gut mit zurecht. Um da mal so ein Beispiel zu bringen, so die erste Folie dieser Präsentation, die wir gerade sehen, die sieht wie folgt aus. Man hat hier einfach mit der einfachen Router eine Überschrift erster Ebene. Zwei Rauten sind dementsprechend eine Überschrift zweiter Ebene. Drei für die dritte und so weiter.
26:01
Und die drei Minus bedeuten immer, dass hier eine neue Folie kommt. Und Bilder kann man eben hier auch mit Ausrufezeichen, Klammer, Image, Beschreibung, Komma, Prozentzahl, also Größe des Bildes und Angabe des Pfads. Also es ist relativ markdown nativ. Ja, und einfache Listen werden eben auch einfach
26:24
mit vorangestellten Minus und Content dann eben aufgelistet. Eins Punkt wäre dann der nummerierte Liste, zwei Punkte, zweiter Eintrag der nummerierten Liste und so weiter. Ja, also wenn man sich da mal so Quellcode anschaut, auch wenn man gar keine Ahnung von Programmierung hat, behaupte ich doch, das ist ein bisschen verständlicher als jetzt beispielsweise HTML-Code
26:41
oder eben so ein LaTeX-Code Schnipsel. Deswegen fiel da die Wahl auf Remark. Kommen wir zum nächsten Thema, automatisierte Infrastruktur. Bei einer Schulung ist es ja so, die besteht in der Regel aus einer Testumgebung. Also zumindest machen wir das häufig so,
27:01
da es ja um technische Themen geht, haben wir gemerkt, die Studie ist jetzt nicht so sinnvoll. Es macht mehr Sinn, wenn die Teilnehmer das, was sie gerade lernen, auch direkt umsetzen können. Deswegen Testumgebung. Die besteht in aller Regel aus verschiedenen VMs, aus IP-Adressen, Netzwerken, einem vorinstallierten Betriebssystem, also Linux oder was auch immer
27:22
und vor konfigurierten Applikationen, die man eben darstellt. Und die Teilnehmer wollen natürlich am Tag der Schulung sofort loslegen. Das ist deren Anforderung. Aber sie wollen auf der anderen Seite auch noch etwas machen. Sie wollen sich dann nicht das nochmal manuell aufbauen, was man in der Schulung eben hatte, sondern das soll auf Knopfdruck und Demand
27:42
quasi funktionieren. Und da ist es so, Testumgebungen kosten einfach Geld. Das ist ein Fakt. Und die Definition von Verfügbarkeit, die ist oftmals nicht eindeutig. Also beispielsweise ist es oftmals so, dass man so eine interne Schulung auf der eigenen Infrastruktur in einem Labor hat beispielsweise.
28:02
Aber wenn man sowas extern in einem Labor hat, ist es oftmals vielleicht nicht so die beste Idee, Kunden auf die interne Infrastruktur zu lassen. Weil dann brauchen sie einen VPN-Zugang und so weiter. Dann hat man oftmals auch, muss man sich bestätigen lassen, dass sie jetzt in unserem Netz sind
28:21
und so weiter. Deswegen ist es auch oftmals so, dass der Kunde selbst seine eigene Infrastruktur dafür benutzen möchte, was ja auch legitim ist. Und selbst wenn man das Ganze intern betreibt, weil es ein interner Kurs ist, ist es ja auch so, dass mittelfristig Schulungsumgebungen für Teilnehmer aufrechtzuerhalten, ist auch wieder unpraktikabel und teuer. Also wenn man jetzt jeden Monat
28:42
eine Schulung hält mit 10 Teilnehmern und man müsste dann für jeden Teilnehmer jeweils eine Vorm aufrecht erhalten, dann hat man bis Ende des Jahres relativ viele Vorms, die im Prinzip nichts tun. Deswegen war da so ein bisschen die Frage, wo soll man das Ganze eigentlich hosten? Die Lösung ist da, dass man einfach einerseits Fake Grants nimmt und andererseits irgendeine Clouds,
29:03
wie GCE, GCE, was auch immer, plus Terraform. Und das zeige ich mir auch gleich nochmal, was das konkret bedeutet. Also das Tool oder die Technik, die wir uns da bedienen, ist Infrastructure as Code. Und die Überlegung dabei ist eben,
29:20
dass die Schulungsumgebung voll automatisiert erstellt wird und die tatsächliche Plattform, die soll dabei irrelevant sein. Also das kann eine lokale Testumgebung sein, ein Labor, das man hat, das kann irgendein Cloud-Anbieter sein, kann aber auch das Notebook des Teilnehmers sein. Also auch die Option soll es eben geben. Wenn jetzt ein Teilnehmer eben einfach nach einem halben Jahr selbst nochmal damit rumspielen will,
29:40
dann soll er die Option haben, auf seinem Notebook selbst auch diese Umgebung betreiben zu können. Und da ist es so, wir definieren im Prinzip nur den Soll-Zustand der benötigten Ressourcen, also wie sieht die VM aus, was für Netzwerk hat die, was für ein Betriebssystem ist installiert, welche Programme. Und Ansible kümmert sich dann darum, das Ganze zu implementieren.
30:00
Also wir haben uns hier für Ansible entschieden, an der Stelle. Und Vagrant ist im Prinzip ein Tool von HashiCorp und das ermöglicht es eben einfach, auf Knopfdruck so eine virtuelle Umgebung mit allem, was dazugehört, zu erstellen. Also die VMs mit Netzwerken, mit den Anwendungen, so einfach mit allen Befehlen hochgezogen werden können.
30:20
Und das Tool ist in Ruby geschrieben, da gibt es auch viele Plugins für. Und Vagrant benutzt im Prinzip Vorlagen, die es auf der Vagrant Cloud gibt. Also es ist so eine Art App Store für VM Templates. Da gibt es eben für CentOS, für Debian, für was auch immer fertige Vorlagen. Da haben auch die meisten Open Source Projekte selbst ihre Accounts. Das heißt, man kriegt dann auch die offizielle Debian Box
30:42
oder die offizielle CentOS Box. Und der Hintergrund dieses Tools ist es eben, dass man so eine reproduzierbare Test- oder Entwicklungsumgebung hat. Also so dieses Typische, was der Entwickler gerne mal sagt, der bei mir auf dem Laptop hat es funktioniert, das entfällt damit. Weil wenn man das konsequent nutzt und immer Vagrant eben für so etwas nutzt,
31:03
dann ist es egal, ob ich das auf einem Laptop hochziehe, ob ich das auf einem fetten Server hochziehe oder auf irgendeinem Ultrabook. Das ist egal. Es ist immer reproduzierbar, weil ich ja Infrastructure as Code dafür benutze. Ja, und das Tool ist im Prinzip relativ einfach zu handhaben. Es gibt ein einfaches Kommando, Vagrant up, das tippe ich ein.
31:21
Und dann wird aus so einer Konfiguration, aus so einem sogenannten Vagrant File, wo eben drin steht, was zu konfigurieren ist, wird dann alles hochgezogen. Das ist dann nur eine Frage, der Zeit ein paar Minuten dauert, bis das hochgezogen wird. Und das bietet sich eben für die Schulung an der Stelle auf jeden Fall an. Und Vagrant unterstützt im Prinzip mehrere Hyperweise.
31:41
Also Virtual Box ist fest mit eingebaut. Man kann aber auch WM-Bärprodukte benutzen. Da gibt es ein Plugin für, KVM. Ich glaube, sogar Freebase.de Behive ist mit drin. Also da ist wirklich für jeden was dabei. Und ansonsten kann es Ansible Chef, Puppet, Sold und ja, wir haben uns jetzt eben hier für Ansible entschieden.
32:03
Hier ist mal so ein Beispiel. Hier wird es einerseits eine CentOS 8 VM referenziert. Das passiert hier mit Ansible VM Box-Name. Dann hier der Name der Box. Und dann kann man hier auch einfach ein weiteres privates Netzwerk definieren. Hier zum Beispiel gibt es ein zweites
32:21
Terminal 78810. Und anschließend wird hier unten einfach ein Ansible Playbook referenziert und das wird dann beim Hochziehen der VM ausgeführt. Als Gegenstück oder Ergänzung dazu versteht sich Hashtag Terraform, also ein Tool des gleichen Herstellers. Und während jetzt Vagrant eher für Entwickler gedacht ist,
32:41
weil es jetzt zum Beispiel primär diese Desktop Hyperweise fokussiert, gibt es mit Terraform ein Tool, das sich eher für die komplexe, produktive Infrastruktur sieht. Das heißt, das unterstützt eben verschiedene On-Premise Hypervisor, aber auch Cloud. Und das macht dann Sinn, wenn man eben mehrere unterschiedliche Plattformen
33:00
betreibt. Zum Beispiel, man hat mehrere lokale Hypervisor. Vielleicht irgendwo ein VM wäre, irgendwo ein KVM. Aber man benutzt beispielsweise auch Azure und AWS. Dann kann man mit einem Tool die Deployments quasi orchestrieren. Und ähnliches Prinzip, man definiert seinen Sollzustand eben in einer Art Blueprint. Das ist eben hier halt ein JSON
33:20
oder in einer eigenen Metasprache von CL definiert und integriert sich eben auch in viele verschiedene Produkte und Hypervisor und Anbieter. Und auch das integriert sich dann wieder in Configuration Management. Also beispielsweise Ansible funktioniert auch an der Stelle. Das Prinzip von Terraform ist so dry, don't repeat yourself.
33:42
Und wenn man das eben konsequent umsetzt, dann ist es auf einmal fast schon egal, welchen Cloud-Provider man hat, weil man den Code eben einfach umschreiben kann, dass es auch für den anderen Provider funktioniert. Ja, und derzeit gibt es circa 100 Erweiterungen. Hier ein ganz kleiner Überblick mal. Also da ist wirklich alles dabei von den gängigen Clouds wie AWS, GCE,
34:01
auch Dinge wie Hetzner. Man hat Docker mit drin, Kubernetes und so weiter, kann auch Cisco-Netzwerke mit reinnehmen, einzelne Datenbanken, Monitorungssysteme und die Community, die schreibt auch selbst viele Plugins dafür. Also da findet man eigentlich für jeden was. Bei Terraform ist es eben so,
34:21
so eine Konfiguration, die beinhaltet einfach aufeinander aufbauende Ressourcen. Also zum Beispiel, wenn ich nach VM will, dann brauche ich in aller Regel irgendwo eine Compute-Instanz. Ich brauche Netzwerke, ich brauche Storage. Das wird eben einfach in der Konfiguration aufeinander aufbauend definiert. Und dadurch, dass man Variablen benutzen kann
34:41
in diesen Konfigurationsblöcken, ist das Ganze auch relativ modular gehalten. Und Terraform pflegt selbst immer so eine kleine Datenbank über den Ist- und Soll-Zustand. Also es arbeitet quasi auch idempotent, wie man es ja von Ansible kennt. Das heißt, ich habe zehn VMs deployt, ich will noch eine Elfte mit dazu haben. Dann ändere ich einfach einen Counter in der Variabler,
35:01
führe Terraform nochmal neu aus und dann stellt Terraform fest, aha, zehn habe ich schon, eine brauche ich noch und provisioniere dann auch entsprechend nur die noch benötigte neue VM. Und so ein typischer Workflow ist, man hat so eine Terraformkonfiguration, dann initialisiert man im Prinzip die Umgebung.
35:21
Das bedeutet, man kann dann passend zum Cloud Provider noch Plugins runterladen. Wenn ich beispielsweise auf Azure was deployen will, brauche ich ein Azure Plugin. Das lässt sich Terraform komplett selbstständig runter und mit Plan kann man quasi dann so simulieren, was würde denn jetzt passieren, was benötige ich noch. Und mit Apply würde ich dann beispielsweise VMs bereitstellen
35:41
und mit Destroy könnte ich es dann auch wieder löschen. Ja, und das ist, was wir in der Kombination nutzen. Also dadurch, dass wir Ansible losgelöst haben, ist es egal, ob wir das jetzt in einer Cloud oder in einer Laborumgebung provisionieren. Da Terraform eben nach dem Erstellen der VMs auch einfach nur das Ansible Playbook oder die Ansible Role startet.
36:02
Und der Teilnehmer, der eben einfach auf seinem Laptop mit Vagrant später mal die Umgebung nachbauen will, der kann halt eben auch einfach nur mithilfe von Vagrant das Playbook ausführen und das hat exakt den gleichen Effekt. Also da sind wir unabhängig und müssen nicht mehrere Codes für mehrere Lösungen bereitstellen.
36:20
Gut, kommen wir zum Thema Testing für Trainer und Teilnehmer. Da ist es so, so eine Schulung besteht bei uns auch aus Aufgaben, um die Interaktivität zu fördern. Also so meine geheime Formel ist es vier bis fünf Theoriefolien, dann halt irgendein Katzenbild oder irgendein Meme und dann eine Aufgabe. Weil dann schlafen die Leute A nicht ein und B müssen sie halt das Gelernte so voll umsetzen.
36:42
Also es ist keine typische Beschallung, wie in der Uni oder in der Schule. Man muss wirklich selbst aktiv tätig werden. Und deswegen wollen wir auch, dass die Teilnehmer selbstständig überprüfen können, ob sie das jetzt richtig gemacht haben. Und darüber hinaus ist es auch so, wenn man so eine Schulungsumgebung in der Cloud bereitstellt,
37:00
dann muss man unbedingt testen, ob das auch funktioniert hat. Denn es gibt oftmals Warnungsarbeiten beim Anbieter oder es gibt eine neue API-Version mit neuen Features und dann entscheiden sich natürlich auch Fehler ein. Weil man beispielsweise den Terraform Plugin hätte aber hat das nicht getan. Also auch da ist Testing notwendig. Und was für die Zukunft so ein bisschen geplant ist,
37:21
wenn so ein Trainer neuer Inhalte und Musterlösungen zu so einer Schulung hinzufügt. So nehme ich auch für jedes Kapitel und für jede Aufgabe eine Musterlösung geben, wenn ein Teilnehmer jetzt einfach mal hängt an der Stelle, dass er einfach die Musterlösung ausführen kann und weitermachen kann. Und da ist es so, da schleicht sich natürlich auch gerne mal so ein Syntaxfehler ein.
37:40
Und blöd ist es natürlich, wenn man das dann erst am Halten der Schulung feststellt oder die Teilnehmer einen darauf hinweisen müssen. Das gilt es zu vermeiden. Das heißt, da wollen wir auch ein proaktives Testing in der Zukunft drin haben. Ja, und dafür gibt es mehrere Frameworks. Also für das Deployment gibt es, haben wir gesehen, von Gruntwork TerraTest. Das haben wir jetzt noch nicht erprobt.
38:01
Deswegen steht es hier als Work in Progress drin. Ansonsten für das Betriebssystem und die Anwendung, die ja vorkonfiguriert wird per Ansible, gibt es natürlich die Möglichkeit, so einen Ansible Assert zu benutzen oder das Python Testing Framework Test Infra. Und für die Musterlösung oder die Aufgaben, die der Teilnehmer dann eben ausführen kann,
38:20
gäbe es mit GOS und Commander auch zwei Testing Tools, die man dann eben kann. Wie gesagt, fürs Deployment haben wir jetzt noch nichts. Aber für das Betriebssystem und die Anwendung, haben wir Folgendes vorgesehen. Da gibt es das Python Tool Test Infra. Und da definiert man sein Akzeptanzkriterium nativ in Python Code. Also hier ist so ein Beispiel aus einer Schulung,
38:42
wo einfach überprüft wird, ob die Pakete Vim, Bind, Apple und Ansible installiert sind auf einer Sendersmaschine. Und das ist relativ selbstlesend. Also wir haben hier halt so einen Array, wo eben hier die einzelnen Pakete aufgelistet sind. Und hier unten haben wir eine einfache Vorschleife, die eben pro Paket in der Variable Packages eben sagt,
39:02
dieses Paket muss auf dem Host installiert sein und mit Assert Packages installt wird eben definiert, dass die Erwartungshaltung ist, dass dem auch so ist. Und wenn man das nach dem Deployment einfach mal auf den Vms ausführt, dann sieht man relativ schnell, wo eben jetzt was fehlgeschlagen ist und wo man nochmal nacharbeiten muss.
39:22
Und Comanter ist ein Tool, das in Go geschrieben ist. Das ist völlig unabhängig von der verwendeten Skript- oder Programmiersprache. Und da definiert man die Tests eben in Jaml. Und das kann man sowohl auf dem localhost ausführen, als auch über SSH oder in irgendwelchen Docker-Containern. Und auch da ist so ein Unit-Test relativ schnell zu schreiben und zu verstehen.
39:42
Das gilt eben auch für die einzelnen Aufgaben in den Kapiteln, dass die Teilnehmer selbstständig eben verstehen können, ob sie die Aufgabe richtig gemacht haben. Hier einmal ein Beispiel. Hier ist die Jaml-Definition. Also Lab 1 heißt der Test. Und wenn man eben Lab 1 checkt, dann wird hier beispielsweise das Commando
40:00
Git-Status eingetippt. Und wenn da eben jetzt drin steht, in der Ausgabe ist up to date, dann ist eben das Git-Repo in einem sauberen Zustand. Und das gilt jetzt als, wenn man das einfach testen kann. Plus hier wird noch der Exit-Code überprüft, dass der auch null ist. Ja, und um das einfach zu testen, reicht es, wenn man eingibt Commander, Test und dann Name der Datei.
40:22
Und dann sieht man hier, der Unit-Test läuft durch. Und man sieht hier auch schön mit so einem ASCII-Hackchen, dass eben die Aufgabe erfolgreich ausgeführt wurde. Und wenn mehrere Bedingungen, mehrere Tests drin sind, dann würde man hier auch sehen, wie viele hier geschlagen sind. Da haben wir uns auch einfach in einen Rapper geschrieben, dass die Leute nicht Commander, Test, Name, der Datei eintragen müssen,
40:42
sondern der Aufgabe ist eine kleine Bash-Funktion, die dann sich die passende Datei raussucht und fertig. Also so kann ich auch als Teilnehmer ganz einfach überprüfen, ob ich die Aufgabe richtig gemacht habe. Gut, jetzt haben wir das ganze Testing, aber es ist auch so, dass Linting auch eine wichtige Rolle spielt.
41:01
Also ein Linter ist ein Tool, das eine statische Code-Analyse macht. So Lint, Englisch für Fusseln, das soll den Code entfusseln. Und das Tool überprüft eben den Code auf Syntax und den Designfehler. Beispielsweise habe ich irgendwo ein altes Format oder eine Funktion benutzt, die es vielleicht in der nächsten Version gar nicht mehr gibt,
41:20
oder habe ich schlechten Programmierstil irgendwo angewandt, oder habe ich auch irgendwo fehlerhafte Aufrufe, die so nicht funktionieren. Also es geht über den Syntax-Check definitiv hinaus. Und hier ein kleiner Fun-Fact an der Stelle. Die ersten Linter entstanden damals 1979, um die Schwächen des C-Compilers damals auszugleichen. Also ich glaube, es war damals so,
41:41
dass der C-Compiler nicht in der Lage war, zu identifizieren, dass eine Variable im Code benutzt wird, die gar nicht definiert wurde. Und wenn man dann eben einfach mehrere Stunden lang was kompiliert hat, damals gab es ja noch nicht unbedingt leistungsfähige CPUs wie heute, dann hat man dann nach mehreren Stunden festgestellt, dass der Code hat nicht funktioniert. Und das war sehr ärgerlich,
42:00
weil man sehr viel Zeit vergeutet hat. Deswegen wurden damals Linter programmiert. Das Resultat, wenn man ein Code gelintet hat, ist, dass es eben ein optimierter Linter ist. Und das ist natürlich für so eine Schulungsgeschichte auch ein spannendes Thema. Da gibt es auch mehrere Tools, die für so eine Schulung relevant sind. Das habe ich hier mal ein bisschen aufgelistet.
42:21
Es gibt tatsächlich einen Linter für Markdown-Code. Das ist echt interessant, wusste ich vorher nicht. Und für Ansible gibt es eben auch einen Linter, der dann eben Playbooks und Rollen lintert. Für YAML. Also Ansble benutzt ja auch das YAML-Format. Und für die Unittests haben wir ja auch dieses YAML-Format. Da gibt es einen YAML-Linter. Und da ich ja mit Test-Infra
42:41
nativen Python-Code schreibe, kann man hier auch Flag-Aid und PyLint nehmen. Für Terraform gibt es einen Linter. Und für Ruby und Vagrant gibt es mit RuboCop auch einen Ruby-Linter, weil Vagrant ja Ruby-Code nutzt. Und die Tools kann man quasi alle verwenden, um das Ganze auch wirklich schick zu machen.
43:01
Da sollten wir aber erst mal so ein bisschen drüber sprechen. Was ist denn so der Scope des Lintings? Es muss sein, den Trainer auf Best-Practices hinzuweisen. Also nicht jeder hat die Motivation, einen perfekten Code zu schreiben. Ja, leider. Und deswegen muss man differenzieren, was ist ein Fehler und was ist eine Warnung. Also wenn jetzt ein Fehler auftritt,
43:21
dass man wirklich einen Syntax-Fehler im YAML-Code drin hat oder im Markdown, der einfach nicht funktioniert, dann ist es ein Fehler. Und dann muss dann so eine Pipeline auch sagen, hier mache ich nicht weiter. Aber wenn es nur so Design-Warnings sind, so eine Variable, blöd benannt, aber es funktioniert trotzdem,
43:41
dann soll das natürlich trotzdem weiterlaufen, weil die Einstiegshöhe soll ja gering sein. Und die Mustervorlage, die wir dafür ausliefern, die ist eben fehlerfrei. Und die Dokumentation, die eben dieser Vorlage beiliegt, die erklärt auch so typische Einsteigerfehler. Aber prinzipiell kann man damit erst mal starten.
44:02
Und was es ja auch gibt, also VS Code oder VS Codeium für das Slinting. Und das ist auch so der Editor, den wir empfehlen dafür. Und wenn man diese Plugins installiert, dann wird man ja während des Schreibens schon darauf hingewiesen, dass das gerade wenig Sinn macht, was man geschrieben hat. Um da mal so ein Beispiel zu zeigen, das ist jetzt hier ein Screenshot
44:22
von der aktuellen Präsentation, die wir gerade sehen. Und da habe ich hier beispielsweise bei der Überschrift 1. Ebene, Meeting-Plattform, das sieht man auch rechts in der Scrollbar. Und hier oben sieht man auch direkt eine Fehlerbeschreibung.
44:41
Also das hier eben steht Missing Space und hier keine Leertaste zwischen Hash und dem Heading und auch mit dem Link, wo man noch mehr darüber lesen kann. Das heißt, da sehe ich schon direkt, hier habe ich jetzt etwas falsch gemacht und kann es dann eben verbessern. Gut, jetzt haben wir die einzelnen Teile gehört. Jetzt ist die Frage,
45:01
wie kann man das als Pipeline sinnvoll verheiraten? Also wir haben angefangen, eine Pipeline zu erstellen, die eben diese drei Teilschritte kombiniert. Das heißt, die erstellt Schulungsunterlagen, die soll dann Testing machen und später auch die Infrastruktur bereitstellen. Also unser MVP war jetzt, dass wir gesagt haben, wir wollen erst mal die Schulungsunterlagen in der Pipeline automatisiert bereitstellen.
45:22
Das heißt, immer wenn ich meinen Code ins Git einfüge, dann soll GitLab mir automatischen PDF und eine HTML draus generieren. Das ist auch Erfolg. Das ist jetzt eben gerade das Thema Testing und Infrastruktur bereitstellen an. Bei dem PDF Export, ich habe es vorhin schon mal ganz kurz erwähnt,
45:41
es gibt dieses Tool Deck Tape, das was eben einfach so eine HTML Präsentation als PDF druckt und das kann halt eben RevealJS, das kann RemarkJS und so weiter. Das ist ein kleiner Service, der in JavaScript geschrieben ist, den man per NPM installieren könnte, aber es gibt zum Glück auch ein vorgefertigtes Docker Image und das kann man in so eine CI-CD-Pipeline ganz einfach integrieren.
46:03
Sieht dann befolgt aus, also wir benutzen hier die GitLab CI, das liese sich aber auch so auf GitHub Actions oder Azure DevOps abwandeln, je nachdem was man da nutzt. Wir haben hier einfach einen Job Bild Präsentation, der benutzt eben hier dieses Docker Image, das ich in der Folgenfolie verlinkt habe, und startet dann eben das Deck Tape JS Tool,
46:23
das in diesem Container installiert ist und benutzt dann einen Chromium, der in dem Docker Container vorhanden ist, um einfach die Präsentation zu drucken. Das sind hier noch so ein paar Parameter, die haben wir eins zu eins aus der Präsentation übernommen und haben hier halt noch reingeschrieben, dass es ein Remark ist. Ja, und am Ende hat man eben Artefakte
46:41
und das ist hier eben einmal gepuzelt so ein PDF bei raus und einmal so ein HTML und das kann man dann benutzen für die Schulung. Das heißt, um das mal bildlich darzustellen, aktuell sieht es so aus, wir haben in unserem Git Repository diese Markdown Files, also die einzelnen Kapitel, für die Schulung oder der Präsentation oder eben auch ein Handout,
47:01
also da gibt es auch eine eigene Datei, wo dann so ein Handout drin ist, wo dann die Teilnehmer nachlesen können, was die zehn wichtigsten Befehle des Tools sind, das gerade benutzt wird zum Beispiel. Und das wandert dann eben, wenn die Pipeline reinläuft, in einen Job, der einmal mit Bild Handout so ein PDF generiert
47:21
und aus den anderen Dingen wird ein HTML erstellt. Und wenn man das HTML hat, kommt das eben an diesen Decktape Container, der baut dann daraus ein PDF und das wandert dann in so ein Job Collect Files. Und das ist dann quasi mein Archiv, das lade ich mir als Trainer runter, da ist dann das PDF drin, also einmal die Präsentation und einmal die Handouts für die Teilnehmer und ich habe das HTML,
47:41
das ich aufmachen kann und dann eben teilen kann über einer Meeting-Plattform. Der Soll-Zustand sieht befolgt aus, da sollen in Zukunft die Lab-Lösungen, die es ja schon gibt im Git, als Shell-Script beispielsweise, die sollen in Linta reinwandern und sollen dann auch in Unitest einwandern. Das heißt, da soll dann auch wirklich
48:00
eine VM hochgezogen werden mit genau der Umgebung der Schulung und dann sollen diese Muster-Lösungen eben ausgeführt werden. Und nur wenn die dann auch erfolgreich ausgeführt werden können, dann gilt das als gecheckt. Ähnlich ist es mit den Markdown-Dateien, die so auch gelintet werden, um ebenso typische Fehler zu identifizieren.
48:22
Dann wird nach wie vor ein HTML generiert und eben das Handout, die Präsentation wird generiert, die Dateien werden eben auch gesammelt, wie es ja jetzt auch schon der Fall ist. Aber der nächste Punkt ist es auch, dass man auf Knopfdruck dann auf Deploy klicken kann und dann würde dann eben für zehn Teilnehmer beispielsweise, würden VMs
48:41
lokal im Labor oder in der Cloud bereitgestellt werden. Das ist so, dahin soll die Reise gehen. Ja und unser Fazit an der Stelle ist, wir haben festgestellt, die Marken eignen sich hervorragend als Präsentationswerkzeug. Und wenn man das eben kombiniert mit der Meeting-Plattform und der Testumgebung, die man automatisiert hochzieht, dann ist das halt auch echt ein gutes Werkzeug,
49:01
um Schulungen abzuhalten. Und den MVP, den benutzen wir bereits aktiv, also sowohl intern als auch bei Kunden und haben da bisher sehr positives Feedback erhalten. Und weitere Ideen, die wir haben, ist so ein Bug-Tracker, dass wenn man einen Fehler in der Folie findet, dass man da die Zeile markiert,
49:20
dann hat GitLab ein neues Ticket aufgemacht. Ansonsten wollen wir auch noch Layouts implementieren. Also habt jetzt gesehen, das ist immer nur so Content-First, könnte man sagen, so in der Mitte irgendwie Text und Bilder. Aber manchmal hat man ja auch so Layouts wie in PowerPoint, dass links ein Bild ist und rechts irgendwie der Content. Das wollen wir noch nachbauen. Da gibt es auch schon ein paar Vorlagen
49:42
im Internet für Remark. Die müssen wir eben umbauen, dass sie auf unser Design passen. Und ansonsten, wenn man Code in Folien hat, wollen wir da auch quasi einen Lint hat rüberlaufen lassen. Oder dass quasi die pipeline erkennt, auf Folie 106 ist ein Fehler. In dem Script, das funktioniert so nicht.
50:01
Das wollen wir noch mit einbauen. Ja, und ansonsten ist es so, wir haben das Schulungsbeispiel, das laden wir gerade auf GitLab hoch. Hier ist auch schon mal der Link. Das könnt ihr euch dann gerne anschauen und auch mal ausprobieren, ob das für euch passt. Oder vielleicht habt ihr ja auch Ideen, was man noch einbauen könnte. Da wollen wir einfach mal gucken, wie so das Feedback ist.
50:22
Von daher, wenn ihr das ausprobieren wollt und testen wollt, sehr gerne. Wir freuen uns da über jedes Feedback. Ansonsten hier nochmal eine Linkliste der einzelnen Tools, die wir jetzt in dem Vortrag hatten. Und ansonsten, gibt es denn irgendwelche Fragen zu dem Thema?
50:43
Ja, vielen herzlichen Dank, Christian, für den Vortrag. Wir schalten jetzt rüber zum Big Blue Button und würden dort Fragen und Antworten entsprechend beantworten vom Speaker. Ich würde dazu jetzt auch gleichzeitig
51:02
die Mikrofone freischalten, wer möchte. Ansonsten gibt es einen Chat, wo man auch entsprechend seine Frage loswerden kann. Hier kommt jetzt eine Frage, ob man in so einer Testumgebung auch proprietäre Software verwenden könnte, wie beispielsweise ein CAD-Programm.
51:21
Das Schöne ist ja, dadurch, dass man ja Infrastructure as Code benutzt und man auch wählen kann, ob man eben eine Cloud-Lösung benutzt oder was im eigenen Labor, kann man da im Prinzip sich zusammenbauen, was man möchte. Also wenn ihr beispielsweise eine VM-Vorlage habt, wo ihr beispielsweise das CAD-Programm installiert habt, dann könntet ihr das ganz einfach bereitstellen.
51:42
Also je nachdem, was für euch da am meisten Sinn macht. Beantwortet das da eine Frage? Dann kam noch die Frage, mich würde mal interessieren, ob du mit Big Blue Button solche Schulungen auch im Mod durchführst. Also das haben wir auch schon gemacht.
52:01
Und das funktioniert außerordentlich gut, muss ich sagen. Also so Jitsi und Big Blue Button funktionieren jetzt sehr gut. Ansonsten benutzen viele unserer Kunden eben auch Tools wie WebEx und Teams. Und das funktioniert eigentlich auch so weit ganz gut. Dann kam noch die Frage gerade,
52:23
ob man mit dem vorgestellten Workflow auch eine Windows-File einrichten könnte, das sah alles sehr nach Linus aus. Also auch da, je nachdem, was für ein VM-Template du benutzt, wenn du eben statt dem Linus-Template ein Windows-Template benutzt, dann kannst du da natürlich auch Windows-Labore damit bauen.
52:40
Und das Schöne ist ja, diese Wacom-Boxes kann man sich auch selbst bauen. Also aus Lizenzgründen kann man diese Wacom-Vorlagen eher nicht mit Windows benutzen. Es gibt glaube ich nur eine offizielle von Microsoft für Web-Entwicklung. Aber man kann sich so eine Box auch selbst bauen. Auch automatisierter wäre ein Tool, das man sich anschauen könnte. Und dann könnte man da eben auch
53:01
Windows-Programme in der VM bereitstellen und dann eben im Labor oder eben auf dem Laptop des Teilnehmers bereitstellen. Gebt ihr das weiter? Das freut mich.
53:26
Warten wir nochmal. Vielleicht braucht noch jemand länger etwas zu tippen. Genau. Ansonsten, ihr könnt auch gerne eure Mikrofone anmachen, wenn ihr möchtet. Da ist gerade eine aufgekommen, die Frage lautet, könnte man damit
53:42
auch Docker-Images bauen? Für die Schulungsumgebung meintest du jetzt? Oder wofür genau? Ein User? Ja, er meinte das genauso. Genau. Ja klar. Ob jetzt Terraform auch Container deployen kann,
54:01
weiß ich tatsächlich nicht. Ich weiß, es gibt so ein Kubernetes-Add-On. Das wäre dann vielleicht eine Option. Aber ich überlege, Vacrant arbeitet primär mit VMs. Aber ich bilde mir ein, es gäbe da auch einen Docker-Plugin für. Also eigentlich müsste auch das funktionieren.
54:21
Ich kann das bestätigen. Vagrant unterstützt auch Docker. Super. Klasse. Da haben wir ja schon das Feedback. Das heißt, wenn man da mit wegkommt, mit dem Teil, in dem man arbeitet, dann würde auch daneben der Docker funktionieren. Dann kam gerade noch eine Frage, ob man bei Remark an die Grenzen mit Präsentationslänge und Bildgröße kommt.
54:40
Also die Schulungen, die ich bereits bestellt habe, das sind teilweise dreitägige Schulungen mit 400, 500 Folien. Und das funktioniert erstaunlich gut, muss ich sagen. Also diesen Effekt, den ich beschrieben hatte, wenn man jetzt beispielsweise Microsoft PowerPoint benutzt oder LibreOffice Impress, den konnte ich da jetzt noch nicht nachstellen. Also das funktionierte direkt mit dem Doppelklick, direkt offen und ließ sich auch ohne Probleme
55:02
durch scrollen. Ich glaube, da gibt es noch eine Frage zu den Grenzen mit Präsentationslänge
55:23
und Bildgrößen. Genau, das hat schon gerade kurz angerissen. Bildgröße allerdings nicht. Also ich nehme halt meistens sehr hochauflösende Bilder, also so 2K, 4K Bilder und auch das funktioniert gut. Da hatten wir jetzt aber gerade am Freitag noch die Idee, wenn man sich daraus so ein PDF generiert, dann ist
55:41
das ja relativ groß. Und wenn man jetzt so ein 500 Megabyte PDF irgendwie mit dem Kunden scheren will, dann könnte das problematisch sein. Da haben wir uns gedacht, vielleicht in die Pipeline noch so einen Step einzubauen, die 4K Screenshots dann eben nur FullHD macht. Und so, da könnte man auch so ein bisschen
56:00
die Auflösung reduzieren und die Dateigröse damit auch transitiv. Wenn man beim PDF Export die Anzahl der DPI's angeben kann, ist das wahrscheinlich schon mit drin. Das sollte das reduzieren, wenn der PDF Export das kann, aber das sollte ja tun können. Ist eine gute Frage, müsste man
56:21
mal in der Doku von diesem Decktape-Container gucken, aber ich bin mir sicher, da wird ja im Prinzip ein Song gestartet, der eben dann druckt, ohne GUI. Da müsste man das bestimmt setzen können. Ist eine gute Idee, nehme ich mir mal mit auf die Liste für die Verbesserung. Danke für den Tipp. Und selbst wenn nicht, danach das Ganze durch Großscript durchhagen und
56:41
dort rekomprimieren sozusagen, die PDF selber. Ja, okay. Interessanter Ansatz. So, da kam jetzt noch was. Nutzt ihr Netlify oder ähnliches, um die Folien dann auch als Preview in den MRs zu sehen oder was? Nutzen wir tatsächlich noch
57:01
nicht. Also aktuell ist es so, dass eben dann einfach ein PDF von HTML rauspurzelt. Aber man könnte das natürlich auch dadurch, dass wir GitLab nutzen, wäre es natürlich ein guter Use-Case in GitLab Pages dafür zu nutzen. Also haben wir aktuell nicht, aber ist eine gute Idee, die ich gerne aufnehme.
57:20
Dann kam noch eine Frage, ob man auch Videos in Remark embedden kann, also so Intros beispielsweise für Übungen. Das geht ja, weil das YouTube-Kanal mit 5 basiert, kann man da alles nutzen, was der Tagstack so hergibt. Ich hatte zum Beispiel gestern in der anderen Präsentation, die ich auch in Remark gesetzt habe, hatte ich zwei Videos drin und auch Wave-Dateien, die dann eben abgespielt werden.
57:41
Da kann man einfach direkt den HTML oder Syntax in das Dokument mit einpasten und das funktioniert dann.
58:07
Ich weiß nicht, ob es im Kalender ist hier von der Froscon bei der Präsentation von dem Chat, das fände ich gut. Sehr gerne. Also die
58:21
Präsentation habe ich schon hochgeladen. Die seht ihr dann auch gleich im Vortragsprogramm, wenn ihr da eben draufklickt. Und habe jetzt aber hier auch gerade noch mal den GitHub-Link im Chat gepostet. Und dann könnt ihr da sehr gerne euch etwas angucken und auch Ideen einreichen oder einfach Feedback geben, wie es für euch funktioniert. Da freuen wir uns sehr drüber. Die Slides sind auch schon hochgeladen. Also sie sind
58:49
auch über GitHub irgendwie an Texten oder über Twitter gar kein Thema. Ja, sehr, sehr gerne.
59:05
Also vielen Dank für das tolle Feedback und die tollen Fragen. Ich hoffe, ich konnte alle Fragen beantworten. Gibt es noch eine Frage, die beantwortet werden könnte?
59:20
Da gerade sehr viele schon gehen, schätze ich, dass keiner mehr eine Frage hat. Deswegen vielen herzlichen Dank, Christian, dir für deinen Vortrag. Und ja, weiterhin viel Spaß im Livestream.