Die Installer in Repositories wie PIT, FSM und UTL_TEXT sollen künftig:
- interaktiv weiter nutzbar bleiben
- nicht-interaktiv aus Ansible/CI aufrufbar sein
- konsistente Kommandos, Exit-Codes und Fehlerbehandlung besitzen
- Owner-Installation und Client-Installation sauber trennen
- pro Aktion nachvollziehbare Logs erzeugen
Jede Library stellt einen stabilen Shell-Entrypoint bereit, z. B.:
pit.shfsm.shutl_text.sh
Dieser Entrypoint unterstützt ein konsistentes Kommandomodell:
installinstall-client- optional
install-apex - optional
uninstall - optional
uninstall-client help
Die Kommandos sollen sowohl interaktiv als auch nicht-interaktiv funktionieren.
Alle Skripte sollen Eingaben in dieser Reihenfolge auflösen:
- CLI-Optionen
- Environment-Variablen
- interaktive Eingabe per
read/read -s
Nicht-geheime Werte dürfen per CLI übergeben werden, z. B.:
--service--client--default-language
Passwörter sollen nicht über CLI-Argumente übergeben werden, sondern:
- über Environment-Variablen
- oder interaktiv per
read -s
PIT_OWNERPIT_OWNER_PWPIT_CLIENTPIT_CLIENT_PWPIT_SERVICEPIT_DEFAULT_LANGUAGE
FSM_OWNERFSM_OWNER_PWFSM_CLIENTFSM_CLIENT_PWFSM_SERVICE
UTL_TEXT_OWNERUTL_TEXT_OWNER_PWUTL_TEXT_CLIENTUTL_TEXT_CLIENT_PWUTL_TEXT_SERVICE
Für jede Library einen zentralen Entrypoint pflegen, z. B. pit.sh.
Aufgaben:
- Kommandos validieren
- CLI-Optionen parsen
- normalisierte Variablen aufbereiten
- interne Implementierungsskripte aufrufen
Wichtig:
- keine fachliche Installationslogik im Dispatcher
- nur Routing und Input-Normalisierung
Vorhandene Skripte wie install.sh, install_client.sh umbauen.
Ziel:
- Werte aus CLI / Env übernehmen
- nur fehlende Werte interaktiv erfragen
Muster:
OWNER="${OWNER:-${PIT_OWNER:-}}"
if [ -z "${OWNER}" ]; then
read -r -p "Enter owner schema: " OWNER
fiFür Passwörter:
OWNER_PW="${OWNER_PW:-${PIT_OWNER_PW:-}}"
if [ -z "${OWNER_PW}" ]; then
read -r -s -p "Enter password for ${OWNER}: " OWNER_PW
echo
fiAlle SQL*Plus-Aufrufe müssen bei Fehlern den Prozess fehlschlagen lassen.
Shell-Standard:
set -euo pipefailSQL*Plus-Standard:
sqlplus -s /nolog <<SQL
whenever oserror exit failure rollback
whenever sqlerror exit failure rollback
connect ...
@script.sql
exit
SQLWichtig:
- kein
exit 0, wenn dadurch Fehler maskiert werden - keine stillen Folgeaufrufe nach SQL-Fehlern
Jede Aktion soll ein eigenes Log erzeugen, z. B.:
Install_PIT.logInstall_PIT_client_<client>.logInstall_FSM.logInstall_UTL_TEXT.log
Ziele:
- Log pro Aktion
- konsistente Benennung
- einfache Fehlersuche
Optional:
- Logpfad über Variable konfigurierbar machen
Jede Library soll mindestens zwei fachlich getrennte Pfade haben:
install- installiert die Library im Owner-Schema
install-client- vergibt Grants und registriert Synonyme für genau ein Client-Schema
Wichtig:
- keine Schleife über mehrere Clients innerhalb der Library
- Mehrfachausführung übernimmt später der Orchestrator oder Ansible
Für install-client prüfen und absichern:
- wiederholte Aufrufe sind tolerierbar
- bestehende Synonyme werden ersetzt oder vorher entfernt
- Grants verursachen bei Wiederholung keinen harten Fehler
Für install bewerten:
- ist Wiederholung erlaubt?
- falls nein: klar dokumentieren
- optional
reinstalloderuninstall && installergänzen
Die help-Ausgabe jedes Entrypoints soll enthalten:
- verfügbare Kommandos
- unterstützte CLI-Optionen
- relevante Environment-Variablen
- Verhalten im interaktiven Fallback
Für jede Library Nutzungsbeispiele ergänzen.
Interaktiv:
./pit.sh install
./pit.sh install-clientNicht-interaktiv:
PIT_OWNER=... \
PIT_OWNER_PW=... \
PIT_SERVICE=... \
PIT_CLIENT=... \
PIT_CLIENT_PW=... \
./pit.sh install-clientNach dem Umbau der Basis-Repositories kann ein Orchestrator wie b3m_utils vereinfacht werden.
Ziel:
- keine direkte SQL-Detailorchestrierung im
b3m_utils/install.sh - stattdessen Aufrufe wie:
pit.sh installpit.sh install-clientutl_text.sh installutl_text.sh install-clientfsm.sh installfsm.sh install-client
Die neuen Library-Skripte sollen so gestaltet sein, dass Ansible:
- Passwörter über Environment übergeben kann
- nicht interaktiv aufrufen kann
- RC ungleich 0 als echten Fehler bekommt
- Logs pro Schritt auswerten kann
Der Umbau gilt als abgeschlossen, wenn:
- dieselbe Library interaktiv und nicht-interaktiv installierbar ist
- SQL-Fehler zuverlässig zu einem Shell-Fehler führen
installundinstall-clientklar getrennt sind- keine Passwörter per CLI-Argument übergeben werden müssen
- Logs pro Aktion vorhanden sind
- wiederholte
install-client-Aufrufe stabil funktionieren - die CLI-Dokumentation vollständig ist
- CLI-Vertrag definieren
- Dispatcher pro Library standardisieren
- interne Skripte auf CLI/Env/Read-Fallback umbauen
- Fehlerbehandlung in SQL*Plus und Shell härten
- Logging vereinheitlichen
install-client-Idempotenz absichern- README und Help ergänzen
- erst danach Orchestrator-Repositories wie
b3m_utilsanpassen