1
00:00:00,146 --> 00:00:17,920
36C3 Vorspannmusik
2
00:00:17,920 --> 00:00:21,851
Herald: Applaus, Applaus, Applaus,
Applaus, weil an der Stelle ein riesiges
3
00:00:21,851 --> 00:00:25,591
Applaus für Heiko Borchers.
Applaus
4
00:00:25,591 --> 00:00:30,350
Herald: Er ist Fachinformatiker und in
seiner Vita steht, dass er sich von Autos
5
00:00:30,350 --> 00:00:35,096
in der Cloud kümmert. Also ein spannendes
Thema und er redet über „Ansible all the
6
00:00:35,096 --> 00:00:38,640
things“. Darum viel Spaß und
ich lerne jetzt bestimmt auch viel.
7
00:00:38,640 --> 00:00:44,130
Applaus
8
00:00:44,130 --> 00:00:48,400
Heiko Borchers: Ja, dann erst mal guten
Morgen an Tag 1. Ich hätte nicht
9
00:00:48,400 --> 00:00:52,890
gedacht, dass an Tag 1 um die frühe
Uhrzeit schon so viele Leute hier sind.
10
00:00:52,890 --> 00:00:57,862
Und ja ich werde darüber reden „Ansible
all the things“, was mir dann tatsächlich
11
00:00:57,862 --> 00:01:08,180
geholfen hat, wie ich Ansible gelernt
habe. Zu mir: Ich bin Sysadmin, mach
12
00:01:08,180 --> 00:01:12,830
hauptsächlich Cloud-Infrastruktur, wie der
Pupe ja auch schon gesagt hatte. Großteil
13
00:01:12,830 --> 00:01:17,540
davon ist für Elektroautos und eigentlich
automatisiere ich mir halt am liebsten
14
00:01:17,540 --> 00:01:23,550
alles weg. Und da sind halt dann für die
Cloud Terraform und Ansible auch im
15
00:01:23,550 --> 00:01:29,660
täglichen Einsatz und meine Motivation für
diesen Talk war tatsächlich: Ansible ist
16
00:01:29,660 --> 00:01:34,490
mein Lieblingstool und ich hab auf Twitter
viel dieses Jahr gelesen: Ja eigentlich würde
17
00:01:34,490 --> 00:01:42,250
ich das sehr gerne lernen aber wie fange
ich an? Irgendwie kam viel, habe ich von
18
00:01:42,250 --> 00:01:47,320
vielen Leuten gehört, dass sie keinen
Startpunkt gefunden haben und da wollte
19
00:01:47,320 --> 00:01:52,650
ich jetzt dann halt mal einen Startpunkt
liefern. Erstmal: Warum mag ich Ansible so?
20
00:01:52,650 --> 00:01:56,619
Ich arbeite viel mit Kundensystemen und
da dann noch mal irgendwas zusätzliches zu
21
00:01:56,619 --> 00:02:04,180
installieren ist vielleicht nicht ganz so
optimal. Deswegen agentless, man braucht
22
00:02:04,180 --> 00:02:11,200
auf dem Kundensystem später nichts mehr
zusätzlich, hat relativ wenig, was die
23
00:02:11,200 --> 00:02:17,510
Software noch rummüllt, es braucht nicht
noch zusätzliche zentrale Infrastruktur,
24
00:02:17,510 --> 00:02:24,910
wie man es teilweise mit Puppet hat, kann
man haben, muss man nicht nutzen. Ich finde
25
00:02:24,910 --> 00:02:31,879
es war relativ leicht zu lernen, es ist
Open Source, was immer praktisch ist. Und
26
00:02:31,879 --> 00:02:35,260
wenn man die Ansbile-Rollen richtig
geschrieben hat, kann man sie einmal
27
00:02:35,260 --> 00:02:39,110
laufen lassen, zweimal laufen lassen, das
Ergebnis wird am Ende immer das Gleiche
28
00:02:39,110 --> 00:02:46,250
sein. Ja, vielleicht: Warum nicht Ansible?
Es ist nicht unbedingt schnell und man
29
00:02:46,250 --> 00:02:54,650
muss YAML lernen und YAML ist pingelig, was
Leerzeichen und Tabstops angeht. Da hat
30
00:02:54,650 --> 00:03:01,480
man gerne mal ’ne falsche Einrückung und
am Ende fliegt einem alles um die Ohren.
31
00:03:01,480 --> 00:03:07,730
Dann fange ich auch direkt mit den Basics
an: so sieht so eine Standard-
32
00:03:07,730 --> 00:03:14,070
Ordnerstruktur aus von Ansible. Man hat
seine config, man hat eventuell Hashes von
33
00:03:14,070 --> 00:03:21,130
irgendwelchen Credentials. Man hat
Variablen, die für ganze Gruppen da sind.
34
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
35
00:03:26,720 --> 00:03:30,590
ein sogenanntes Playbook, in dem drin
steht, was man mit seiner Infrastruktur
36
00:03:30,590 --> 00:03:37,150
machen will und dann hat man verschiedene
Rollen. Und ja, wie sieht so eine Config
37
00:03:37,150 --> 00:03:42,910
aus? Das ist jetzt tatsächlich meine
config, die ich auch normalerweise nutze.
38
00:03:42,910 --> 00:03:48,370
Das ist tatsächlich halt wie jedes
andere config-File unter x-beliebigen
39
00:03:48,370 --> 00:03:57,560
Betriebssystemen: einfach nur Key
und Value. Dann so ein ganz einfaches
40
00:03:57,560 --> 00:04:03,440
Playbook. Das würde jetzt auf allen
Hosts laufen, die man so in seinem
41
00:04:03,440 --> 00:04:08,200
Inventory stehen hat. Wie das Inventory
aussieht, zeige ich euch gleich noch.
42
00:04:08,200 --> 00:04:15,790
Und man gibt hier halt noch ein
Variablen-File an und hat dann
43
00:04:15,790 --> 00:04:19,480
verschiedene Rollen. Das ist jetzt
so das Playbook, was ich tatsächlich
44
00:04:19,480 --> 00:04:24,270
immer als allererstes laufen
lasse, installiert die Rolle Packages,
45
00:04:24,270 --> 00:04:29,820
da werden einfach so die Standardpakete,
die ich gerne habe, werden installiert.
46
00:04:29,820 --> 00:04:37,860
Dann date_time: wird ein NTP-Server
konfiguriert. Über den hosts wird
47
00:04:37,860 --> 00:04:42,660
die /etc/hosts noch angepasst und mit der
Rolle user kopiere ich tatsächlich meine
48
00:04:42,660 --> 00:04:46,860
ganzen dot-files und alles, was ich gerne
an config habe, direkt auf den Server,
49
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
50
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
51
00:05:05,720 --> 00:05:10,091
wieder so eine Ordnerstruktur. Die
Ordnerstruktur lege ich mir für, jedes mal
52
00:05:10,091 --> 00:05:15,940
wenn ich eine neue Rolle schreibe, lege
ich mir diese Ordnerstruktur mit defaults,
53
00:05:15,940 --> 00:05:20,359
files, handlers, tasks und vars halt
einfach mit einem kleinen Bashskript an.
54
00:05:20,359 --> 00:05:27,379
Die Ordner werden halt eh alle fast immer
gebraucht. Das sind so defaults, wirklich
55
00:05:27,379 --> 00:05:35,580
default-Werte, die man setzt. Files sind
einfach nur Dateien, die ihr auf der
56
00:05:35,580 --> 00:05:41,139
Maschine haben wollt, die keine Templates
sind sondern tatsächlich feste Files,
57
00:05:41,139 --> 00:05:54,009
Binaries oder halt bei mir meine dot-
files. Und dann haben wir tatsächlich, das
58
00:05:54,009 --> 00:06:02,240
sind die verschiedenen Tasks. Es wird das
sudoer-File erstmal an einen sicheren Ort
59
00:06:02,240 --> 00:06:14,139
kopiert, das Original. Dann wird
tatsächlich einfach nur in der Datei ein
60
00:06:14,139 --> 00:06:26,970
bisschen was geändert. Am Ende wird noch
ein Sanity-Check gemacht und nach dem
61
00:06:26,970 --> 00:06:32,529
Sanity-Check, wenn alles so funktionieren
sollte, wird der ssh-daemon einfach neu
62
00:06:32,529 --> 00:06:39,210
gestartet, damit man nicht … der Task ist
tatsächlich dafür da dass man nicht immer
63
00:06:39,210 --> 00:06:43,370
als root auf den Server connecten muss
sondern mit seinem Nutzernamen und dann
64
00:06:43,370 --> 00:06:50,680
mit seinem Nutzernamen sudo verwenden
kann. Das ist der Handler, der dann
65
00:06:50,680 --> 00:06:55,949
aufgerufen wird, um den ssh-daemon
neu zu starten. Wird dann das Ansible-
66
00:06:55,949 --> 00:07:04,380
Modul für systemd oder initV-Services
benutzt und es wird einfach nur geguckt,
67
00:07:04,380 --> 00:07:10,229
beziehungsweise der Service wird neu
gestartet und wenn dann halt die Meldung
68
00:07:10,229 --> 00:07:18,470
zurückkommt, „service has restarted“, ist
der Handler dann auch abgeschlossen. So
69
00:07:18,470 --> 00:07:28,610
sieht halt auch so ein Task aus, hat einen
Namen, installiere die Base-Software, die
70
00:07:28,610 --> 00:07:36,770
Pakete, wird geguckt, je nachdem welches
OS, ob jetzt ein CentOS haben oder ein
71
00:07:36,770 --> 00:07:48,120
Debian, und dann wird die Liste an Paketen
einfach durch geguckt und das jeweilige
72
00:07:48,120 --> 00:08:01,669
Paket installiert. Hier haben wir auch noch
mal dieses notify, es gibt halt dann dem
73
00:08:01,669 --> 00:08:10,639
Handler die Info. Und bei dem Tag habe ich
halt noch reingeschrieben „new system“, das
74
00:08:10,639 --> 00:08:15,509
Tag wird dann, wenn das System einmal
konfiguriert ist, auch gelöscht. Und hier
75
00:08:15,509 --> 00:08:23,550
haben wir jetzt so einen Auszug aus einem
Variablen-File. Bei Debian heißen die
76
00:08:23,550 --> 00:08:29,160
monitoring plugins, monitoring-plugins-
basic. Bei Red Hat heißen sie nagios
77
00:08:29,160 --> 00:08:36,070
plugins und auf Arch Linux heißen sie halt
monitoring-plugins. und weil man in seiner
78
00:08:36,070 --> 00:08:43,751
Rolle nicht jetzt in dem Fall drei
verschiedene Plugins, also drei
79
00:08:43,751 --> 00:08:49,280
verschiedene Paketnamen angeben will, hat
man es halt in den Variablen-Dateien und
80
00:08:49,280 --> 00:08:53,150
Ansible guckt vorher, welches
Betriebssystem ist das jetzt, was ich
81
00:08:53,150 --> 00:08:57,880
provisioniere und nimmt dann
dementsprechend aus diesen Dreien das, was
82
00:08:57,880 --> 00:09:05,370
für das Betriebssystem das Richtige ist.
Dann gibt es auch noch Variablen, die
83
00:09:05,370 --> 00:09:11,780
möchte man nicht unbedingt im Klartext
haben. Wenn man zum Beispiel irgendwelche
84
00:09:11,780 --> 00:09:17,639
Privat-Keys auf eine Maschine kopieren
muss oder für ein Cluster oder
85
00:09:17,639 --> 00:09:22,610
Datenbankserver-Sync, wenn man mit Key-
Files arbeitet. Die schiebt man vielleicht
86
00:09:22,610 --> 00:09:26,751
auch aus Versehen einmal ins git und dann
liegen sie im Klartext in irgendeinem git-
87
00:09:26,751 --> 00:09:32,709
Repo. Ist doof. Dafür hat Ansible halt das
Ansible-Vault. Und dann steht da halt
88
00:09:32,709 --> 00:09:39,500
erstmal nur drinnen: Ansible_Vault ist
AES256 verschlüsselt und quasi zufällige
89
00:09:39,500 --> 00:09:43,690
Daten und ja ich weiß die sehen jetzt
nicht zufällig aus. Ich wollte hier keine
90
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
91
00:09:54,949 --> 00:09:58,930
auch. Was man für Ansible sonst noch
braucht, ist einfach nur sein
92
00:09:58,930 --> 00:10:05,979
Lieblingseditor, kann man mit vi oder
emacs machen, kann man aber auch mit IDEs
93
00:10:05,979 --> 00:10:10,640
machen. Aber eigentlich braucht man nur
einen Texteditor und Ansible als Software
94
00:10:10,640 --> 00:10:17,130
selber. Und was mir dabei tatsächlich
geholfen hat, es vernünftig zu lernen,
95
00:10:17,130 --> 00:10:20,135
war, ich habe mir meinen RaspberryPi
zuhause genommen …
96
00:10:20,135 --> 00:10:27,160
Moment, da hat ich doch auch noch eine
Slide, wo ist die denn hin verschwunden?
97
00:10:27,160 --> 00:10:37,860
Warum habe ich diese Slide übersprüngen?
Das war nämlich das Inventory, das ist
98
00:10:37,860 --> 00:10:43,980
halt auch wieder eine YAML-Datei.
Hier habe ich jetzt die Gruppe
99
00:10:43,980 --> 00:10:47,970
MeineServer: mein root-Server, auf dem
auch die Präsentation gerade läuft und
100
00:10:47,970 --> 00:10:53,199
mein RaspberryPi und um es mir selber
beizubringen, habe ich tatsächlich auf dem
101
00:10:53,199 --> 00:10:57,940
RaspberryPi so die kleinste Debian
Installation genommen, die ich finden
102
00:10:57,940 --> 00:11:02,450
konnte, und dann alles, was ich
auf dem Pi zuhause haben wollte,
103
00:11:02,450 --> 00:11:07,339
per Ansible drauf installiert.
Erst mal mit kleinen Sachen
104
00:11:07,339 --> 00:11:13,259
angefangen wie halt dem ntp-daemon
konfigurieren, dann für zuhause
105
00:11:13,259 --> 00:11:17,109
vielleicht nicht ganz so relevant, aber
fail2ban konfigurieren. Solche kleineren
106
00:11:17,109 --> 00:11:21,360
Sachen kann man relativ gut machen ohne
dass man sich das komplette System
107
00:11:21,360 --> 00:11:26,420
zerschießt. Und dann halt später immer
größer werden. Und das ist tatsächlich
108
00:11:26,420 --> 00:11:32,460
auch mein Tipp: Wer es lernen möchte, nimmt
sich halt einfach den Kleinstcomputer der
109
00:11:32,460 --> 00:11:38,560
Wahl, packt da ein Linux drauf und bewirft
den erstmal mit Ansible. Von der
110
00:11:38,560 --> 00:11:42,250
Performance her tut sich da eh nicht
soviel, ob man jetzt ein RaspberryPi oder
111
00:11:42,250 --> 00:11:47,110
einen großen Rechner nimmt. Viel bei
Ansible ist Ausprobieren, Warten, Failen,
112
00:11:47,110 --> 00:11:56,740
noch mal ausprobieren. Und, ja, ansonsten
wäre ich jetzt durch. Wenn Fragen sind,
113
00:11:56,740 --> 00:12:01,380
könnt ihr gerne auch noch Fragen stellen.
Herald: Erstmal einen warmen Applaus bevor
114
00:12:01,380 --> 00:12:04,690
wir hier irgendwie mit
Fragen anfangen, weil …
115
00:12:04,690 --> 00:12:08,029
Applaus
116
00:12:08,029 --> 00:12:13,020
Herald: So, es werden sich ja gleich hier
links und rechts die Lampen zum
117
00:12:13,020 --> 00:12:18,280
Telefonjoker eröffnen, das heißt, wer
Fragen hat, gerne dort. Wo kann man dich
118
00:12:18,280 --> 00:12:22,200
erreichen, wenn man jetzt irgendwie Blut
geleckt hat, mit dem was du hier gemacht
119
00:12:22,200 --> 00:12:26,470
hast, dass man während des Congress noch
mal auf dich zukommt, in welchem …
120
00:12:26,470 --> 00:12:29,130
Heiko: auf dem Congress, ich renn
eigentlich immer rum
121
00:12:29,130 --> 00:12:31,539
Herald: Stehst unter deinen
Namen im DECT-System?
122
00:12:31,539 --> 00:12:36,149
Heiko: Ja, ich stehe unter meinem Namen im
DECT-System. Die Slides werde ich auch
123
00:12:36,149 --> 00:12:40,630
gleich dann by Chaos-West beim Talk noch
hinzufügen, wer sie sich noch mal angucken
124
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
125
00:12:45,153 --> 00:12:47,939
Slides selber.
Herald: Ja, das ist ja vorbildlich! Da
126
00:12:47,939 --> 00:12:51,640
würde ich sagen volle Punktzahl, keine
Fragen mehr, an der Stelle dann aber
127
00:12:51,640 --> 00:12:55,163
nochmal ein Applaus, weil so einfach
lassen wir keinen von der Bühne gehen.
128
00:12:55,163 --> 00:12:57,678
Applaus
129
00:12:57,678 --> 00:13:03,530
Abspannmusik
130
00:13:03,530 --> 00:13:25,000
Untertitel erstellt von c3subtitles.de
im Jahr 2020. Mach mit und hilf uns!