 Applaus, Applaus, Applaus, Applaus, Applaus. Weil an der Stelle ein riesiges Applaus für Heiko Borchers. Er ist Fachinformatiker und in seiner Vita steht, dass er sich von Autos in der Cloud kümmert. Also ein spannendes Thema und er redet über OnSible All The Sings. Darum viel Spaß und ich lerne jetzt bestimmt auch viel. Ja, dann erst mal. Guten Morgen, an Tag 1. Ich hätte nicht gedacht, dass an Tag 1 in die frühe Uhrzeit schon so viele Leute hier sind. Und ja, ich werde darüber reden. OnSible All The Sings, was mir dann tatsächlich geholfen hat, wie ich OnSible gelernt habe und ja, zu mir. Ich bin SysAdmin, mach hauptsächlich Cloud Infrastruktur, wie der Puppe ja auch schon gesagt hatte. Großteil davon ist für Elektroautos und eigentlich automatisiere ich mir halt am liebsten alles weg. Und da sind halt dann für die Cloud Terraform und OnSible auch im täglichen Einsatz. Und meine Motivation für diesen Talk war tatsächlich, OnSible ist mein Lieblingstool und ich habe auf Twitter viel dieses Jahr gelesen. Ja, eigentlich würde ich das ja gerne lernen. Aber wie fange ich an? Irgendwie habe ich von vielen Leuten gehört, dass sie keinen Startpunkt gefunden haben. Und da wollte ich jetzt dann halt mal einen Startpunkt liefern. Erst mal, warum mag ich OnSible so? Ich arbeite viel mit Kundensystemen und da dann nochmal irgendwas Zusätzliches zu installieren, ist vielleicht nicht ganz so optimal. Deswegen Agentless, man braucht auf dem Kundensystem später nichts mehr zusätzlich, hat relativ wenig, was die Software noch rummüllt. Es braucht nicht noch zusätzliche zentrale Infrastruktur, wie man es teilweise mit Puppet hat. Kann man haben, muss man nicht nutzen. Ich finde, es war relativ leicht zu lernen. Es ist Open Source, was immer praktisch ist. Und wenn man die OnSible Rollen richtig geschrieben hat, kann man sie einmal laufen lassen, zweimal laufen lassen. Das Ergebnis wird am Ende immer das Gleiche sein. Ja, vielleicht warum nicht OnSible? Es ist nicht unbedingt schnell. Und man muss Jammel lernen und Jammel ist pingelig, was Leerzeichen und TabStops angeht. Da hat man gerne mal eine falsche Einrückung und am Ende fliegt einem alles um die Ohren. Dann fange ich auch direkt mal mit den Basics an. So sieht so eine Standard-Order-Struktur aus von OnSible. Man hat seine Konfig. Man hat eventuell Hashes von irgendwelchen Credentials. Man hat Variablen, die für ganze Gruppen da sind. Man hat so ein Hosts-File, wo sämtliche Server drinstehen, die man hat. Man hat ein sogenanntes Playbook, in dem drinsteht, was man mit seiner Infrastruktur machen will. Und dann hat man verschiedene Rollen. Wie sieht so eine Konfig aus? Das ist jetzt tatsächlich meine Konfig, die ich auch normalerweise nutze. Das ist wie jedes andere Konfig-Feile unter X-Beliebigen Betriebssystemen. Einfach nur Key und Value. Dann so ein ganz einfaches Playbook. Das würde jetzt auf allen Hosts laufen, die man in seinem Inventory stehen hat. Wie das Inventory aussieht, zeige ich euch gleich noch. Man gibt hier noch einen Variablen-File an und hat dann verschiedene Rollen. Das ist jetzt so das Playbook, was ich tatsächlich immer als allererstes laufen lasse. Installiert die Rolle Packages. Da werden einfach so die Standard-Pakete, die ich gerne habe, werden installiert. Dann Datetime wird ein NTP-Server konfiguriert. Bei den Hosts wird die ETC-Hosts noch angepasst. Mit der Rolle User kopiere ich meine ganzen Dot-Files und alles, was ich gerne an Konfig habe, direkt auf den Server, damit ich überall so arbeiten kann, wie es mir am besten gefällt. Da haben wir jetzt so eine Rolle. Das ist die Userrolle. Da gibt es dann auch wieder so eine Ordnerstruktur. Die Ordnerstruktur lege ich mir für jedes Mal, wenn ich eine neue Rolle schreibe, lege ich mir diese Ordnerstruktur mit Defaults, Files, Handlers, Tasks und Wars einfach mit einem kleinen Bash Script an. Die Ordner werden alle fast immer gebraucht. Was sind so Defaults? Wirklich Default-Werte, die man setzt. Files sind einfach nur Dateien, die er auf der Maschine haben wollt. Die keine Templates sind, sondern tatsächlich feste Files, Binarys oder halt bei mir meine Dot-Files. Und dann haben wir tatsächlich, das sind die verschiedenen Tasks. Es wird das Sudo-File erst mal an sicheren Ort kopiert, das Original. Dann wird tatsächlich einfach nur in der Datei ein bisschen was geändert. Am Ende wird noch ein Sanity-Check gemacht. Und nach dem Sanity-Check, wenn alles zu funktionieren sollte, wird der SSH-Demon einfach neu gestartet, damit man nicht, der Task ist tatsächlich dafür da, dass man nicht immer als Route auf den Server connecten muss, sondern mit seinem Nutzernamen und dann mit seinem Nutzernamen Sudo verwenden kann. Das ist der Händler, der dann aufgerufen wird, um den SSH-Demon neu zu starten. Wird dann das Enzyme-Modul für SystemD oder InitFive-Services benutzt. Und es wird einfach nur geguckt, bzw. der Service wird neu gestartet und wenn dann halt die Meldung zurückkommt, Service has restarted, ist der Händler dann auch abgeschlossen. So sieht halt auch so ein Task aus. Hat ein Name, installiere die Base-Software, die Pakete wird halt geguckt, je nachdem welches SS, ob wir jetzt ein Centers haben oder ein Debian. Und dann wird die Liste an Paketen einfach durchgeguckt und das jeweilige Paket installiert. Hier haben wir auch noch mal dieses Notify, es gibt halt dann dem Händler die Info und bei dem Tag habe ich halt noch reingeschrieben News System. Das Tag wird dann, wenn das System einmal konfiguriert ist, auch gelöscht. Hier haben wir jetzt einen Auszug aus Variablenfall. Bei Debian heißen die Monitoring Plugins, Monitoring minus Plugins minus Basic. Bei Red Hat heißen sie Nagios Plugins und auf Arch Linux heißen sie halt Monitoring minus Plugins und weil man in seiner Rolle nicht in dem Fall drei verschiedene Paketnamen angeben will, hat man es halt in den Variablen Dateien und Ansible guckt vorher, welches Betriebssystem ist das jetzt, was ich provisioniere und nimmt dann dementsprechend aus diesen Dreien das, was für das Betriebssystem das Richtige ist. Dann gibt es auch noch Variablen, die möchte man nicht unbedingt im Klartext haben, wenn man zum Beispiel irgendwelche Private Keys auf eine Maschine kopieren muss oder für ein Cluster oder Datenbank-Service-Sync, wenn man mit Keyfiles arbeitet. Die schiebt man vielleicht auch aus Versehen dann mal ins Git und dann liegen sie im Klartext in irgendeinem Git-Grepo. Es doft, da fährt Ansible halt das Ansible Vault und dann steht er halt erstmal nur drinnen. Ansible Vault ist IS 256 verschlüsselt und quasi zufällige Daten und ja, ich weiß, die sehen jetzt nicht zufällig aus, ich wollte hier keine verschlüsselten Daten auf die Wand werfen. Und ja, so von den Basics her war es das auch, was man für Ansible sonst noch braucht, ist einfach nur sein Lieblings-Editor. Kann man mit E-Mails machen, kann man aber auch mit IDs machen, aber eigentlich braucht man nur ein Text-Editor und Ansible als Software selber. Und was mir dann dabei tatsächlich geholfen hat, es vernünftig zu lernen, war, ich habe mir meinen Raspberry Pi zu Hause genommen, da hatte ich doch tatsächlich auch noch eine Slide, die denn hinverschwunden, warum habe ich dieses Slide übersprungen. Das wäre nämlich das Inventory. Das ist halt auch wieder eine Jamel-Datei. Hier habe ich jetzt die Gruppe, meine Server, mein Root-Server, auf dem auch die Präsentation gerade läuft und mein Raspberry Pi. Und um es mir selber beizubringen, habe ich tatsächlich auf dem Raspberry Pi dann so die kleinste Debian-Installation genommen, die ich finden konnte und dann alles, was ich auf dem Pi zu Hause haben wollte per Ansible drauf dann installiert. Erstmal mit kleinen Sachen angefangen, wie halt dem NTP-Demon-Konfigurieren, dann zu Hause vielleicht nicht ganz so relevant, aber fehlte Ben-Konfigurieren, solche kleineren Sachen kann man relativ gut machen, ohne dass man das komplette System zerschießt und dann halt später immer größer werden. Und das ist tatsächlich auch mein Tipp. Wer es lernen möchte, nimmt sich halt einfach seinen Kleinste Computer, den Kleinste Computer der Wahl, packt da ein Linux drauf und bewirft den erstmal mit Ansible. Von der Performance her tut sich das eh nicht, tut sich da eh nicht so viel, ob man jetzt den Raspberry Pi oder einen großen Rechner nimmt. Viel bei Ansible ist ausprobieren, warten, feilen, nochmal ausprobieren. Und ja, ansonsten wäre ich jetzt durch. Wenn Fragen sind, könnt ihr gerne auch noch Fragen stellen. Erstmal einen warmen Applaus, bevor wir hier irgendwie mit Fragen anfangen. So, es werden sich ja gleich hier links und rechts die Lampen genau zum Telefon-Strucker eröffnen. Das heißt, wer Fragen hat, gerne dort. Wo kann man dich erreichen, wenn man jetzt irgendwie Blut geleckt hat mit dem, was du hier gemacht hast, dass man während des Kongresses nochmal auf dich zukommt? Auf dem Kongress. Ich renne eigentlich immer rum. Stehst du unter deinem Namen im Decksystem? Ja, ich stehe unter meinem Namen im Decksystem. Die Slides werde ich auch gleich dann bei Chaos West beim Talk noch hinzufügen, wenn sie sich nochmal angucken will. Und in den Slides steht auch später noch der Link zum Github-Repo mit den Slides selber. Ja, das ist ja vorbildlich. Da würde ich sagen, volle Punktzahl. Keine Fragen mehr. An der Stelle dann aber nochmal einen Applaus, weil so einfach lassen wir kein von der Bühne gehen.