000 Start!

makandra bietet ein bezahltes Trainee-Programm für DevOps / Cloud-Engineers: http://start.makandra.de
Wir arbeiten für unsere Kunden häufig als Infrastruktur- und Operations-Spezialisten gemeinsam mit Entwickler-Teams und sorgen für skalierbare, ausfallsichere Architekturen. Wir entwickeln und implementieren Konzepte für Deployment, Monitoring, Backup in traditionellen RZ-Umgebungen ("On premise") und vor allem in Private und Public Cloud-Umgebungen.

Unsere Kunden schätzen an unseren DevOps-Teams technisch extrem ...

100 Grundlagen aus der Web-Entwicklung [3.5 PT]

Bei makandra entwickeln wir seit 2009 Web-basierte Anwendungen und haben im Trainee-Programm für unsere Web-Entwickler vieles aufgeschrieben, dass Du für deine Ausbildung ebenfalls wissen solltest.

Arbeite durch die folgende Liste an Inhalten:

200 Linux [2 PT]

Wir arbeiten bei makandra alle auf Linux-Betriebssystemen und bedienen im DevOps- & Cloud-Bereich primär Kunden, die ebenfalls auf Linux als Ziel-System setzen.

Entsprechend benötigen wir tiefgehendes Wissen über Linux.

In diesem Kapitel lernst Du alles zum Hintergrund und ein wenig Theorie zu Prozessen, Speicher, Konfiguration und viel praktisches zur Konfiguration, Ressourcenüberwachung und abschließend eine Anleitung zur Performance-Analyse von Unix-basierten Systemen in 60 Sekunden.

Falls du mit Linux noch nicht vertraut bist, lernst ...

201 Das Linux Dateisystem [1 PT]

In diesem Kapitel wollen wir uns die Struktur des Linux Dateisystems ansehen. Damit ist in diesem Fall nicht das Dateisystem gemeint, mit dem z.B. die Festplatte formatiert wird, sondern die Struktur der Verzeichnisse und Dateien eines Linux Systems.

Ziele

  • Du weißt in welchem Verzeichnissen du nach welchen Dateien suchen musst
    • wo liegen ausführbare Programme?
    • wo findet man logs?
    • wo liegen libraries?
    • wo findet man Konfiguration?
  • Du weißt was es mit /sys, /dev und /proc auf sich hat
    • Du hast dir die Inhalte die...

202 Linux-Prozesse [1 PT]

Wir wollen im Detail verstehen, wie in Unix-Systemen Prozesse gehandhabt werden und wie wir Prozesse aus dem Userland behandeln können.

Ziele

  • Informationen über laufende Prozesse darstellen
  • Die dargestellten Informationen verstehen
  • Prozesse beenden
  • Wie sehe ich laufende Prozesse, wieviel Ressourcen nutzt ein Prozess
  • Was ist nice, renice und wie funktioniert das
  • Was ist CPU affinity
  • Was ist der Unterschied zwischen Prozessen und Threads

Inhalte

Die notwendigen Bücher hat makandra für seine Trainees erworben und du fin...

203 Ressourcen-Nutzung [1 PT]

Wir wollen verstehen, welche Hardware-Ressourcen uns zur Verfügung stehen und wie wir mögliche Engpässe und Probleme identifizieren können. Grundsätzlich dreht sich diese Frage in der Regel um die Anzahl der zur Verfügung stehenden CPUs, Hauptspeichers, Festplatten und Netzwerkkapazitäten.
Manche Ressourcen-Limits werden auch aus Sicherheitsgründen vom Betriebssystem eingezogen, beispielsweise per ulimit oder fs.file-max. Ressourcen können auch mit cgroups limitiert werden. Dazu lernst du später noch mehr.

Ziele

  • Du kennst die vers...

204 Linux Filesystems und Verschlüsselung [2 PT]

Unter Linux gibt es mehrere Dateisysteme. Es ist gut einen Überblick zu haben welche existieren und wie man die Dateisysteme verschlüsselt.

Ziele

  • Du kennst die üblichen Dateisysteme ext4, btrfs, zfs und xfs und weißt wann man diese üblicherweise einsetzen möchte (und wann nicht)
  • Du weißt was journaling bedeutet und warum man das haben möchte
  • Du weißt was copy-on-write ist und warum das in Zusammenhang mit Snapshots praktisch ist
  • Du weißt was Fragmentierung ist und wann und wo es bedeutsam ist
  • Du weißt was LVM ist u...

205 Linux Kernel Parameter [0.5 PT]

Linux Kernel Parameter werden üblicherweise schon zur Compile und Startzeit mit brauchbaren Default-Werten geliefert. Allerdings muss man, je nach Software, die auf den Systemen läuft, und für was diese eingesetzt werden, manchmal die Parameter auch anpassen.

