Deployment von OpenNMS mit Ansible

Das OpenSource-Tool Ansible ermöglicht die Automatisierung von Administrationsaufgaben, wie zum Beispiel das Ausrollen von Software auf mehreren Servern oder die Durchführung von Softwareupdates. Ansible wird dabei auf einer Linux-Maschine installiert und greift per SSH auf die verwalteten Zielsysteme zu. Diese können in einem Inventory verwaltet werden, das entweder in einer Konfigurationsdatei hinterlegt oder per Skript generiert wird. Außerdem ist es möglich, manuell einzelne Zielsysteme zu definieren. Auf den konfigurierten Zielsystemen lassen sich dann verschiedene Aufgaben ausführen – zum Beispiel die Installation von Paketen über die Paketverwaltung, die Ausführung eines Kommandos oder die Anpassung von Konfigurationsdateien. Ansible stellt dabei eine Vielzahl an Modulen für die unterschiedlichsten Arten von Zielsystemen bereit. Mehrere Aufgaben werden in einem „Playbook“ zusammengefasst, das dann auf den Zielsystemen ausgeführt wird. Eine ausführliche Einführung in das Thema Ansible bietet die offizielle Dokumentation, die man unter http://docs.ansible.com findet.
Für die Installation von OpenNMS haben wir zwei Ansible-Playbooks erstellt und mit der zugehörigen Dokumentation bei Github abgelegt. Beide Playbooks aktualisieren zunächst das Betriebssystem, installieren und konfigurieren dann den SNMP Daemon und sorgen für eine Synchronisierung mit einem selbst gewählten NTP-Server. Anschließend wird der PostgreSQL Datenbankserver installiert und konfiguriert; zum Abschluss wird OpenNMS mit den Abhängigkeiten JICMP und dem Oracle JDK eingerichtet.
Das Playbook opennms-install-packaging.yml kann für Debian- und RedHat-basierte Betriebssysteme verwendet werden (zum Beispiel: Debian, Ubuntu, RedHat Enterprise Linux, CentOS, Oracle Linux) und verwendet für die Installation die Paketverwaltung (apt oder yum) des Systems. Die benötigten Pakete für OpenNMS, die nicht als Teil der Distribution mitgeliefert werden, werden dabei direkt von dem jeweiligen System aus dem Internet heruntergeladen.
In manchen Umgebungen ist der Zugriff auf das Internet nicht direkt möglich. Hier kann man das Playbook opennms-install-archive.yml verwenden. Es funktioniert unter Debian-, RedHat- und SUSE-basierten Distributionen und installiert OpenNMS mit den Abhängigkeiten Oracle JDK und JICMP aus Archiv Dateien, die vorher heruntergeladen werden müssen. JICMP und das Oracle JDK kann man dabei direkt als .tar.gz Archiv herunterladen. OpenNMS muss zunächst aus den Quellen ausgecheckt und kompiliert werden, um ein .tar.gz Archiv zu erhalten.
Um die Playbooks auszuführen, muss Ansible zunächst auf einer Linux-Maschine installiert werden (siehe Ansible Dokumentation), die Zugriff per SSH auf das Zielsystem hat. Die Playbooks können dann mit folgendem Befehl ausgeführt werden:

ansible-playbook -i <Host>, -k opennms-install-packaging.yml
ansible-playbook -i 192.168.0.11, -k opennms-install-packaging.yml

Ansible loggt sich per SSH als Benutzer root ein und verwendet dabei das Passwort, das direkt nach dem Aufruf des obigen Befehls durch Ansible abgefragt wird. Alternativ ist auch die Authentifizierung per SSH-Key möglich. Hierbei kann man den Schalter „-k“ aus dem Befehl weg lassen. Auch ist es möglich, die Playbooks auf der lokalen Maschine auszuführen. Hierbei verwendet man folgenden Befehl:

ansible-playbook -i localhost, -c local opennms-install-packaging.yml

Durch die Playbooks ist es möglich, relativ schnell und einfach standardisierte OpenNMS-Installationen aufzusetzen. Die Playbooks und die zugehörige Dokumentation findet man hier.
Weitergehende Fragen beantworten wir gerne persönlich – E-Mail oder Anruf genügt.

EU Efre Dekra