bundlewrap - Einmal Config Management, bitte!

Posted on Fri 03 April 2015 in monitoring

Torsten Rehn hat vor über einem Jahr Bundlewrap als Alternative zur Config Management Systemen wie Chef oder Puppet ins Leben gerufen.

Genauso wie bei allen anderen Configmanagement-Systemen braucht es auch bei bundlewrap Zeit bis man es sinnvoll einsetzen kann.

Was macht man denn nun damit?

Wir alle haben verschiedene Systeme die wir betreuen. Sei es nun das NAS auf Raspberry Pi-Basis, der DLNA Medienserver oder ein Webserver. Bei der Installation der Komponenten passen wir Konfigurationen an und pflegen sie fortan. Dann kommt der neue Server, neue Pi oder ein anderes Spielzeug und wir fangen von vorne an. Dabei wäre es doch so schön einfach alles direkt zu übernehmen ohne wieder Fehler zu suchen, beheben und neue zu finden. Nicht wahr?

Hier kommt bundlewrap ins Spiel. Als Config Management per SSH eignet es sich auch für kleine Umgebungen. In meinem Fall 4 Server (inkl. denen für Freunde), 3 PIs, ein NAS und eine Linux SAT Box.

Die so genannten bundles beschreiben die Konfiguration von Applikationen, des Systems und allem, was einem noch in den Sinn kommt. Beispielsweise wäre es doch angenehm überall dieselbe SSH Konfiguration zu verwenden oder collectd als Monitoring einzurichten.

Installation & erste Schritte

Die Installation von bundlewrapist einfach und als guter Einstieg ist die Dokumentation bestens geeignet.

Erste Bundles

Nach der Einrichtung von bundlewrap und dem Hinzufügen einer ersten Maschine bietet es sich an mit der sshd Konfiguration zu beginnen.

Die bundle.py könnte beispielsweise wie folgt beginnen:

pkt_apt = {
    "openssh-server": {
        "installed": True,
    },
}

actions = {
    'restart_ssh': {
        'command': "service ssh restart",
        'triggered': True,
    },
}

files = {
    "/etc/ssh/sshd_config": {
        "source": "sshd_config",
        'triggers': [
            'action:restart_ssh',
        ],
    },
}

Erweiterte Nutzung

Sobald man einige Bundles erstellt hat und sein Grundsystem verwaltet kommen vielleicht weitere Anforderungen hinzu.

Aus diesem Grund habe ich auf GitHub ein paar meiner Bundles bereitgestellt. Unter Anderem meine collectd und Raspberry spezifischen bundles. Dadurch konnte ich mir letzte Woche bei einem kompletten Server Crash viele Stunden Arbeit sparen.