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!