16. IT-Kongress Neu-Ulm | Ulm

Am 13.11.2025 sind wir als Aussteller auf dem IT-Kongress an der Hochschule Neu-Ulm vertreten. Der IT-Kongress steht unter dem Motto „KI, Cybersecurity & Co. Smarte Lösungen für eine sichere Zukunft“.

Das Programm des IT-Kongresses sowie die Möglichkeit zur Anmeldung finden Sie unter folgendem Link: https://www.it-kongress.com/index.php/programmundanmeldung-2025/

Als IT-Dienstleister mit Schwerpunkt Datenbanken unterstützen wir Unternehmen in allen Phasen ihrer Projekte - von der Konzeption über Implementierung, Automatisierung und Monitoring bis hin zu Schulung und Know-how-Transfer. IT-Sicherheit ist für uns von Beginn an integraler Bestandteil: Security by Design und die Erfüllung regulatorischer Anforderungen gehören zu unserem Standard. Mit unserer tiefgreifenden Datenbank-Expertise schlagen wir die Brücke zwischen klassischer Datenarchitektur und modernen KI-Anwendungen - etwa beim Einsatz von Vektordatenbanken für RAG-Systeme oder der Echtzeitverarbeitung von Datenströmen mittels Machine Learning.

Wir freuen uns auf spannende Gespräche mit Ihnen!

Ansible Teil 2 - Facts und Jinja2 Filter

Im ersten Teil der kleinen Ansible Serie ging es um die Installation von RPM Paketen für die Oracle Software. Der nächste Schritt wäre nun der Aufbau einer Datenbank mit dem Database Configuration Assistant (DBCA) der Firma Oracle. Es macht aber Sinn, vorab zum besseren Verständnis die Punkte Ansible Facts und Jinja2 Filter zu behandeln.

In unserem Demo-Beispiel soll es später die Möglichkeit geben, die Hauptspeicher-Grösse der Datenbank-Instanz in Megabyte als Variable zu definieren. Ist kein Wert explizit gesetzt, soll als Default-Wert 50% des verfügbaren Hauptspeichers genutzt werden. Für die praktische Umsetzung gibt es in Ansible Standard-Facts die automatisch vom Zielsystem ermittelt werden. In unserem Fall das Fact ansible_memtotal_mb das wir als Grundlage für eigene Berechnungen nutzen könnten:

- name: calculate totalMemory parameter for dbca
  debug:
    msg: "{{ oracle_memory | default((ansible_memtotal_mb / 2) | round | int) }}"

Zusätzlich möchten wir den DBCA später nur starten, wenn auf dem Zielsystem noch keine entsprechende Datenbank vorhanden ist. Ein Indikator für diese Erkennung ist der Inhalt der Datei /etc/oratab. In diesem Fall ist die Verarbeitung etwas aufwendiger, zunächst könnten wir den Inhalt von /etc/oratab in Ansible verfügbar machen:

- name: Slurp /etc/oratab
  ansible.builtin.slurp:
    src: /etc/oratab
  register: slurped_etc_oratab

Aus diesem Inhalt können wir dann mit Jinja2 Filtern eine Liste der ORACLE_SIDs herausfiltern:

- name: Extract list of Oracle SIDs from slurped /etc/oratab
  ansible.builtin.set_fact:
    oracle_sids: "{{ slurped_etc_oratab.content | 
                     ansible.builtin.b64decode | 
                     ansible.builtin.regex_findall('^((?!#).+):.*:.*$', multiline=True) }}"

Die so ermittelten ORACLE_SIDs könnten wir für Debug-Zwecke in einer Schleife ausgeben lassen:

- name: Iterate over list of Oracle SIDs and display them
  ansible.builtin.debug:
    msg: "{{ item }}"
  loop: "{{ oracle_sids }}"

Um zu verhindern, dass der DBCA gestartet wird, wenn die gewünschte ORACLE_SID schon in der /etc/oratab vorhanden ist, könnten wir den späteren Task mit folgender when-Bedingung versehen:

- name: Only execute if given SID is not in extracted Oracle SID list
  ansible.builtin.debug:
    msg: "Database {{ oracle_sid }} is not in list..."
  when: oracle_sid not in oracle_sids