0:00:00.146,0:00:17.920 36C3 Vorspannmusik 0:00:17.920,0:00:21.851 Herald: Applaus, Applaus, Applaus,[br]Applaus, weil an der Stelle ein riesiges 0:00:21.851,0:00:25.591 Applaus für Heiko Borchers.[br]Applaus 0:00:25.591,0:00:30.350 Herald: Er ist Fachinformatiker und in[br]seiner Vita steht, dass er sich von Autos 0:00:30.350,0:00:35.096 in der Cloud kümmert. Also ein spannendes[br]Thema und er redet über „Ansible all the 0:00:35.096,0:00:38.640 things“. Darum viel Spaß und[br]ich lerne jetzt bestimmt auch viel. 0:00:38.640,0:00:44.130 Applaus 0:00:44.130,0:00:48.400 Heiko Borchers: Ja, dann erst mal guten[br]Morgen an Tag 1. Ich hätte nicht 0:00:48.400,0:00:52.890 gedacht, dass an Tag 1 um die frühe[br]Uhrzeit schon so viele Leute hier sind. 0:00:52.890,0:00:57.862 Und ja ich werde darüber reden „Ansible[br]all the things“, was mir dann tatsächlich 0:00:57.862,0:01:08.180 geholfen hat, wie ich Ansible gelernt[br]habe. Zu mir: Ich bin Sysadmin, mach 0:01:08.180,0:01:12.830 hauptsächlich Cloud-Infrastruktur, wie der[br]Pupe ja auch schon gesagt hatte. Großteil 0:01:12.830,0:01:17.540 davon ist für Elektroautos und eigentlich[br]automatisiere ich mir halt am liebsten 0:01:17.540,0:01:23.550 alles weg. Und da sind halt dann für die[br]Cloud Terraform und Ansible auch im 0:01:23.550,0:01:29.660 täglichen Einsatz und meine Motivation für[br]diesen Talk war tatsächlich: Ansible ist 0:01:29.660,0:01:34.490 mein Lieblingstool und ich hab auf Twitter[br]viel dieses Jahr gelesen: Ja eigentlich würde 0:01:34.490,0:01:42.250 ich das sehr gerne lernen aber wie fange[br]ich an? Irgendwie kam viel, habe ich von 0:01:42.250,0:01:47.320 vielen Leuten gehört, dass sie keinen[br]Startpunkt gefunden haben und da wollte 0:01:47.320,0:01:52.650 ich jetzt dann halt mal einen Startpunkt[br]liefern. Erstmal: Warum mag ich Ansible so? 0:01:52.650,0:01:56.619 Ich arbeite viel mit Kundensystemen und[br]da dann noch mal irgendwas zusätzliches zu 0:01:56.619,0:02:04.180 installieren ist vielleicht nicht ganz so[br]optimal. Deswegen agentless, man braucht 0:02:04.180,0:02:11.200 auf dem Kundensystem später nichts mehr[br]zusätzlich, hat relativ wenig, was die 0:02:11.200,0:02:17.510 Software noch rummüllt, es braucht nicht[br]noch zusätzliche zentrale Infrastruktur, 0:02:17.510,0:02:24.910 wie man es teilweise mit Puppet hat, kann[br]man haben, muss man nicht nutzen. Ich finde 0:02:24.910,0:02:31.879 es war relativ leicht zu lernen, es ist[br]Open Source, was immer praktisch ist. Und 0:02:31.879,0:02:35.260 wenn man die Ansbile-Rollen richtig[br]geschrieben hat, kann man sie einmal 0:02:35.260,0:02:39.110 laufen lassen, zweimal laufen lassen, das[br]Ergebnis wird am Ende immer das Gleiche 0:02:39.110,0:02:46.250 sein. Ja, vielleicht: Warum nicht Ansible?[br]Es ist nicht unbedingt schnell und man 0:02:46.250,0:02:54.650 muss YAML lernen und YAML ist pingelig, was[br]Leerzeichen und Tabstops angeht. Da hat 0:02:54.650,0:03:01.480 man gerne mal ’ne falsche Einrückung und[br]am Ende fliegt einem alles um die Ohren. 0:03:01.480,0:03:07.730 Dann fange ich auch direkt mit den Basics[br]an: so sieht so eine Standard- 0:03:07.730,0:03:14.070 Ordnerstruktur aus von Ansible. Man hat[br]seine config, man hat eventuell Hashes von 0:03:14.070,0:03:21.130 irgendwelchen Credentials. Man hat[br]Variablen, die für ganze Gruppen da sind. 0:03:21.130,0:03:26.720 Man hat so ein hosts-File, wo sämtliche[br]Server drin stehen, die man hat. Man hat 0:03:26.720,0:03:30.590 ein sogenanntes Playbook, in dem drin[br]steht, was man mit seiner Infrastruktur 0:03:30.590,0:03:37.150 machen will und dann hat man verschiedene[br]Rollen. Und ja, wie sieht so eine Config 0:03:37.150,0:03:42.910 aus? Das ist jetzt tatsächlich meine[br]config, die ich auch normalerweise nutze. 0:03:42.910,0:03:48.370 Das ist tatsächlich halt wie jedes[br]andere config-File unter x-beliebigen 0:03:48.370,0:03:57.560 Betriebssystemen: einfach nur Key[br]und Value. Dann so ein ganz einfaches 0:03:57.560,0:04:03.440 Playbook. Das würde jetzt auf allen[br]Hosts laufen, die man so in seinem 0:04:03.440,0:04:08.200 Inventory stehen hat. Wie das Inventory[br]aussieht, zeige ich euch gleich noch. 0:04:08.200,0:04:15.790 Und man gibt hier halt noch ein[br]Variablen-File an und hat dann 0:04:15.790,0:04:19.480 verschiedene Rollen. Das ist jetzt[br]so das Playbook, was ich tatsächlich 0:04:19.480,0:04:24.270 immer als allererstes laufen[br]lasse, installiert die Rolle Packages, 0:04:24.270,0:04:29.820 da werden einfach so die Standardpakete,[br]die ich gerne habe, werden installiert. 0:04:29.820,0:04:37.860 Dann date_time: wird ein NTP-Server[br]konfiguriert. Über den hosts wird 0:04:37.860,0:04:42.660 die /etc/hosts noch angepasst und mit der[br]Rolle user kopiere ich tatsächlich meine 0:04:42.660,0:04:46.860 ganzen dot-files und alles, was ich gerne[br]an config habe, direkt auf den Server, 0:04:46.860,0:04:56.120 damit ich überall so arbeiten kann, wie es[br]mir am besten gefällt. Und ja da haben wir 0:04:56.120,0:05:05.720 dann jetzt so eine Rolle, das ist die[br]user-Rolle. Und da gibt es dann halt auch 0:05:05.720,0:05:10.091 wieder so eine Ordnerstruktur. Die[br]Ordnerstruktur lege ich mir für, jedes mal 0:05:10.091,0:05:15.940 wenn ich eine neue Rolle schreibe, lege[br]ich mir diese Ordnerstruktur mit defaults, 0:05:15.940,0:05:20.359 files, handlers, tasks und vars halt[br]einfach mit einem kleinen Bashskript an. 0:05:20.359,0:05:27.379 Die Ordner werden halt eh alle fast immer[br]gebraucht. Das sind so defaults, wirklich 0:05:27.379,0:05:35.580 default-Werte, die man setzt. Files sind[br]einfach nur Dateien, die ihr auf der 0:05:35.580,0:05:41.139 Maschine haben wollt, die keine Templates[br]sind sondern tatsächlich feste Files, 0:05:41.139,0:05:54.009 Binaries oder halt bei mir meine dot-[br]files. Und dann haben wir tatsächlich, das 0:05:54.009,0:06:02.240 sind die verschiedenen Tasks. Es wird das[br]sudoer-File erstmal an einen sicheren Ort 0:06:02.240,0:06:14.139 kopiert, das Original. Dann wird[br]tatsächlich einfach nur in der Datei ein 0:06:14.139,0:06:26.970 bisschen was geändert. Am Ende wird noch[br]ein Sanity-Check gemacht und nach dem 0:06:26.970,0:06:32.529 Sanity-Check, wenn alles so funktionieren[br]sollte, wird der ssh-daemon einfach neu 0:06:32.529,0:06:39.210 gestartet, damit man nicht … der Task ist[br]tatsächlich dafür da dass man nicht immer 0:06:39.210,0:06:43.370 als root auf den Server connecten muss[br]sondern mit seinem Nutzernamen und dann 0:06:43.370,0:06:50.680 mit seinem Nutzernamen sudo verwenden[br]kann. Das ist der Handler, der dann 0:06:50.680,0:06:55.949 aufgerufen wird, um den ssh-daemon[br]neu zu starten. Wird dann das Ansible- 0:06:55.949,0:07:04.380 Modul für systemd oder initV-Services[br]benutzt und es wird einfach nur geguckt, 0:07:04.380,0:07:10.229 beziehungsweise der Service wird neu[br]gestartet und wenn dann halt die Meldung 0:07:10.229,0:07:18.470 zurückkommt, „service has restarted“, ist[br]der Handler dann auch abgeschlossen. So 0:07:18.470,0:07:28.610 sieht halt auch so ein Task aus, hat einen[br]Namen, installiere die Base-Software, die 0:07:28.610,0:07:36.770 Pakete, wird geguckt, je nachdem welches[br]OS, ob jetzt ein CentOS haben oder ein 0:07:36.770,0:07:48.120 Debian, und dann wird die Liste an Paketen[br]einfach durch geguckt und das jeweilige 0:07:48.120,0:08:01.669 Paket installiert. Hier haben wir auch noch[br]mal dieses notify, es gibt halt dann dem 0:08:01.669,0:08:10.639 Handler die Info. Und bei dem Tag habe ich[br]halt noch reingeschrieben „new system“, das 0:08:10.639,0:08:15.509 Tag wird dann, wenn das System einmal[br]konfiguriert ist, auch gelöscht. Und hier 0:08:15.509,0:08:23.550 haben wir jetzt so einen Auszug aus einem[br]Variablen-File. Bei Debian heißen die 0:08:23.550,0:08:29.160 monitoring plugins, monitoring-plugins-[br]basic. Bei Red Hat heißen sie nagios 0:08:29.160,0:08:36.070 plugins und auf Arch Linux heißen sie halt[br]monitoring-plugins. und weil man in seiner 0:08:36.070,0:08:43.751 Rolle nicht jetzt in dem Fall drei[br]verschiedene Plugins, also drei 0:08:43.751,0:08:49.280 verschiedene Paketnamen angeben will, hat[br]man es halt in den Variablen-Dateien und 0:08:49.280,0:08:53.150 Ansible guckt vorher, welches[br]Betriebssystem ist das jetzt, was ich 0:08:53.150,0:08:57.880 provisioniere und nimmt dann[br]dementsprechend aus diesen Dreien das, was 0:08:57.880,0:09:05.370 für das Betriebssystem das Richtige ist.[br]Dann gibt es auch noch Variablen, die 0:09:05.370,0:09:11.780 möchte man nicht unbedingt im Klartext[br]haben. Wenn man zum Beispiel irgendwelche 0:09:11.780,0:09:17.639 Privat-Keys auf eine Maschine kopieren[br]muss oder für ein Cluster oder 0:09:17.639,0:09:22.610 Datenbankserver-Sync, wenn man mit Key-[br]Files arbeitet. Die schiebt man vielleicht 0:09:22.610,0:09:26.751 auch aus Versehen einmal ins git und dann[br]liegen sie im Klartext in irgendeinem git- 0:09:26.751,0:09:32.709 Repo. Ist doof. Dafür hat Ansible halt das[br]Ansible-Vault. Und dann steht da halt 0:09:32.709,0:09:39.500 erstmal nur drinnen: Ansible_Vault ist[br]AES256 verschlüsselt und quasi zufällige 0:09:39.500,0:09:43.690 Daten und ja ich weiß die sehen jetzt[br]nicht zufällig aus. Ich wollte hier keine 0:09:43.690,0:09:54.949 verschlüsselten Daten auf die Wand werfen.[br]Und ja so von den Basics her war es das 0:09:54.949,0:09:58.930 auch. Was man für Ansible sonst noch[br]braucht, ist einfach nur sein 0:09:58.930,0:10:05.979 Lieblingseditor, kann man mit vi oder[br]emacs machen, kann man aber auch mit IDEs 0:10:05.979,0:10:10.640 machen. Aber eigentlich braucht man nur[br]einen Texteditor und Ansible als Software 0:10:10.640,0:10:17.130 selber. Und was mir dabei tatsächlich[br]geholfen hat, es vernünftig zu lernen, 0:10:17.130,0:10:20.135 war, ich habe mir meinen RaspberryPi[br]zuhause genommen … 0:10:20.135,0:10:27.160 Moment, da hat ich doch auch noch eine[br]Slide, wo ist die denn hin verschwunden? 0:10:27.160,0:10:37.860 Warum habe ich diese Slide übersprüngen?[br]Das war nämlich das Inventory, das ist 0:10:37.860,0:10:43.980 halt auch wieder eine YAML-Datei.[br]Hier habe ich jetzt die Gruppe 0:10:43.980,0:10:47.970 MeineServer: mein root-Server, auf dem[br]auch die Präsentation gerade läuft und 0:10:47.970,0:10:53.199 mein RaspberryPi und um es mir selber[br]beizubringen, habe ich tatsächlich auf dem 0:10:53.199,0:10:57.940 RaspberryPi so die kleinste Debian[br]Installation genommen, die ich finden 0:10:57.940,0:11:02.450 konnte, und dann alles, was ich[br]auf dem Pi zuhause haben wollte, 0:11:02.450,0:11:07.339 per Ansible drauf installiert.[br]Erst mal mit kleinen Sachen 0:11:07.339,0:11:13.259 angefangen wie halt dem ntp-daemon[br]konfigurieren, dann für zuhause 0:11:13.259,0:11:17.109 vielleicht nicht ganz so relevant, aber[br]fail2ban konfigurieren. Solche kleineren 0:11:17.109,0:11:21.360 Sachen kann man relativ gut machen ohne[br]dass man sich das komplette System 0:11:21.360,0:11:26.420 zerschießt. Und dann halt später immer[br]größer werden. Und das ist tatsächlich 0:11:26.420,0:11:32.460 auch mein Tipp: Wer es lernen möchte, nimmt[br]sich halt einfach den Kleinstcomputer der 0:11:32.460,0:11:38.560 Wahl, packt da ein Linux drauf und bewirft[br]den erstmal mit Ansible. Von der 0:11:38.560,0:11:42.250 Performance her tut sich da eh nicht[br]soviel, ob man jetzt ein RaspberryPi oder 0:11:42.250,0:11:47.110 einen großen Rechner nimmt. Viel bei[br]Ansible ist Ausprobieren, Warten, Failen, 0:11:47.110,0:11:56.740 noch mal ausprobieren. Und, ja, ansonsten[br]wäre ich jetzt durch. Wenn Fragen sind, 0:11:56.740,0:12:01.380 könnt ihr gerne auch noch Fragen stellen.[br]Herald: Erstmal einen warmen Applaus bevor 0:12:01.380,0:12:04.690 wir hier irgendwie mit[br]Fragen anfangen, weil … 0:12:04.690,0:12:08.029 Applaus 0:12:08.029,0:12:13.020 Herald: So, es werden sich ja gleich hier[br]links und rechts die Lampen zum 0:12:13.020,0:12:18.280 Telefonjoker eröffnen, das heißt, wer[br]Fragen hat, gerne dort. Wo kann man dich 0:12:18.280,0:12:22.200 erreichen, wenn man jetzt irgendwie Blut[br]geleckt hat, mit dem was du hier gemacht 0:12:22.200,0:12:26.470 hast, dass man während des Congress noch[br]mal auf dich zukommt, in welchem … 0:12:26.470,0:12:29.130 Heiko: auf dem Congress, ich renn[br]eigentlich immer rum 0:12:29.130,0:12:31.539 Herald: Stehst unter deinen[br]Namen im DECT-System? 0:12:31.539,0:12:36.149 Heiko: Ja, ich stehe unter meinem Namen im[br]DECT-System. Die Slides werde ich auch 0:12:36.149,0:12:40.630 gleich dann by Chaos-West beim Talk noch[br]hinzufügen, wer sie sich noch mal angucken 0:12:40.630,0:12:45.153 will. Und in den Slides steht auch später[br]noch der Link zum GitHub-Repo mit den 0:12:45.153,0:12:47.939 Slides selber.[br]Herald: Ja, das ist ja vorbildlich! Da 0:12:47.939,0:12:51.640 würde ich sagen volle Punktzahl, keine[br]Fragen mehr, an der Stelle dann aber 0:12:51.640,0:12:55.163 nochmal ein Applaus, weil so einfach[br]lassen wir keinen von der Bühne gehen. 0:12:55.163,0:12:57.678 Applaus 0:12:57.678,0:13:03.530 Abspannmusik 0:13:03.530,0:13:25.000 Untertitel erstellt von c3subtitles.de[br]im Jahr 2020. Mach mit und hilf uns!