Ansible / Teil 4 – Administration über Foreman

In Teil 1 der Ansible-Reihe habe ich bereits eine Möglichkeit dargelegt, Linux Maschinen innerhalb von Terminal-Sitzungen von zentraler Stelle aus zu administrieren. In Teil 2 kam dann ergänzend die chice grafische Oberfläche Foreman hinzu, die bislang allerdings ein eher passives Dasein fristete. Dies soll sich nun für all die klickwütigen ändern damit auch sie in den Genuß kommen, Linux Maschinen über Foreman und in voller Farbpracht steuern zu können.

Wir starten auf dem Ansible-Server und suchen uns dort den öffentlichen SSH-Schlüssel des Foreman-Proxys. Dieser sollte unter folgendem Pfad zu finden sein:

/var/lib/foreman-proxy/ssh/id_rsa_foreman_proxy.pub

Diesen Schlüssel benötigen wir im SSH-Verzeichnis des Root-Benutzers auf all jenen Linux Maschinen, die wir mit Hilfe des Foremans administrieren möchten. Dazu legen wir den Inhalt dieses Schlüssels entweder manuell auf dem Zielhost unter …

/root/.ssh/authorized_keys

… in einer neuen Zeile ab, oder benutzen praktischerweise gleich unseren Ansible-Server um diese Aufgabe zu automatisieren (vorausgesetzt er ist betriebsbereit / siehe dazu die vorherigen Teile der “Linux Orchestration mit Ansible”-Reihe). Das Playbook würde hierfür wie folgt aussehen:

- name: Verteilung des Foreman-Proxy SSH-Schlüssels
  ansible.posix.authorized_key:
    user: root
    state: present
    key: "{{ lookup('file', '/var/lib/foreman-proxy/ssh/id_rsa_foreman_proxy.pub') }}"
    path: /root/.ssh/authorized_keys

Weiter geht es in der Foreman-Oberfläche, in der wir auf der Startseite unseren Host über ‘Hosts’ -> ‘Alle Hosts’ suchen und auswählen.

Anschließend landen wir in einer Art Übersichtsseite. Wir klicken auf ‘Schedule Remote Job’.

Von hier aus lassen sich nun diverse Aktionen Remote ausführen, beispielsweise ein Update aller installierten Pakete. Hierzu wäre die Job-Kategorie ‘Packages’ mit der action ‘update’ auszuwählen.

In der Zeile neben ‘Seach Query’ lassen sich noch weitere Maschinen für den Job hinzufügen. Es lässt sich auch ein Zeitplan festlegen, wann und in welcher Frequenz diese Aufgabe ausgeführt werden soll (dazu später mehr). Sind wir mit unserer Auswahl zufrieden, klicken wir auf ‘Absenden’.
Die folgende Seite zeigt uns den Gesamtfortschritt der definierten Aufgabe an und sollte im Idealfall mit einer grünen 100% enden.

Wenn wir auf dieser Statusseite herunterscrollen und auf den jeweiligen Host klicken, lässt sich der aktuelle Job-Verlauf einsehen. Es wird eine Art Terminal Ausgabe präsentiert, die den Fortschritt und eventuelle Fehlermeldungen wiedergibt:

Exit-Status: 0 sieht doch gar nicht schlecht aus!
Neben Paketaktualisierungen, lassen sich auch vorhandene Systemdienste neustarten. Hierzu nutzen wir die Job-Kategorie ‘Services’ und geben wie im untenstehenden Fall den ‘ssh’ Dienst zum neustarten frei:

Das Prozedere ist auch hier dasselbe wie bei der Paketaktualisierung.
Wie eben erwähnt lassen sich die Aufgaben auch mit einer Art Zeitplan versehen. Über die Option ‘Schedule future execution’ können wir einen Zeitpunkt in der Zukunft festlegen …

… mit ‘Set up recurring execution’ wiederum wiederkehrende Zeitpunkte, die entweder endlos wiederholt oder an einem bestimmten Punkt enden:

Neben den beiden vorgestellten Aufgaben, gibt es noch jede Menge weitere Einsatzmöglichkeiten wie das neustarten und herunterfahren der Maschine, die Ausführung von Puppet Mainfesten, die Ausführung von Ansible Kommandos und so weiter und so fort.

Kommentar verfassen

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

Nach oben scrollen