Diese Webseite nutzt nur technisch notwendige Cookies.

Server Automatisierung – 3 Methoden zum Zeit sparen

Server können schnell viel Arbeit machen.

Informatiker sind faul, deshalb automatisieren diese alles was geht.

So geht Server Automatisierung …

Warum den Server automatisieren?

Docker automatisert auch

Wer faul ist, automatisiert! Was ein Computer kann, muss ein Mensch nicht machen. Manuelle Schritte sind fehleranfällig. Diese Aufgaben eigenen sich für die Automatisierung:

  • Einrichtung: Das Einrichten Deines Desktopcomputers kann Stunden oder Tage dauern. Die Installation von Business Anwendung auf Server können noch viel komplexer sein. Wenn der Prozess einmal automatisiert sind, kann die Automation auf andere Hardware ausgeführt werden, um schnell die Server für die Produktion bereitzumachen.
  • Wartung: Jeden Tag und jede Woche fallen Aufgaben am Server an. Diese Aufgaben können wir von Hand machen (Befehle eingeben) oder diese auch automatisch nach einem Zeitplan ausführen. Nur im Fehlerfall benachrichtigt der Server uns. Das Ergebnis loggt das Gerät.
  • Löschung: Wenn ein Server zu alt ist oder nicht mehr gebraucht wird, muss dieser dekommissionierten werden. Der Verantwortliche muss dazu die Inhalte löschen und die Anfragen an den neuen Server umleiten. Die Summe aller Schritte kann aufwendig sein und deshalb sollte auch hier automatisiert werden.
  • Backups: Backups sind das Brot und Butter für Deine IT-Sicherheit. Daten sollen unabsichtlich oder absichtlich nicht verschwinden. Das Backup selbst ist eine stupide Aufgabe, die einfach nur gemacht werden muss. Backup Software ist eine Automatisierung, welche Dir dabei hilft.

Welche Typen der Automatisierung gibt es?

Vollautomatisch

Voll im Trend sind Systeme, welchen jeden Schritt von Start bis Ende automatisieren. Ganze Racks mit Servern kann der Engineer mit einem Klick einsatzfähig machen. Keiner hat Lust darauf immer die gleichen Befehle einzutippen. Diese Systeme sind für Cloud-Anbieter und große Unternehmen interessant, welche Hardware-Kapazitäten aufstocken, ändern oder entfernen.

Ansible für die Voll Automation

Manuell mit einzelnen Skripten

Auf der anderen Seite haben wir die Mini-Automatisierung. Ein Programm, welche 2 oder 3 Aufgaben zusammen erledigt ist bereits eine Form der Automatisierung. Manuelle Arbeit ist bei manchen hochkritischen Systemen gewollt. Hier wird jeder Arbeitsschritt 5 Mal geprüft.

Schrittweise automatisiert

Playbooks bilden passende Balance. Wir wollen flexibel auf Situationen reagieren und Server wie mit Klemmbausteinen zusammensetzen. Meist sind die Grundbausteine ähnlich, aber wir wollen mit Spezial Playbooks, das System an seine zukünftige Aufgabe anpassen.

Wann soll ich nicht automatisieren?

Schnell kannst Du in die Falle tappen alles zu automatisieren. Es gibt Gründe nicht alles zu automatisieren:

  • Ständige Veränderung: Die IT-Welt wandelt sich schnell. Viele neue Programme drängen auf den Markt und bestehende Produkte erhalten viele Funktion-Updates, Änderungen und Sicherheitspatches. Die Abhängigkeiten sind komplex und schwer zu durchschauen. Eine Automation ist in der Regel recht starr. Wir nehmen an, dass immer die gleichen Abhängigkeiten immer gleich funktionieren. Ein einziger Breaking Change bei einer Teilkomponente, macht unsere Automatisierung kaputt.
Breaking Changes machen kein Spaß
Breaking Changes machen kein Spaß
  • Hochkritische Systeme: Das Domain Name System (DNS) ist eines der zentralen Systeme in unserem Internet. Wenn hier Fehler passieren, haben wir keine Internetverbindung, solange der Fehler nicht gefunden ist. Hier brauchen wir statt einer Automation 3 Augenpaare zum Prüfen. Testsysteme, die baugleich sind, erhalten die Änderungen und wir beobachten was passiert.
  • Geringe Stückzahl vs. Aufwand der Automation: Automation ist eine Form der Arbeitseinsparung. Trotzdem müssen wir erst automatisieren. Das kostet Zeit. Bis eine Automation fehlerfrei durchläuft und alle Randfälle berücksichtigt sind, kann es dauern. Wenn wir nur 2 Server haben, welche die Automation erhalten, kann es sein, dass der manuelle Weg (mit Doku) der Schnellere ist.
  • Fehlende Kontrolle: Automation passt alles im Gleichschritt an. Vielleicht ist aber unsere Intention aus unserer Hardware und Software das Beste herauszuholen. Viele Individualisierungen pro Gerät sprechen gegen eine Automation. Es kann eine gute Strategie sein, alle Maschinen auf einen Stand zu bringen (Grundkonfiguration) und dann die einzelnen Maschinen zu optimieren.

Methode 1 – Skripte

Skripte sind die Zusammenstellung von Kommandos. Bash erlaubt Kontrollstrukturen wie Schleifen und Verzweigungen. Sollen Kommandos mehrfach ausgeführt werden? if-else Strukturen erlauben Verzweigungen.

#!/bin/bash

# Add repos
sudo apt-get install python3-launchpadlib software-properties-common -y
sudo apt-add-repository contrib non-free -y
sudo apt-get update

Dieses Beispiel zeigt die Installation von 3 Programmen in einem Schritt. Das Script fügt eine Software Repo hinzu und zieht sich die Metadaten. Das Skript können wir z. B. install.sh benennen.

