-
36C3 Vorspannmusik
-
Herald: Applaus, Applaus, Applaus,
Applaus, weil an der Stelle ein riesiges
-
Applaus für Heiko Borchers.
Applaus
-
Herald: 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 „Ansible all the
-
things“. Darum viel Spaß und
ich lerne jetzt bestimmt auch viel.
-
Applaus
-
Heiko Borchers: Ja, dann erst mal guten
Morgen an Tag 1. Ich hätte nicht
-
gedacht, dass an Tag 1 um die frühe
Uhrzeit schon so viele Leute hier sind.
-
Und ja ich werde darüber reden „Ansible
all the things“, was mir dann tatsächlich
-
geholfen hat, wie ich Ansible gelernt
habe. Zu mir: Ich bin Sysadmin, mach
-
hauptsächlich Cloud-Infrastruktur, wie der
Pupe 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 Ansible auch im
-
täglichen Einsatz und meine Motivation für
diesen Talk war tatsächlich: Ansible ist
-
mein Lieblingstool und ich hab auf Twitter
viel dieses Jahr gelesen: Ja eigentlich würde
-
ich das sehr gerne lernen aber wie fange
ich an? Irgendwie kam viel, habe ich von
-
vielen Leuten gehört, dass sie keinen
Startpunkt gefunden haben und da wollte
-
ich jetzt dann halt mal einen Startpunkt
liefern. Erstmal: Warum mag ich Ansible so?
-
Ich arbeite viel mit Kundensystemen und
da dann noch mal 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 Ansbile-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 Ansible?
Es ist nicht unbedingt schnell und man
-
muss YAML lernen und YAML ist pingelig, was
Leerzeichen und Tabstops angeht. Da hat
-
man gerne mal ’ne falsche Einrückung und
am Ende fliegt einem alles um die Ohren.
-
Dann fange ich auch direkt mit den Basics
an: so sieht so eine Standard-
-
Ordnerstruktur aus von Ansible. Man hat
seine config, 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 drin stehen, die man hat. Man hat
-
ein sogenanntes Playbook, in dem drin
steht, was man mit seiner Infrastruktur
-
machen will und dann hat man verschiedene
Rollen. Und ja, wie sieht so eine Config
-
aus? Das ist jetzt tatsächlich meine
config, die ich auch normalerweise nutze.
-
Das ist tatsächlich halt wie jedes
andere config-File 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 so in seinem
-
Inventory stehen hat. Wie das Inventory
aussieht, zeige ich euch gleich noch.
-
Und man gibt hier halt noch ein
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 Standardpakete,
die ich gerne habe, werden installiert.
-
Dann date_time: wird ein NTP-Server
konfiguriert. Über den hosts wird
-
die /etc/hosts noch angepasst und mit der
Rolle user kopiere ich tatsächlich meine
-
ganzen dot-files und alles, was ich gerne
an config habe, direkt auf den Server,
-
damit ich überall so arbeiten kann, wie es
mir am besten gefällt. Und ja da haben wir
-
dann jetzt so eine Rolle, das ist die
user-Rolle. Und da gibt es dann halt 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 vars halt
einfach mit einem kleinen Bashskript an.
-
Die Ordner werden halt eh alle fast immer
gebraucht. Das sind so defaults, wirklich
-
default-Werte, die man setzt. Files sind
einfach nur Dateien, die ihr auf der
-
Maschine haben wollt, die keine Templates
sind sondern tatsächlich feste Files,
-
Binaries oder halt bei mir meine dot-
files. Und dann haben wir tatsächlich, das
-
sind die verschiedenen Tasks. Es wird das
sudoer-File erstmal an einen 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 so funktionieren
sollte, wird der ssh-daemon einfach neu
-
gestartet, damit man nicht … der Task ist
tatsächlich dafür da dass man nicht immer
-
als root auf den Server connecten muss
sondern mit seinem Nutzernamen und dann
-
mit seinem Nutzernamen sudo verwenden
kann. Das ist der Handler, der dann
-
aufgerufen wird, um den ssh-daemon
neu zu starten. Wird dann das Ansible-
-
Modul für systemd oder initV-Services
benutzt und es wird einfach nur geguckt,
-
beziehungsweise der Service wird neu
gestartet und wenn dann halt die Meldung
-
zurückkommt, „service has restarted“, ist
der Handler dann auch abgeschlossen. So
-
sieht halt auch so ein Task aus, hat einen
Namen, installiere die Base-Software, die
-
Pakete, wird geguckt, je nachdem welches
OS, ob jetzt ein CentOS haben oder ein
-
Debian, und dann wird die Liste an Paketen
einfach durch geguckt und das jeweilige
-
Paket installiert. Hier haben wir auch noch
mal dieses notify, es gibt halt dann dem
-
Handler die Info. Und bei dem Tag habe ich
halt noch reingeschrieben „new system“, das
-
Tag wird dann, wenn das System einmal
konfiguriert ist, auch gelöscht. Und hier
-
haben wir jetzt so einen Auszug aus einem
Variablen-File. Bei Debian heißen die
-
monitoring plugins, monitoring-plugins-
basic. Bei Red Hat heißen sie nagios
-
plugins und auf Arch Linux heißen sie halt
monitoring-plugins. und weil man in seiner
-
Rolle nicht jetzt in dem Fall drei
verschiedene Plugins, also 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
-
Privat-Keys auf eine Maschine kopieren
muss oder für ein Cluster oder
-
Datenbankserver-Sync, wenn man mit Key-
Files arbeitet. Die schiebt man vielleicht
-
auch aus Versehen einmal ins git und dann
liegen sie im Klartext in irgendeinem git-
-
Repo. Ist doof. Dafür hat Ansible halt das
Ansible-Vault. Und dann steht da halt
-
erstmal nur drinnen: Ansible_Vault ist
AES256 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
-
Lieblingseditor, kann man mit vi oder
emacs machen, kann man aber auch mit IDEs
-
machen. Aber eigentlich braucht man nur
einen Texteditor und Ansible als Software
-
selber. Und was mir dabei tatsächlich
geholfen hat, es vernünftig zu lernen,
-
war, ich habe mir meinen RaspberryPi
zuhause genommen …
-
Moment, da hat ich doch auch noch eine
Slide, wo ist die denn hin verschwunden?
-
Warum habe ich diese Slide übersprüngen?
Das war nämlich das Inventory, das ist
-
halt auch wieder eine YAML-Datei.
Hier habe ich jetzt die Gruppe
-
MeineServer: mein root-Server, auf dem
auch die Präsentation gerade läuft und
-
mein RaspberryPi und um es mir selber
beizubringen, habe ich tatsächlich auf dem
-
RaspberryPi so die kleinste Debian
Installation genommen, die ich finden
-
konnte, und dann alles, was ich
auf dem Pi zuhause haben wollte,
-
per Ansible drauf installiert.
Erst mal mit kleinen Sachen
-
angefangen wie halt dem ntp-daemon
konfigurieren, dann für zuhause
-
vielleicht nicht ganz so relevant, aber
fail2ban konfigurieren. Solche kleineren
-
Sachen kann man relativ gut machen ohne
dass man sich 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 den Kleinstcomputer der
-
Wahl, packt da ein Linux drauf und bewirft
den erstmal mit Ansible. Von der
-
Performance her tut sich da eh nicht
soviel, ob man jetzt ein RaspberryPi oder
-
einen großen Rechner nimmt. Viel bei
Ansible ist Ausprobieren, Warten, Failen,
-
noch mal ausprobieren. Und, ja, ansonsten
wäre ich jetzt durch. Wenn Fragen sind,
-
könnt ihr gerne auch noch Fragen stellen.
Herald: Erstmal einen warmen Applaus bevor
-
wir hier irgendwie mit
Fragen anfangen, weil …
-
Applaus
-
Herald: So, es werden sich ja gleich hier
links und rechts die Lampen zum
-
Telefonjoker 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 Congress noch
mal auf dich zukommt, in welchem …
-
Heiko: auf dem Congress, ich renn
eigentlich immer rum
-
Herald: Stehst unter deinen
Namen im DECT-System?
-
Heiko: Ja, ich stehe unter meinem Namen im
DECT-System. Die Slides werde ich auch
-
gleich dann by Chaos-West beim Talk noch
hinzufügen, wer sie sich noch mal angucken
-
will. Und in den Slides steht auch später
noch der Link zum GitHub-Repo mit den
-
Slides selber.
Herald: Ja, das ist ja vorbildlich! Da
-
würde ich sagen volle Punktzahl, keine
Fragen mehr, an der Stelle dann aber
-
nochmal ein Applaus, weil so einfach
lassen wir keinen von der Bühne gehen.
-
Applaus
-
Abspannmusik
-
Untertitel erstellt von c3subtitles.de
im Jahr 2020. Mach mit und hilf uns!