Ziele

  • Du weißt, wie man Kernel Parameter ausliest
  • Du weißt, wie du Kernel Parameter setzt
  • Du kennst ein paar exemplarische Anwendungsbeispiele für das modifizieren von Kernel Parametern
  • Du weißt, was der Unterschied zwischen Kernel Parametern und Kernel Command Line Paramete...

206 SSH [0.5 PT]

Ziele

Du kannst folgende Fragen beantworten:

  • Was ist SSH, wie funktioniert es, auf welchem IP-Protokoll baut es auf, auf welchem Port läuft es?
  • Was ist OpenSSH?
  • Was ist ein Server-Fingerprint und wie sehen Fehler beim Abgleich aus?
  • Was ist public key-Authentfizierung, wie konfiguriert man es am Server, wie hinterlegt man öffentliche Schlüssel für Benutzer?
  • Was ist ein Bastion- oder Jump-Host und warum verwendet man das?
  • Wie funktionieren scp und rsync?
  • Wofür sind die Werkzeuge ssh-keygen, ssh-agent, ssh-add?
  • Was...

207 Netzwerke [4 PT]

Schau dir den unter Inhalte verlinkten Udemy Kurs an.
Die Zugangsdaten für Udemy bekommst Du von deinem Mentor.
Überspring Inhalte, die Du schon kennst.

Inhalte:

Die verlinkten Artikel des TCP/IP Guide haben oft mehrere Seiten. Du kannst oben/unten jeweils sehen auf welcher Seite du bist und auf die nächste wechseln.
Wir haben auch eine Variante des TCP/IP Guide in unserer Bibliothek, falls du längerfristig mit dem Buch arbeiten möchtest.

208 Systemd [3 PT]

Der Begriff systemd wird immer umfassender da es sich nicht mehr (wie ursprünglich) nur um ein init Systemd handelt, sondern immer weitere Komponenten hinzugefügt wurden. Wir werden uns nicht mit allen Komponenten beschäftigen, aber mit den wichtigsten für deine Arbeit.

Ziele

  • Du weißt, für was man ein init System benötigt
  • Du weißt, welche Alternativen/Vorgänger es zu systemd gibt
  • Du kennst die wichtigsten Komponenten von systemd (core und ancillary) und für was diese da sind
  • Du weißt, was eine systemd unit ist
  • Du we...

220 Virtualisierung [2 PT]

Vor 20 Jahren begann der große Durchbruch der Virtualisierung. Heute sind virtuelle Server kaum noch wegzudenken, da diese eine deutlich flexiblere Nutzung der darunter liegenden Hardware erlauben. VMs bieten auch einen einfachen Weg ohne allzu hohe Kosten Systeme voneinander zu isolieren.

Virtualisierung hat übrigens wenig bis nichts mit Containern zu tun. Zu Containern lernst du später noch mehr.

Ziele

Du weißt...

  • was Virtualisierung ist und wo der Unterschied zu Containern liegt
  • was ein Hypervisor ist und kannst 3 davon a...

221 LXC/LXD [2 PT]

Als DevOps Engineer kann es häufiger vorkommen, dass du ein lokales Testsetup bauen musst, um eine bestimmte Software oder ein Tool zu testen. Dafür bieten sich VMs oder Linux Container an. In diesem Kapitel lernst du, wie du lokal Linux Container aufsetzen und konfigurieren kannst.
Da man seine Linux Container auch effizient konfigurieren möchte, machen wir auch einen Ausflug zu Cloud-Init, das dir auch an anderen Stellen noch gute Dienste leisten wird.

Ziele

  • Du hast den Unterschied zwischen VMs und Linux Containern verstanden
  • Du ha...

222 Kurze Einführung in Docker und Container [1 PT]

Da wir für einige Übungsaufgaben Dockercontainer benötigen lernst du in diesem Kapitel die Basics zu Docker. Hier vermitteln wir nur sehr oberflächliches Wissen. Details lernst du später, wenn wir uns intensiver mit Containern und deren Orchestrierung beschäftigen. Hier soll es nur darum gehen, dass du verstehst was Container an sich sind und wie du diese für deine Testsetups verwenden kannst. Container sind übrigens nicht gleichbedeutend mit docker. Wir verwenden Docker in diesem Fall, weil es am weitesten verbreitet ist und die Wahrschei...

223 Firewalling mit iptables [0.5 PT]

Du musst kein Netzwerkspezialist sein oder iptables in- und auswendig kennen. Du solltest aber die Grundlagen verstanden haben. Spätestens wenn du dir ansiehst wie z.B. Kubernetes Netzwerke aufspannt wirst du dieses Wissen benötigen.

Ziele

  • Du kennst die grundsätzlichen "Bestandteile" von iptables
    • Tables
    • Chains
    • Rules
    • Targets
  • Du verstehst was drop, reject, return und accept machen.
  • Du kennst die 4 default tables
  • Wie kannst du dir iptables Regeln für den Filter table anzeigen lassen?
  • Wie kann eine s...

