Preskočiť na obsah

Aktualizácia MAAS na verziu 3.5.x

Aktualizácia DB

Aktualizáciu databázy z maas-test-db (snap store) na PostgreSQL 14 je možné vykonať pomocou nasledujúcich príkazov (s popisom, čo jednotlivé príkazy robia). Načítanie hodnoty hesla pre databázu zo súboru regiond.conf pomocou awk a uloženie tejto hodnoty do premennej PGPASS. Heslo sa následne využije na autentifikáciu pri prístupe k databáze bez potreby interaktívneho zadania:

export PGPASS=$(sudo awk -F':\\s+' '$1 == "database_pass" {print $2}' /var/snap/maas/current/regiond.conf)
Pre vykonanie zálohy databázy maasdb je možné použiť nástroj pg_dump. V prípade, že príkaz nie je dostupný, odporúča sa doinštalovať balík postgresql-client-14, prípadne postgresql-14. Výsledná záloha sa uloží do súboru maasdb-dump.tar vo formáte .tar
sudo pg_dump -U maas -h /var/snap/maas-test-db/common/postgres/sockets -d maasdb -F t -f maasdb-dump.tar
Pre správnu inicializáciu databázového prostredia je potrebné zastaviť službu MAAS:
sudo snap stop maas
Aktualizovať lokálny zoznam dostupných balíkov:
sudo apt update
Nainštalovať PostgreSQL-14, ak ešte nie je prítomný v systéme:
sudo apt install postgresql-14
Spustiť interaktívne prostredie psql ako používateľ postgres (predvolený administrátor databázy):
sudo -u postgres psql
V rámci psql vytvoriť nového databázového používateľa maas a priradiť mu heslo:
CREATE USER maas WITH ENCRYPTED PASSWORD '<password>';
Vytvoriť databázu maasdb a nastaviť vlastníctvo na používateľa maas:
CREATE DATABASE maasdb OWNER maas;
Ukončiť shell psql:
\q
Reštartovať službu PostgreSQL pre načítanie všetkých nastavení a inicializáciu nového stavu:
sudo systemctl restart postgresql
Následne pokračovať krokom zavedenia pôvodných dát (archív maasdb-dump.tar) do cieľovej databázy. Keďže systémový používateľ postgres má obmedzený prístup k súborom mimo svojho domovského adresára, je potrebné zabezpečiť, aby mal k záložnému súboru dostatočné práva. Odporúča sa premiestniť súbor do adresára, kde má postgres plné oprávnenia, napríklad do /var/lib/postgresql:
mv /path/to/maasdb-dump.tar /var/lib/postgresql
Importovať údaje z archívu do novej databázy maasdb pomocou nástroja pg_restore:
sudo -u postgres pg_restore -d maasdb /var/lib/postgre/maasdb-dump.tar
Pozn.: tento príkaz môže “bežať” nejaký čas, v závislosti na veľkosti archívu.

Skontrolovať konfiguračné súbory a upraviť ich v prípade nezrovnalostí podľa nasledujúceho postupu:

sudo nano /var/snap/maas/current/regiond.conf
Následná úprava súboru do tvaru:
database_host: 127.0.0.1
database_port: 5432
database_name: maasdb
database_user: maas
database_pass: <heslo>
Ďalším súborom, v ktorom je potrebné vykonať úpravu konfigurácie, je:
sudo nano /var/snap/maas/common/snap_mode
Nastaviť režim prevádzky MAAS-u:
region+rack
Konfiguračný súbor pre prístupové politiky PostgreSQL je potrebné upraviť nasledovne:
sudo nano /etc/postgresql/14/main/pg_hba.conf
Modifikovať riadok z autentifikačnej metódy peer na md5:
- local   all             all                                    peer
+ local   all             all                                     md5
Na koniec súboru pridať nasledovné dva riadky, ktoré zabezpečia vzdialené prihlásenie používateľa maas:
host    maasdb   maas     127.0.0.1/32     md5
host    all      maas     127.0.0.1/32     md5
Výsledný súbor má vyzerať nasledovne:

pg_hba.conf

Následne je potrebné reštartovať databázový server PostgreSQL a taktiež službu MAAS:

sudo systemctl restart postgresql
sudo snap restart maas
Overiť, či je možné nadviazať spojenie s databázou pomocou nasledujúceho príkazu:
psql -U maas -d maasdb -h 127.0.0.1 -W
Ak všetko prebehlo bez chýb a pripojenie k databáze PostgreSQL funguje, je možné pristúpiť k aktualizácii MAAS na požadovanú verziu:
sudo snap refresh maas --channel=3.5/stable

Dodatočná oprava: Manuálna obnova dát zo SNAP databázy

Po zistení, že migrácia pomocou maas migrate nezachovala všetky entity (napr. compute nodes, VLANy, IP adresy), bolo nutné manuálne obnoviť dáta zo starej snap databázy maas-test-db. Túto opravu je možné vykonať pomocou nasledovných krokov: Pripojiť sa do starej databázy cez socket:

sudo -u postgres psql -h /var/snap/maas-test-db/common/postgres/sockets
Overiť prítomnosť dôležitých tabuliek ako maasserver_node, maasserver_vlan, maasserver_staticipaddress:
SELECT system_id, hostname, status FROM maasserver_node;
SELECT id, name, vid FROM maasserver_vlan;
SELECT id, ip FROM maasserver_staticipaddress;
Exportovať existujúce dáta do .tar archívu:
pg_dump -U maas -F t -f /tmp/maasdb-dump.tar -h /var/snap/maas-test-db/common/postgres/sockets maasdb
Skontrolovať, že v archíve sa nachádzajú požadované tabuľky:
pg_restore -l /tmp/maasdb-dump.tar | grep -E 'maasserver_node|maasserver_vlan'
Zrušiť všetky spojenia na novej databáze a odstrániť nekonzistentné dáta:
sudo -u postgres psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'maasdb' AND pid <> pg_backend_pid();"
sudo -u postgres psql -c "DROP DATABASE IF EXISTS maasdb;"
sudo -u postgres createdb maasdb
Obnoviť dáta do čistej PostgreSQL 14 databázy:
sudo -u postgres pg_restore -d maasdb /tmp/maasdb-dump.tar