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