Configuration Management (Admin Guide)

From HPC Wiki
Admin Guide Configuration Management
Jump to: navigation, search

Ansible

Ansible is a software to configure many types of IT systems "non-invasively", meaning there is no need for a client of any kind on the system being managed. For Linux systems, all that is normally needed is `ssh` access and a method to execute commands as root (e.g. `sudo`, `su`, direct root login, or similar). Ansible is python based but constructs most scripts not on the target host, but the one running ansible, and then copies everything to the server and runs it there directly. ansible is easily configurable using `yaml` and has thousands of modules (roles), many of which are included in the standard package, and for all else there is Ansible Galaxy. One of the great features of ansible is that many roles encapsulate all details of the target operating system and can thus be used obliviously, for example package uses `yum`,`dnf`,`zypper` or `apt` depending on the Linux distribution. One can also manage network switches and other hardware using ansible.


Ansible vs. Puppet

With puppet you have to create & maintain a certificate for each agent node. Ansible on the other hand only requires a working SSH connections, which might make it better suited for smaller/local clusters. SSH is usually a necessity anyway and individual certificates for communication within a local network could be an avoidable overhead.


Resources


Puppet

Puppet ist ein Konfigurationsmanagementsystem, welches in regelmäßigen Abständen (standardmäßig 30 Minuten) Soll- und Ist-Zustand von Rechnern abgleicht. Es benutzt eine Client-Server-Architektur, bei der auf jedem Client ein sogenannter Puppet-Agent läuft. Der Soll-Zustand einer Maschine wird über sogenannte Manifeste definiert. Manifeste können wiederum zu Funktionseinheiten (Module) zusammengestellt werden. Diese Module erlauben dann typischerweise die Installation und Konfiguration eines Dienstes (z. B. ein NTP-Dienst). Aufgrund der starken Verbreitung von Puppet gibt es eine große Anzahl an freien Puppet-Modulen. Eine gute Anlaufstation ist immer Puppet Forge. Eine Auswahl an leistungsfähigen, gut konfigurierbaren Modulen ist auf dem der Uni Bonn zu finden.

Foreman

Foreman ist ein Maschinen-Management-Werkzeug. Es stellt sowohl eine Webschnittstelle, als auch ein Kommandozeilenschnittstelle zur Verfügung. Darüber können beispielsweise Neuinstallationen (Bare Metal und VMs), Konfigurationsanpassungen, An- und Ausschalten der Spannungsversorgung und ähnliche Aktionen getätigt werden. Wahlweise können darüber auch DNS und DHCP-Einträge vorgenommen werden. Die Rechteverwaltung erlaubt die granulare Kontrolle darüber, wer welche Ressourcen erzeugen, modifizieren und löschen darf. Darüber hinaus liefert die Weboberfläche auch einen schnellen Überblick, über den "Gesundheitszustand" sämtlicher mit Puppet verwalteter Rechner (z. B. was ggf. bei Puppet-Runs fehlgeschlagen ist) und ein Auditing, was es ermöglicht nachzuvollziehen, wer wann welche Änderung vorgenommen hat. Foreman erlaubt es, den Maschinenpark in Hostgruppen zu unterteilen. In einer Hostgruppen werden typischerweise funktionsgleiche Maschinen (wie z. B. Rechenknoten) zusammengefasst. Hinsichtlich der Strukturierung der Puppet-Manifeste empfiehlt es sich, dem "Role and Profiles"-Schema zu folgen.