Umgebungsvariablen eines Modules ändern
So kann man die Umgebungsvariablen (Env Vars) eines Folio-Backend-Moduls ändern:
Beispiel:
|
Diese Variablen muss man sowieso ändern, es sei denn, man deployt mit Vagrant. Denn standardmäßig ist hier der Vagrant-Host 10.0.2.15 voreingestellt.
1 Wenn das Modul schon bereitgestellt ist
In diesem Fall muss das Modul zunächst undeployed werden, und dann erneut bereitgestellt (deployed). Für die erneute Bereitstellung gibt es zwei Möglichkeiten:
1.1 Bereitstellung ohne Okapi
Anleitung:
- Erzeugen eines neuen, laufenden Containers für das Moduls mod-pubsub per Hand (z.B. von der Kommandozeile aus, mit Docker-"Bordmitteln")
|
2. Deployment-Deskriptor bauen
Dazu muss man zuerst mit "docker inspect" herausfinden, wo im Docker-Netzwerk Docker das Modul deployed hat:
|
3. Alle Module für den Mandanten deaktivieren, außer Okapi
Hole die Liste der Module für diesen Mandanten und schreibe in eine Datei
|
Sende LÖSCHEN an /_/proxy/tenants/<tenantId>/modules/<moduleId> für jedes Modul in der Liste, aber lasse Okapi aktiviert!
curl -w '\n' -XDELETE http://localhost:9130/_/proxy/tenants/diku/modules/folio_calendar-1.0.100018
curl -w '\n' -XDELETE http://localhost:9130/_/proxy/tenants/diku/modules/folio_checkin-1.1.100049
curl -w '\n' -XDELETE http://localhost:9130/_/proxy/tenants/diku/modules/folio_checkout-1.1.4000158
...
Aufgrund "fehlender Anhängigkeiten" werden nicht alle Module gelöscht. Zuerst die fehlenden Abhängigkeiten löschen. Dann das Löschen aller Module (ein Skript dafür schreiben!) sooft ausführen, bis alles gelöscht ist. Am Ende darf nur noch stehen:
|
4. Die in Okapi angemeldete Modul-Instanz von mod-pubsub undeployen
|
5. Bereitstellen: Den neuen Deployment-Deskriptor von mod-pubsub an $OKAPI_URL/_/discovery/modules senden
|
6. Re-aktiviere alle Module für den Mandanten
|
Nun mal einen Gesundheitscheck machen:
|
1.2 Bereitstellung mit Okapi
Die Umgebungsvariablen für das Modul werden beim Deploy mit Okapi aus den Umgebungsvariablen von Okapi vererbt. Daher muss man nur die Umgebungsvariablen von Okapi setzen, und anschließend das Modul Re-Deployen.
Hier die Kurzzusammenfassung:
curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"KAFKA_HOST\",\"value\":\"10.9.2.62\"}" http://localhost:9130/_/env; curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"OKAPI_URL\",\"value\":\"
curl -w '\n' -D - -X POST -H "Content-type: application/json" -d@/usr/folio/platform-complete/install.json http://localhost:9130/_/proxy/tenants/diku/install?simulate=true\&preRelease=false curl -w '\n' -D - -X POST -H "Content-type: application/json" -d@/usr/folio/platform-complete/install.json http://localhost:9130/_/proxy/tenants/diku/install?deploy=false\&preRelease=false\&tenantParameters=loadSample%3Dfalse%2CloadReference%3Dtrue |
2 Wenn das Modul noch nicht läuft (noch nicht bereitgestellt ist)
Dieser Anwendungsfall wird üblicherweise auftreten, wenn man das komplette System re-deployt, z.B. bei einem Release-Wechsel.
2.1 Bereitstellung ohne Okapi
Die Umgebungsvariablen des bereitzustellenden Moduls sind im jeweiligen Deployment-Tool einzustellen (z.B. Rancher-UI, Kommandozeilenparameter für "docker", ...)
2.2 Bereitstellung mit Okapi
Hier fallen mir zwei verschiedene Methoden ein:
2.2.1 Steuerung über den Moduldeskriptor (genauer: Launch-Deskriptor)
Streng genommen sind diese Schritte in diese Installationsanleitung einzubauen : https://github.com/folio-org/folio-install/tree/master/runbooks/single-server (andererseits aber auch nicht, denn diese Inst.Anl. ist ausgewiesenermaßen nur für Deployment mit Vagrant):
Nach dem Schritt "Installiere und Konfiguriere Okapi" : "Ziehe Moduldeskriptoren aus dem zentralen Register" den Moduldeskriptor für mod-pubsub noch mal einzeln holen:
|
Die Variablen darin manuell anpassen; den Launch-Deskriptor in dem Moduldeskriptor anpassen:
|
Den Moduldeskriptor in /_/proxy/modules überschreiben (das ist möglich, da das Modul noch nicht deployed/aktiviert ist):
|
Jetzt ganz normal mit der Standard-Installationsanleitung fortfahren (Mandanten erzeugen, ..., alle Module mit Okapi bereitstellen (deploy=true) und aktivieren).
2.2.2 Steuerung über globale Umgebungsvariablen ( geht das ? Habe ich noch nicht ausprobiert!)
Man könnte versuchen, die Systeminstallation nach Schema F durchzuführen, also genauso, also ob man die Module mit Standard-Umgebungsvariablen bereitstellen will. Den Moduldeskriptor nicht ändern. Dafür an der Stelle "Post data source information to the Okapi environment for use by deployed modules" zusätzlich zu den Datenbank-Verbindungsvariablen auch noch die neuen Modul-Umgebungsvariablen als globale Umgebungsvariablen dem Okapi bekanntgeben. Sie würden dann global für alle Module gelten :
|
Dann ganz normal alle Backend-Module mit curl -w '\n' -D - -X POST -H "Content-type: application/json" -d @/usr/folio/platform-complete/okapi-install.json http://localhost:9130/_/proxy/tenants/diku/install?deploy=true\&preRelease=false
mit Okapi bereitstellen und für den Mandanten aktivieren.
Ob das funktioniert, weiß ich allerdings nicht. Jason Root wusste das auch nicht, fand das aber interessant. Ich werde das beim nächsten Release-Wechsel auf jeden Fall ausprobieren. Das wäre die eleganteste Methode, (bei Okapi-Deployment) Modul-Umgebungsvariablen zu überschreiben.