230 HTTP Protokoll und Webserver [2.5 PT]

Wir arbeiten in einem Umfeld in dem sich fast alles um das Web und HTTP dreht. Wir betreiben Webseiten und benutzen Dienste die über HTTP REST APIs kommunizieren. Es ist essenziell ein gutes Verständnis für HTTP zu haben und zu verstehen wie es funktioniert. Vor allem wenn es darum geht Probleme zu debuggen.

Ziele

HTTP

  • Du kennst die 4 Bausteine, aus denen die meisten modernen Webapplikationen bestehen. Außerdem weißt du für was welcher Baustein da ist:
    • HTML
    • CSS
    • Javascript (Browser, Frontend)
    • "Backend" Applikation
      -...

231 SSL/TLS, Encryption und Hashing [1.5 PT]

Im Jahr 2022 ist beinahe der gesamte Traffic im Internet verschlüsselt. Das geschieht primär mit TLS. Da wir Webserver, Loadbalancer und sonstige Komponenten, die Verbindungen entgegennehmen, konfigurieren, liegt auch die TLS Konfiguration dieser Endpunkte in unserer Hand. Deswegen ist es entscheidend, ein gutes Verständnis davon zu haben, wie die Verschlüsselung des Traffics funktioniert.

Ziele

  • Du verstehst den Unterschied zwischen Symmetrischer und Asymmetrischer Verschlüsselung
  • Du weißt, für was Hashing eingesetzt wird und wo es b...

232 (Postgre)SQL basics [1 PT]

Mit SQL spricht man mit relationalen Datenbanken.

Ziele

  • Verstehe die folgenden SQL Befehle
    • SELECT
      • WHERE
      • ORDER
      • INNER JOIN, LEFT JOIN
      • GROUP BY
      • LIMIT
    • UPDATE
    • INSERT and INSERT ... SELECT
    • DELETE
    • EXPLAIN ANALYZE
  • Du weißt was eine transaction ist.
  • Du verstehst was ein index ist
    • Was ist der Zweck eines index?
    • Für was kann ich den Index benutzen?
    • Was ist ein "multiple column index"? Ist die Reihenfolge der Spalten relevant?
  • Du weißt wie du dir die...

300 Code, Scripts und Automatisierung

Im DevOps Bereich bist du insbesondere damit beschäftigt Infrastruktur zu bauen und zu betreiben. Weil man große Infrastukturen nur schwer manuell betreiben kann und sich damit zahlreiche Probleme und Nachteile ins Haus holt automatisiert man die meisten Aufgaben weitgehend. Das passiert auf unterschiedlichen Wegen:

  • wiederkehrende Aufgaben mit einzelnen Schritten werden in Scripts abgelegt (Bash, Python, Ruby, Go)
  • Konfiguration von Servern verwaltet man mit Configuration Management (Ansible, Puppet, Chef, Saltstack)
  • Cloud Infrastuktur...

301 Ruby Basics [2 PT]

Based on the Ruby Basics Card in the developer Curriculum

Ruby is the programming language we use on the backend.

Goals

After finishing this lesson you should be able to read and write simple Ruby programs.

Gain an understanding of the following concepts:

  • Working with basic datatypes: String, Integer, Float, Boolean, Array, Hash
  • Control flow: if, each, case, break...
  • Functions: def, return, implicit return in methods and blocks
  • Errors, `ra...

310 Configuration Management und Ansible Basics [3 PT]

Um Server Infrastrukturen schnell und reproduzierbar konfigurieren zu können setzt man auf so genannte Configuration Management Lösungen. Die bekanntesten sind Puppet, Chef, Salstack und Ansible. Dabei hat Ansible den größten Verbreitungsgrad, die geringste Einstiegshürde und eine flache Lernkurve.

Ziele

  • Du hast die Konzepte von Configuration Management verstanden.
  • Du verstehst, warum man den Source Code von Configuration Management im Git haben möchte.
  • Du hast den Unterschied zwischen deklarativem und prozeduralem/imperativem Co...

311 Nodes mit Ansible Managen [4 PT]

In dieser Card machst du einige Übungsaufgaben um Linux Server mit Ansible zu verwalten.

Da es vermutlich zu aufwendig ist alles von 0 auf selbst zu erstellen, solltest du prüfen, ob du fertige roles von der Ansible Galaxy verwenden kannst.

Aufgaben

Erstelle ein git Repository ähnlich zu dem aus dem vorherigen Kapitel. Am besten auch mit pre-commit hooks.
Für die einzelnen Arbeitsschritte solltest du Merge Requests erstellen, die dein Mentor reviewt. Der Name des Merge Requests und des Feature Branches s...

320 Advanced Git [2 PT]

Siehe Advanced git [2d] aus dem Developer Curriculum.