System-Management mit Func

Jetzt funkt's

Eine Handvoll Kommandos auf einer großen Anzahl von Systemen abzusetzen, ist ein klassisches Administrations-Problem. Statt mit Schleifen und einer Vielzahl von SSH-Verbindungen zu hantieren, bietet sich in solchen Fällen der Einsatz von Func an.
Strom sparender Computereinsatz hilft nicht zuletzt auch Kosten zu senken. ADMIN 02/2011 geht der Frage nach, was Administratoren tun können, damit ihre ... (mehr)

Schnell mal eben ein Update des Apache-Pakets durchführen oder bestimmte Informationen des Systems einholen. Das ist oft leichter gesagt als getan, gerade dann, wenn Sie diese Aufgabe auf einer ganzen Reihe von Servern durchführen möchten. Ein schneller Workaround besteht im Einsatz einer For-Schleife auf der Kommandozeile. So lässt sich jeweils eine SSH-Verbindung zu den beteiligten Systemen aufbauen und der gewünschte Befehl dort ausführen:

for i in `seq 1 10`; do ssh www$i update httpd; done

Liegt der SSH-Schlüssel des Administrators auf den Systemen, so funktioniert der Aufruf zwar ohne manuelle Authentifizierung, trotzdem wäre eine elegantere Lösung für das Problem wünschenswert.

Abgesichert

Die Software Func [1] (Fedora Unified Network Controller) bietet für das Problem einen dedizierten, authentifizierten sowie verschlüsselten Kommunikationskanal an. Dieser wird zwischen einem zentralen Management-System (dem Overlord) und allen Client-Systemen (den Minions, Listing 1) aufgebaut. Das Tool »certmaster« dient hierbei als zentrale PKI-Instanz, die sich um das Zertifikatsmanagement kümmert.

Listing 1

Korrekte Konfiguration eines Minions

 

Func basiert auf einer Vielzahl von Modulen, die auf jedem Client-System zur Verfügung stehen. Jedes dieser Module bietet bestimmte Methoden an, die sich vom zentralen Management-System oder auch von anderen Client-Systemen aufrufen lassen. Die Module umfassen Methoden zum Ausführen von einzelnen Programmen, der Abfrage von System-Informationen bis zum Reboot der Systeme. Dank der offenen API lässt sich Func sehr leicht durch eigene Module erweitern, das "Hack-Potenzial" ist somit nahezu unbegrenzt.

Installation und Setup

Func ist Teil der Fedora- und EPEL-Software-Repositories. Für andere Distributionen stehen unter [2] ebenfalls die Sources zum Download bereit. Auf dem Management-System gelingt die Installation einfach mittels Yum:

yum install func

Im Anschluss ist mittels »service certmaster start« die PKI-Instanz zu starten. Über die Config-Datei »/etc/certmaster/certmaster.conf« bestimmen Sie, ob Zertifikatsanfragen der Client-Systeme automatisch bearbeitet werden (»autosign=yes« ) oder ob diese Aufgabe manuell zu bewerkstelligen ist:

certmaster-ca --sign www1.virt.tuxgeek.de

Mit »certmaster-ca --list« zeigt das Tool alle noch offenen Zertifikatsanfragen an. »certmaster-ca --list-signed« hingegen listet alle bereits ausgestellten Zertifikate auf. Das CA-Zertifikat, das zum Signieren der Anfragen zum Einsatz kommt, liegt dabei üblicherweise als PEM-Datei im Verzeichnis »/etc/pki/certmaster/ca/« .

Auf den Client-Systemen ist ebenfalls das Paket »func« zu installieren. Über die Konfigurationsdatei »/etc/certmaster/minion.conf« bekommt das System die Information, wie der Name des Mangement-Servers lautet. Das ist wichtig, da nach dem Start des Services »funcd« automatisch eine Zertifikatsanfrage an diesen gesendet wird. Diese kommt dann, je nach Konfigurations des Overlords, entweder unmittelbar oder nach dem manuellen Signieren zurück und landet im Verzeichnis »/etc/pki/certmaster/« .

Von nun an findet sämtliche Kommunikation zwischen dem Overlord und den Minions verschlüsselt statt. Es fließen also keine sensiblen Daten im Klartext über das Netzwerk. Die korrekte Funktionsweise des Clients ist recht leicht mittels Func zu testen:

Damit der Aufruf von Func auch als unprivilegierter Benutzer möglich ist, bietet es sich an, für bestimmte Verzeichnisse POSIX-ACLs zu setzen (Listing 2).

Listing 2

Rechte für nicht privilegierte Benutzer

 

Wer Func gerne automatisch auf all seinen Systemen installieren möchte, kann dies über Kickstart-Profile seines Cobbler-Systems [4] automatisieren. In der Cobbler-Konfigurationsdatei existieren hierfür extra zwei Einstellungen für zukünftige Func-Clients:

# grep '^func' /etc/cobbler/settings
func_auto_setup: 1
func_master: grobi.tuxgeek.de

In der »%packages« -Sektion des Kickstart-Profiles, das zur Installation von neuen Maschinen zum Einsatz kommt, können Sie nun das Cobbler-Template »$func_install_if_enabled« hinzufügen. Dieses installiert das Func-RPM nur dann, wenn zuvor in der Cobbler-Konfigurationsdatei die Anweisung »func_auto_setup« auf 1 gesetzt wurde. In der »%post« -Sektion sorgt schließlich die Zeile »SNIPPET:func_register_if_enabled« dafür, dass sich das Client-System automatisch beim Func-Master registriert. Ist dieser dann noch so konfiguriert, dass er automatisch ein Client-Zertifikat ausstellt, ist das System sofort als Func-Minion einsatzbereit, eine manuelle Konfiguration ist nicht mehr notwendig. Einfacher geht es kaum noch.Es sei noch erwähnt, dass beim Einsatz von Cobbler das Fedora-Repository »Everything« als Distribution vorhanden sein muss, damit die Installation von Func auf Fedora Systemen erfolgreich ist. Für Red Hat Enterprise Linux oder Cent OS ist entsprechend das EPEL-Repository einzurichten:

cobbler repo add --name=el-5-x86_64-epel--mirror=http://download.fedora.redhat.com/pub/epel/5/x86_64

In den gewünschten Kickstart-Profilen können Sie dieses Repository dann bekanntmachen, sodass Pakete aus diesem Repository installiert werden können (hier das Template »$func_install_if_enabled« , aus der »%packages« -Sektion):

cobbler profile edit --name=el5-ksprofile --repos="el-5-x86_64-epel"

Nachdem sichergestellt ist, dass Management-System und Clients miteinander gesichert kommunizieren können, bietet es sich erst einmal an, einen Überblick über die vorhandenen Module eines bestimmten Clients zu bekommen. Hierzu hilft der folgende Befehl weiter:

# func www1.virt.tuxgeek.de call system list_modules

Die Liste sollte auf allen Systemen zumindest die Standard-Module beinhalten. Zu diesen gehören beispielsweise »yumcmd« oder auch »command« . Eine Liste der vorhandenen Methoden zu einem Modul erhält man wie in Listing 3 dargestellt. Ein bestimmtes Paket aktualisiert der folgende Befehl:

Listing 3

Mehrere Methoden pro Modul

 

# func www1.virt.tuxgeek.de call yumcmd update httpd

Entsprechend funktioniert ebenfalls der Zugriff auf Methoden anderer Module.

comments powered by Disqus

Artikel der Woche

Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018