Mit Ansible zur automatisierten Oracle Datenbank: Konfiguration auf Knopfdruck
Wer regelmäßig mit Oracle Datenbanken arbeitet, kennt es: Benutzer:innen anlegen, Tablespaces konfigurieren, Privilegien setzen. Dies alles sind oft wiederkehrende Aufgaben, die wertvolle Zeit kosten und dennoch fehleranfällig bleiben. Ansible bietet hier eine elegante Lösung. Als agentloses Automatisierungstool lässt sich damit die gesamte Datenbankkonfiguration als Code abbilden: und dies besonders schnell, wiederholbar und nachvollziehbar.
Eine offizielle Ansible Collection von Oracle?
Viele würden erwarten, dass es eine offizielle Ansible Collection für Oracle Datenbanken gibt. Doch von dieser fehlt jede Spur. Oracle selbst stellt auf Ansible Galaxy lediglich eine Collection für die Oracle Cloud Infrastructure (OCI) zur Verfügung. Diese bietet viele verschiedene Module für die automatisierte Bereitstellung und Konfiguration von Cloud-Ressourcen. Wer aber die Oracle On-Premises Datenbank automatisieren will, sei es lokal, per VM oder Docker, muss sich an anderer Stelle umsehen.
Die Lösung
Glücklicherweise gibt es mit opitzconsulting.ansible_oracle eine Open-Source Ansible Collection, die von dem privaten Unternehmen Opitz Consulting auf Ansible Galaxy zur Verfügung gestellt wird. Ursprünglich wurde die zugrunde liegende Codebasis von Mikael Sandström (oravirt) entwickelt und im Rahmen des Projekts ansible-oracle auf GitHub veröffentlicht. Mittlerweile wird die Weiterentwicklung überwiegend von Mitarbeiter:innen der Opitz Consulting übernommen, die das Projekt pflegen und unter eigenem Namen auf Galaxy bereitstellen.
Die in der Collection enthaltenen Ansible-Module ermöglichen unter anderem:
- Anlegen, Löschen und Konfiguration von Benutzer:innen
- Verwalten von PDBs, Rollen und Rechten
- Ausführen von SQL- und PL/SQL-Skripten oder -Befehlen
- Erstellen von Tablespaces, Directories und Profilen
- Konfiguration von Parametern
- Einspielen von Oracle-Patches (OPatch und Datapatch)
Doch aufgepasst: Die Lösung hat auch ein paar Stolperfallen, die bei der Benutzung beachtet werden müssen.
Herausforderungen bei der Nutzung
Trotz ihres großen Potenzials bringt die opitzconsulting.ansible_oracle-Collection auch einige Herausforderungen mit sich – insbesondere im Hinblick auf die Dokumentation und Wartung.
Da es sich nicht um eine offizielle Collection von Oracle handelt und das Projekt von einer vergleichsweise kleinen Community gepflegt wird, ist die Dokumentation an vielen Stellen unvollständig und an einigen Stellen sogar fehlerhaft. Teilweise finden sich identische Textbausteine in unterschiedlichen Modulen, die offenbar aus anderen Quellen übernommen, jedoch nicht angepasst wurden. Darüber hinaus fehlen häufig detaillierte Beschreibungen zu optionalen Parametern oder validen Wertebereichen.
Gerade für Einsteiger:innen kann dies die Nutzung erschweren, da wichtige Informationen nicht unmittelbar in der Modulbeschreibung auffindbar sind. In der Praxis führt dies dazu, dass man zur Fehlersuche oder genaueren Funktionsanalyse auf den Quellcode der Python-Module zurückgreifen muss. Auch wenn sich viele der zulässigen Parameter dort mit etwas Erfahrung oder technischer Neugier identifizieren lassen, stellt dies einen unnötigen Mehraufwand dar. Durch eine bessere Dokumentation ließe sich die Benutzerfreundlichkeit erheblich optimieren.
Grundsätzlich gilt: Bei Open-Source-Modulen empfiehlt es sich immer, vor dem produktiven Einsatz einen Code-Review durchzuführen. So lässt sich sicherstellen, dass alle verwendeten Funktionen, Parameter und Abhängigkeiten den eigenen Sicherheits- und Qualitätsanforderungen entsprechen. Wer hier auf professionelle Unterstützung setzen möchte, kann auf die Expertise der ORDIX AG zurückgreifen.
Wie sieht die Anwendung in der Praxis aus?
Die praktische Anwendung der opitzconsulting.ansible_oracle-Collection lässt sich exemplarisch am Modul oracle_directory veranschaulichen. Die Erstellung eines Oracle Directorys ist dabei ein typisches Beispiel für eine administrative Routineaufgabe, die sich mit Ansible automatisieren lässt. Im folgenden Beispiel wird mithilfe des Moduls oracle_directory das Oracle-Directory ORDIX_DIR im Pfad /opt/ordix erstellt. Die Verbindung erfolgt über den Benutzer sys mit SYSDBA-Rechten auf der Pluggable Database pdb1 des Zielhosts.
- name: Oracle Directory | Create Directory
opitzconsulting.ansible_oracle.oracle_directory:
hostname: "{{ hostname }}"
port: 1521
service_name: pdb1
user: sys
password: ordix
mode: sysdba
state: present
directory_name: ORDIX_DIR
directory_path: /opt/ordix
directory_mode: normal
Für die Konfiguration werden in der Regel zwei Gruppen von Parametern benötigt:
- Verbindungsparameter, z. B.:
- hostname – Name oder IP-Adresse des Servers
- port - Port der Datenbankverbindung (standardmäßig 1521)
- service_name - Service-Name der Ziel-Datenbank
- user - Benutzername, mit dem die Verbindung hergestellt wird
- password – Passwort der/des angegebenen Benutzer:in
- mode – Verbindungsmodus, etwa sysdba oder normal
Diese dienen der Verbindung zur gewünschten Datenbankinstanz und sind bei den meisten Modulen in ähnlicher Form erforderlich.
- Spezifische Konfigurationsparameter für das Directory:
- state – legt fest, ob das Directory erstellt oder gelöscht werden soll
- directory_name – definiert den Namen des Oracle Directorys
- directory_path – gibt den physischen Pfad an, unter dem das Directory abgelegt wird
- directory_mode – steuert das Verhalten bei bereits bestehenden Directories, z. B. per enforce-Option
In der Theorie klingt das einfach, in der Praxis stößt man jedoch schnell auf Probleme:
Ein Blick in die offizielle Modulbeschreibung auf Ansible Galaxy zeigt, dass genau diese zentralen Parameter teils unvollständig, falsch oder gar nicht dokumentiert sind. So fehlen beispielsweise Hinweise zu directory_path oder directory_mode, stattdessen wird fälschlicherweise ein nicht existierender Parameter path aufgeführt. Wer sich allein auf die Dokumentation verlässt, läuft Gefahr, auf vermeidbare Fehlermeldungen zu stoßen.
In solchen Fällen empfiehlt es sich, direkt den Python-Quellcode des Moduls zu prüfen. Auch ohne tiefgehende Programmierkenntnisse lässt sich hier schnell nachvollziehen, welche Parameter das Modul tatsächlich erwartet und wie diese benannt sind.
Anhand dieses Ausschnittes wird deutlich, welche Parameter das Modul akzeptiert, auch wenn sie in der offiziellen Dokumentation nicht korrekt angegeben sind. Was allerdings fehlt, sind erläuternde Kommentare oder Anwendungsbeispiele, die den Einstieg erleichtern würden.
Dieses Beispiel verdeutlicht: Die Module der Collection sind technisch ausgereift, doch die mangelhafte Dokumentation erfordert oft zusätzliche Recherche.
Fazit
Mit Ansible lassen sich auch komplexe Oracle Datenbanken zuverlässig und reproduzierbar konfigurieren. Dies ist ein erheblicher Mehrwert für jede Umgebung, in der Konsistenz, Geschwindigkeit und Wartbarkeit gefragt sind.
Zwar fehlt bislang eine offizielle Unterstützung seitens Oracle für die Automatisierung der Datenbankkomponenten, doch mit der opitzconsulting.ansible_oracle-Collection steht eine praxisnahe und funktional breite Open-Source-Lösung zur Verfügung.
Allerdings sollten sich Anwender:innen bewusst sein, dass die Nutzung derzeit noch ein gewisses Maß an technischer Eigeninitiative erfordert, insbesondere aufgrund der lückenhaften Dokumentation. Wer bereit ist, sich mit den Modulen im Detail auseinanderzusetzen und notfalls in den Quellcode zu blicken, erhält ein mächtiges Werkzeug für die Automatisierung von Oracle-Datenbanken.
Ihr wollt eure Datenbankprozesse automatisieren? Meldet euch bei uns. Wir helfen euch, Ansible effizient in eure Umgebung zu integrieren.
Seminarempfehlungen
KONFIGURATIONSMANAGEMEN MIT ANSIBLE [ANSIB-01]
Mehr erfahrenANSIBLE FÜR FORTGESCHRITTENE [ANSIB-02]
Mehr erfahrenStudent
Kommentare