Táto stránka popisuje, čo musí byť splnené, aby Qasida Updater mohol automaticky aktualizovať systém QASIDA – databázové skripty, klienta aj samotnú službu QASIDA.API (tzv. selfupdate).
Selfupdate QASIDA.API nebeží samostatne – je to jeden krok naplánovanej aktualizácie. Preto pre neho platia všetky požiadavky z kapitoly 1 a k nim navyše požiadavky z kapitoly 2.
Ako aktualizáciu naplánovať a kde nájsť jej výsledky, popisuje stránka Qasida Updater (Aktualizácia systému).
V appsettings.json služby QASIDA.API musia byť nastavené tieto hodnoty:
| Kľúč | Význam |
|---|---|
SystemMaintenance:SpinDatabaseUpdate:EnabledSpinDatabaseUpdate |
true – zapína Updater a plánovač aktualizácií. |
SystemMaintenance:Database |
Oracle Data Source pre používateľa DL. Tá istá hodnota sa používa aj pre SQL*Plus, preto musí fungovať pre obe pripojenia. |
SystemMaintenance:DLPassword |
Heslo používateľa DL. Môže byť uložené aj ako šifrovaný secret. |
SystemMaintenance:SpinDatabaseUpdate:SummaryMailRecipients |
Príjemcovia súhrnného e-mailu o výsledku aktualizácie, napr. [{"Email": "admin@firma.sk", "Name": "Admin"}]. Bez tejto hodnoty sa e-mail neposiela. |
SystemMaintenance:SpinDatabaseUpdate:SqlPlus |
Cesta k SQL*Plus z Oracle Instant Clientu, štandardne <inštalačný adresár>\InstantClient\sqlplus.exe (Linux <inštalačný adresár>/InstantClient/sqlplus). Potrebná pre aktualizácie, ktoré menia databázu. Bez nastavenia sa SqlPlus hľadá v PATH účtu, pod ktorým beží služba. Ak hodnota chýba alebo sa nedá použiť, selfupdate ju pri ďalšej aktualizácii QASIDA.API nastaví na Instant Client vedľa adresára Api. |
Qasida API inštalátor heslo používateľa DL aj e-mailovú adresu na výsledky aktualizácií vypĺňa počas inštalácie. Do adresára InstantClient vedľa adresára Api nainštaluje Oracle Instant Client so SQL*Plus.
Na Linuxe musí byť nainštalovaný balík
libaioa unit API musí nastaviťEnvironment="LD_LIBRARY_PATH=<inštalačný adresár>/InstantClient". Inak SQL*Plus nenájde svoje knižnice a aktualizácie databázových skriptov sa odkladajú pre nesplnenú podmienku SQL*Plus.
Ak chýba
SystemMaintenance:DatabasealeboSystemMaintenance:DLPassword, Updater sa pri štarte služby vôbec nezapne a v logu API je upozornenie Invalid configuration.Nesprávne heslo používateľa DL spôsobí, že plánovač nenačíta termín aktualizácie a aktualizácia sa bez upozornenia nespustí – chyby sú len v logu API.
Zmena konfigurácie sa prejaví až po reštarte služby QASIDA.API.
Server, na ktorom beží QASIDA.API, musí mať prístup k týmto službám:
| Služba | Na čo slúži | Ak nie je dostupná |
|---|---|---|
AsolHub (asolhub.assecosolutions.sk) |
zoznam verzií, sťahovanie inštalačných balíkov | verzie ostanú naplánované, upozornenie v súhrnnom e-maile |
Licenčný server (alis.assecosolutions.sk) |
overenie licencie | verzie sa odložia na ďalší termín |
E-mailová služba (email-sender.assecosolutions.sk) |
odoslanie súhrnného e-mailu | e-mail nepríde, výsledok je len v logu API |
FTP (ftp.datalock.sk, TCP port 21) |
uloženie výsledkov aktualizácie databázových skriptov | len upozornenie v súhrnnom e-maile |
Proxy v appsettings.json. Proxy sa použije pre AsolHub, licenčný server aj e-mailovú službu, nie však pre FTP.Povolené URL adresy a porty pre všetky prostredia uvádza stránka Minimálne systémové požiadavky.
Pred inštaláciou Updater pri každej naplánovanej verzii overí podmienky. Verzia, ktorá ich nespĺňa, sa nenainštaluje:
Oba prípady sú uvedené v súhrnnom e-maile.
| Podmienka | Čo sa overuje | Ak nie je splnená |
|---|---|---|
| Licencia | inštalačný kód a typ licencie z licenčného servera | odloží sa |
| Inštalačné cesty | adresáre podľa kapitoly 2.5 | odloží sa |
| Modul | verzia patrí k licencovanému systému a Updater ju vie nainštalovať (QASIDA.API iba vtedy, keď beží ako služba – pozri kapitolu 2.1) | vyradí sa |
| Závislosti | potrebné verzie sú už nainštalované alebo sa nainštalujú najprv | vyradí sa |
| Verzia | verzia existuje v AsolHub a ešte nie je nainštalovaná | vyradí sa |
| Pripojenie k databáze | používateľ DL sa vie pripojiť (len pri verziách, ktoré menia databázu) | odloží sa |
| SQL*Plus | SQL*Plus sa dá spustiť (len pri verziách, ktoré menia databázu) | odloží sa |
Pri selfupdate nainštaluje QASIDA.API novú verziu sama seba: zastaví vlastnú službu, vymení súbory, službu znova spustí a overí, že nová verzia funguje. Ak nefunguje, vráti pôvodnú verziu.
Selfupdate funguje iba vtedy, keď QASIDA.API beží:
Ak QASIDA.API beží v Microsoft IIS (alebo ako konzolová aplikácia), selfupdate sa nespustí. Verzia QASIDA.API sa vyradí z plánu s upozornením QASIDA API sa môže sama aktualizovať, iba keď beží ako služba Windows alebo systemd. Spolu s ňou sa vyradia aj verzie, ktoré od nej závisia. Ostatné verzie sa nainštalujú normálne.
Inštaláciu v IIS prevediete na službu Windows pomocou Qasida API inštalátora.
AssecoQasidaAPI, ďalšie inštancie majú v názve port (AssecoQasidaAPI_<port>). Názov služby musí zodpovedať kľúču QasidaUpdate:ApiServiceName (pozri kapitolu 2.4).NT SERVICE\AssecoQasidaAPI) musí vedieť zastaviť aj spustiť vlastnú službu. Qasida API inštalátor tieto práva nastaví automaticky. Pri ručnej inštalácii ich treba doplniť, lebo predvolené nastavenie Windows to bežnému účtu nedovoľuje.
sc.exe sdshow AssecoQasidaAPI musí byť položka pre účet služby s právami RP (spustenie), WP (zastavenie) a LC (zistenie stavu).sc.exe sdset.C:\Qasida\QasidaAPI), nielen do adresára Api. Selfupdate adresár Api zmaže a vytvorí znova a vedľa neho zakladá pomocné adresáre.Ak účet služby smie službu zastaviť, ale nesmie ju spustiť, QASIDA.API po aktualizácii zostane zastavená a treba ju spustiť ručne.
Prvý štart služby po výmene súborov môže trvať dlhšie ako 30-sekundový limit správcu služieb (chyba 1053), najčastejšie preto, že antivírus kontroluje čerstvo skopírované súbory. Selfupdate preto skúša službu spustiť až päťkrát s 30-sekundovými prestávkami. Ak sa chyba 1053 objavuje opakovane, zvážte výnimku v antivíruse pre inštalačný adresár QASIDA.API.
Podporované sú Oracle Linux 8 – 10.
AssecoQasidaAPI.service musí mať Type=notify.AssecoQasidaAPI-SelfUpdate.service:
Type=oneshot – povinné. Pri inom type sa systemctl start vráti hneď a QASIDA.API vyhodnotí aktualizáciu ako neúspešnú.WorkingDirectory a ExecStart musia ukazovať do adresára QasidaUpdate:SelfUpdateInstallPath (štandardne /QASIDA/QasidaAPI/SelfUpdate, spúšťa sa súbor SelfUpdate bez parametrov).systemctl enable) – spúšťa ju QASIDA.API iba počas aktualizácie.qasidaapi). Pri inom používateľovi by QASIDA.API po aktualizácii nemohla čítať vlastné súbory a nespustila by sa./etc/polkit-1/rules.d/50-qasidaapi-selfupdate.rules) musí používateľovi qasidaapi povoliť spúšťať a zastavovať obe units bez hesla.
sudo -u qasidaapi systemctl stop AssecoQasidaAPI.service a potom start musia skončiť s návratovým kódom 0.ReadWritePaths oboch units musí pokrývať všetky adresáre, do ktorých QASIDA.API a selfupdate zapisujú (štandardne stačí /QASIDA/QasidaAPI)./tmp – obe units majú PrivateTmp=yes.systemctl, chmod a stat.bin_t). Zamietnutia overíte príkazom ausearch -m AVC -ts recent.Ak na serveri beží viac inštancií QASIDA.API, každá má vlastný inštalačný adresár a vlastnú službu (AssecoQasidaAPI_<port>). Selfupdate názov služby nezisťuje sám – berie ho z konfigurácie danej inštancie:
QasidaUpdate:ApiServiceName musí obsahovať názov služby tejto inštancie, napr. AssecoQasidaAPI_9999. Qasida API inštalátor ho nastaví automaticky. Pri ručnej inštalácii ho treba doplniť do appsettings.json.AssecoQasidaAPI_9999-SelfUpdate.service) s WorkingDirectory a ExecStart do adresára SelfUpdate tejto inštancie,QasidaUpdate:SelfUpdateServiceName,Ak tieto kľúče chýbajú, použijú sa predvolené názvy
AssecoQasidaAPIaAssecoQasidaAPI-SelfUpdate. Selfupdate ďalšej inštancie by tak pracoval so službou primárnej inštancie – aktualizácia zlyhá alebo zastaví nesprávnu službu.
Štandardné rozloženie inštalačného adresára (Windows C:\Qasida\QasidaAPI, Linux /QASIDA/QasidaAPI):
| Adresár | Obsah |
|---|---|
Api |
samotná aplikácia; selfupdate ho celý zmaže a vytvorí znova |
SelfUpdate |
nástroj selfupdate; Updater ho sem kopíruje pri aktualizácii QASIDA.API |
InstantClient |
Oracle Instant Client so SQL*Plus (pozri kapitolu 1.1) |
DownloadInstallFiles |
stiahnuté inštalačné balíky |
ClientInstallFiles |
inštalačné súbory klienta |
Logs |
logy služby |
DataProtectionKeys |
kľúče, ktorými sú chránené uložené heslá |
Certificates |
certifikáty pre šifrovanú komunikáciu (RabbitMQ) |
Api_selfupdate_backup, Api_selfupdate_logs |
dočasná záloha a log počas aktualizácie; po úspešnej aktualizácii sa mažú |
QasidaUpdate:SelfUpdateInstallPath, QasidaUpdate:DownloadInstallFilesPath a QasidaUpdate:ClientInstallFilesPath nechajte na predvolených hodnotách. Ak ich meníte, použite absolútnu cestu, ktorá nie je koreňom disku a neleží v adresári Api.Logs, DataProtectionKeys a Certificates nechajte mimo adresára Api (predvolené nastavenie).Api neukladajte nič vlastné. Po aktualizácii v ňom ostanú len nové súbory aplikácie a pôvodné appsettings*.json.DownloadInstallFiles neukladajte nič vlastné. Podadresáre bez výsledkov aktualizácie sa pri každom štarte služby mažú.SelfUpdate ručne nemažte. Administračné rozhranie k API ním reštartuje službu po zmene nastavení. Ak v ňom nástroj selfupdate chýba alebo je starší ako QASIDA.API, nastavenia v administračnom rozhraní sa dajú len prezerať. Nástroj doplníte skopírovaním adresára SelfUpdate/<Windows|Linux> z inštalačného balíka QASIDA.API, inak pribudne pri najbližšej aktualizácii.Ak po predchádzajúcej aktualizácii ostal adresár
Api_selfupdate_backupalebo neprázdnyApi_selfupdate_logs, ďalší selfupdate sa nespustí. Znamená to, že predchádzajúca aktualizácia neskončila čisto:
- prečítajte log v adresári
Api_selfupdate_logs,- overte, že služba beží v očakávanej verzii (
/version),- oba adresáre odstráňte.
Voľné miesto na disku: selfupdate ho vopred nekontroluje. Počas aktualizácie sú na disku naraz stiahnutý balík, jeho rozbalený obsah, záloha adresára Api aj nová verzia. Odporúčame dodržať aspoň 10 GB voľného miesta, ktoré vyžaduje aj Qasida API inštalátor.
Po spustení novej verzie selfupdate volá /health na všetkých adresách, na ktorých QASIDA.API počúva (nastavenie Urls). Každá adresa musí do 2 minút odpovedať stavom Healthy.
/health hlási Healthy iba vtedy, keď je dostupná databáza. Databáza preto musí byť počas aktualizácie dostupná, inak sa aktualizácia vráti späť.appsettings*.json sa po aktualizácii obnoví.Api_selfupdate_backup na ručnú obnovu a v logu je hlásenie manual intervention required.Kde hľadať podrobnosti:
| Log | Umiestnenie |
|---|---|
| Log selfupdate | Api_selfupdate_logs\selfupdate_<dátum>_<čas>.log (kým adresár existuje) a v prílohe súhrnného e-mailu |
| Log služby QASIDA.API | Logs\QasidaApi<dátum>.txt |
| Výstup unit selfupdate (len Linux) | journalctl -u AssecoQasidaAPI-SelfUpdate.service |
Automatická aktualizácia
EnabledSpinDatabaseUpdate je true, Database a DLPassword sú vyplnené a správneSummaryMailRecipients obsahuje adresu, na ktorú majú chodiť výsledkyInstantClient vedľa Api alebo platný kľúč SqlPluslibaio a unit API nastavuje LD_LIBRARY_PATH na adresár InstantClientSelfupdate QASIDA.API
Type=oneshot, obe units majú rovnakého používateľa, pravidlo PolicyKit je overenéQasidaUpdate:ApiServiceName obsahuje názov ich služby (inštalátor nastavuje automaticky, pri ručnej inštalácii overiť); na Linuxe majú vlastný unit selfupdate, kľúč QasidaUpdate:SelfUpdateServiceName a sú v pravidle PolicyKitQasidaUpdate:* sú na predvolených hodnotách alebo sú absolútne a mimo adresára ApiSelfUpdate obsahuje nástroj selfupdate a nikto ho ručne nemažeApi_selfupdate_backup a Api_selfupdate_logs je prázdny alebo neexistuje