Skripte ausführen

Wir kopieren die sh-Datei auf das Zielsystem. Nun erlauben wir die Ausführung mit chmod +x install.sh und lassen das Skript laufen mit ./install.sh. Das System muss Debian-basiert sein und apt-get installiert haben. Führen wir das Skript in einem anderen (alten) Linux– oder BSD-System aus, läuft das Skript aber bewirkt nichts.

Cron Jobs

Skripte oder Programme kannst Du mit einem Cron Job nach einem Zeitplan ausführen

crontab -l zeigt die Cron Jobs an

# m h  dom mon dow   command
0 15 * * * /home/steffen/databasebackups/backup.sh
0 18 * * * /home/steffen/bin/docker restart $(/home/steffen/bin/docker ps -q)

und crontab -e öffnet den Editor Deiner Wahl zum Bearbeiten.

FeldWertebereichBeschreibung
Minute0-59Minute der Stunde, in der der Job läuft
Stunde0-23Stunde des Tages, in der der Job läuft
Tag1-31Tag des Monats, an dem der Job läuft
Monat1-12 oder JAN-DECMonat des Jahres, in dem der Job läuft
Wochentag0-7 oder SUN-SATWochentag, an dem der Job läuft
BefehlDer auszuführende Befehl oder das Skript

Beispiele für Cron Jobs

SyntaxBeschreibung
* * * * *Läuft jede Minute
*/5 * * * *Läuft alle 5 Minuten
0 * * * *Läuft jede Stunde
0 0 * * *Läuft täglich um Mitternacht
0 0 * * 0Läuft jeden Sonntag um Mitternacht
0 0 1 * *Läuft am ersten Tag jedes Monats um Mitternacht
@rebootLäuft einmal beim Systemstart
@hourlyLäuft stündlich
@dailyLäuft täglich
@weeklyLäuft wöchentlich
@monthlyLäuft monatlich

Methode 2 – Imaging

Eine andere Automatisierung ist das Image erstellen und verteilen. Wir richten ein System mit allen Einstellung und Programmen ein. Wir schaffen uns das Grundimage.

Dieses sicheren wir als eine ISO-Datei und laden es auf alle anderen Geräte. Wir erstellen eine 1:1 Kopie. Wenn die Kopie erstellt ist, müssen wir die Netzwerkadressen und den Computernamen anpassen. Dieses Verfahren ist nicht immer die erste Wahl, aber eine Überlegung wert.

Gnome Disks ISO


Gnome Disks Imaging
Gnome Disks Imaging

Verwende ein Live Linux (Debian / Ubuntu), um es zu vereinfachen. So geht es mit Gnome Disks :

  1. Gnome Disks öffnen: Öffne das Anwendungsmenü und suche nach „Gnome Disks“ oder „Laufwerke“. Starte die Anwendung.
  2. Laufwerk auswählen: Wähle das Laufwerk aus, von dem du ein ISO-Image erstellen möchtest.
  3. Laufwerkseinstellungen öffnen: Klicke auf das Zahnradsymbol (Einstellungen) für das ausgewählte Laufwerk. Wähle „Create Disk Image“ aus dem Dropdown-Menü.
  4. Zielort und Dateiname festlegen: Wähle den Speicherort und den Namen für die ISO-Datei. Stelle sicher, dass die Dateiendung .iso ist.
  5. Abbild erstellen: Klicke auf „Starten“ oder „Erstellen“, um den Vorgang zu beginnen. Warte, bis der Prozess abgeschlossen ist. Dies kann einige Minuten dauern, je nach Größe des Laufwerks.
  6. Fertig: Nach Abschluss des Vorgangs findest du die ISO-Datei am angegebenen Speicherort.

Methode 3 – Ansible / Puppet

Programme wie Ansible / Puppet heben die Automatisierung auf eine neue Stufe. Große Unternehmen nutzen die Software, um von einem Master (Control Node) Skripte an die Clients (Managed Nodes) auszusenden. Wir administrieren das Gesamtsystem, indem wir Ansible Playbooks (Skripte) schreiben, welche auf den Clients die gewünschten Änderungen durchführen können.

Ansible Schnellstart

Als Python Modul kannst Du Ansible installieren:

pip install ansible

Erstelle einen Ordner und füge erstelle ein inventory.ini mit den IPs von Deinen Managed Nodes:

[myhosts]
192.178.168.2
192.178.168.23
192.178.168.43

Die Verbindung prüfst Du mit einem Ping

ansible myhosts -m ping -i inventory.ini

Die Automation (Playbooks) führst Du mit Deinem Inventory aus:

ansible-playbook -i inventory.ini playbook.yaml

Die playbook.yaml sieht so aus:

- hosts: myhosts
  become: yes
  tasks:

    - name: update
      apt: update_cache=yes

    - name: Install Nginx
      apt: name=nginx state=latest

      notify:
        - restart nginx

  handlers:
    - name: restart nginx
      service: name=nginx state=reloaded

Wir installieren Nginx auf allen IPs, welche unter [myhosts] stehen. Dazu führt apt ein Update aus und installiert dann Nginx. Nginx wird zum Schluss neu gestartet. Diese 3 Befehle sendet Ansible an die Managed Hosts.

Lass uns wissen, was du denkst! War dieses Tutorial /Beitrag hilfreich, oder hast du noch brennende Fragen? Schreibe einen Kommentar und werde Teil unserer wachsenden Community. Teile Deine Erfolge, Herausforderungen und Tipps – gemeinsam schaffen wir Großes im Bereich Security und Coding!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

get rss abo

Jetzt
Abbonnieren
academy

Erhalte Free
Security Kurs

Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!