Vai al contenuto

Aggiornamento a caldo del Mediation Controller

Importante

La documentazione relativa all'aggiornamento a caldo del Mediation Controller è destinata a qualsiasi Mediation Controller che funzioni con Debian 11. La versione di Debian può essere verificata con il comando seguente (da eseguire in accesso SSH o console):

1
cat /etc/debian_version

Informazioni

Come promemoria, il passaggio a root sulle macchine Debian deve essere effettuato con il comando seguente:

1
su -

Pianificazione e preparazione

Apertura dei flussi

Durante l'aggiornamento del prodotto molti pacchetti devono essere scaricati dai repository Debian, a causa del passaggio dalla versione 11 alla 12 di Debian. È necessario aprire l'accesso TCP 80 verso security.debian.org e ftp.fr.debian.org.

Per verificare l'apertura dei flussi sulla macchina è possibile avviare una sincronizzazione dei repository Debian. Se vengono visualizzati messaggi di errore relativi all'accesso ai repository Debian, il flusso di rete non è aperto, probabilmente bloccato dal firewall aziendale. La sincronizzazione dei repository può essere avviata con il comando seguente:

1
apt update

Download del mirror e degli strumenti necessari

Il mirror di CyberElements Cleanroom 4.6 può essere scaricato da questo link (è necessaria la creazione di un account cliente): Systancia Marketplace

Oltre al mirror, per il processo di aggiornamento saranno necessari strumenti di terze parti:

  • Un client SSH (su Windows è possibile utilizzare lo strumento PuTTY)
  • Un client SCP (su Windows è possibile utilizzare gli strumenti WinSCP o FileZilla)

Installazione e uso dello strumento screen

Lo strumento screen permette di aprire più terminali shell in una sola console. L'uso di questo strumento è indispensabile per l'aggiornamento alla versione CyberElements Bastion, al fine di eliminare la dipendenza dalla stabilità della connettività di rete. Senza lo strumento screen, infatti, l'installazione si interromperebbe in caso di interruzione della connettività SSH con i server CyberElements Bastion.

Utilizzando lo strumento screen, alla riconnessione alla console shell dell'apparecchiatura CyberElements Bastion è possibile recuperare il terminale in cui è stato eseguito il processo di aggiornamento.

Il pacchetto screen deve essere installato con la riga di comando seguente:

1
apt install --no-install-recommends screen

Per aprire un nuovo terminale screen deve essere eseguito il comando seguente:

1
screen -S <ID>

Sostituire <ID> con un nome che identifichi la sessione.

Esempio

Per gli aggiornamenti di versione di CyberElements, l'identificativo cye-upgrade è facilmente riconoscibile. Il comando sarà quindi il seguente:

1
screen -S cye-upgrade

Per recuperare un terminale aperto con screen è sufficiente eseguire il comando seguente:

1
screen -r <ID>

Sostituire <ID> con il nome definito all'apertura della sessione.

Esempio

Il terminale aperto in precedenza con l'identificativo cye-upgrade può essere recuperato con il comando seguente:

1
screen -r cye-upgrade

Per chiudere il terminale una volta completato l'aggiornamento, immettere nel terminale il comando exit oppure la scorciatoia da tastiera ctrl+d.

Si ritorna così alla console. Il messaggio «screen is terminating» conferma che il terminale è stato chiuso.

Estensione dello spazio su disco delle appliance virtuali

Le appliance virtuali Systancia Cleanroom 4.4 o 4.5 richiedono l'aggiunta di un'estensione del disco di 2 GB alla partizione /usr. Questa operazione è necessaria per disporre di spazio su disco sufficiente per l'aggiornamento di versione ed evitare di bloccarsi durante l'operazione.

Al momento della connessione al Mediation Controller, sia tramite SSH sia in modalità console, un messaggio di benvenuto informa che si è connessi a una macchina Systancia. Una riga aggiuntiva indica la versione dell'appliance.

Esempio

Un'appliance virtuale Mediation Controller in versione 4.5 darà il risultato seguente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
            ____            _                   _
        / ___| _   _ ___| |_ __ _ _ __   ___(_) __ _
        \___ \| | | / __| __/ _  | '_ \ / __| |/ _  |
            ___) | |_| \__ \ || (_| | | | | (__| | (_| |
        |____/ \__, |___/\__\__,_|_| |_|\___|_|\__,_|
                |___/
#################################################################
# WARNING:                                                      #
# You must have specific authorization to access this machine.  #
# Unauthorized access to this machine is prohibited and will be #
# considered as intrusion.                                      #
# Unauthorized users will be logged, monitored, and could be    #
# prosecuted.                                                   #
#################################################################
Systancia Cleanroom 4.5.0 B77

Se la macchina non è un'appliance virtuale fornita con la versione 4.4 o 4.5, questo capitolo può essere saltato per passare all'aggiornamento di versione.

Backup vivamente raccomandato

I passaggi seguenti modificano il partizionamento del disco del Mediation Controller. Se sono state apportate modifiche manuali, le istruzioni seguenti possono non essere adatte e la macchina potrebbe bloccarsi.

Prima di procedere, effettuare un backup della macchina oppure, se necessario, duplicare la macchina virtuale. Gli snapshot non possono essere utilizzati perché, in particolare con VMware, impediscono l'estensione di un disco.

A livello di hypervisor, estendere di 2 GB aggiuntivi lo spazio su disco della macchina virtuale. Se non è possibile estendere il disco, verificare che non vi siano snapshot e, in caso contrario, arrestare la macchina virtuale se l'estensione a caldo non è supportata.

Una volta esteso lo spazio su disco a livello della macchina virtuale, sono necessari i comandi seguenti, da eseguire come root, per estendere la partizione /usr:

1
2
3
4
5
6
echo 1 > /sys/class/block/sda/device/rescan
start_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}'`
echo -e "d\n2\nn\ne\n2\n\n\nn\n$start_lvm_partition\n\nt\n5\n8E\nw" | fdisk /dev/sda
pvresize /dev/sda5
lvresize -l +100%FREE /dev/mapper/SystanciaLVMGroup-usr
resize2fs /dev/mapper/SystanciaLVMGroup-usr

Aggiornamento di versione

Aggiornamento dei pacchetti Debian

Poiché l'aggiornamento di CyberElements Bastion richiede l'aggiornamento di Debian, si raccomanda di aggiornare correttamente i pacchetti Debian 11 prima di passare a Debian 12. A tale scopo, eseguire i comandi seguenti come root (aggiornamento del sistema, poi rimozione dei pacchetti non necessari):

1
2
3
apt update
apt upgrade -y
apt autoremove -y

Possono comparire messaggi che chiedono di modificare la configurazione di diversi file di configurazione. In questi casi, selezionare l'opzione che mantiene la configurazione corrente.

Preparazione dei driver Microsoft SQL Server

Sono necessarie operazioni aggiuntive se i driver Microsoft SQL Server sono installati (è il caso delle appliance virtuali fornite da Systancia).
Per verificare se sono presenti sul server, è possibile eseguire il comando seguente come root:

1
apt list --installed ms*

Se non compare alcuna risposta, i driver non sono installati ed è possibile passare alla fase di preparazione del mirror.
In caso contrario, se i driver sono installati, dovrebbero essere elencati due pacchetti: msodbcsql17 e mssql-tools. Seguire le istruzioni di questa sezione.

Esempi

Un server sul quale i driver non sono installati darebbe il risultato seguente con il comando precedente:

1
Listing... Done

Un server sul quale i driver sono installati darà un risultato simile a questo (le versioni dei pacchetti possono differire):

1
2
3
Listing... Done
msodbcsql17/bullseye,now 17.10.6.1-1 amd64 [installed]
mssql-tools/bullseye,now 17.10.1.1-1 amd64 [installed]

I comandi seguenti sono necessari per installare una versione specifica dei pacchetti e garantire la riuscita dell'aggiornamento di versione:

1
env ACCEPT_EULA=Y apt install -y --allow-downgrades odbcinst=2.3.6-0.1+b1 odbcinst1debian2=2.3.6-0.1+b1 libodbc1=2.3.6-0.1+b1 unixodbc=2.3.6-0.1+b1 mssql-tools=17.9.1.1-1 msodbcsql17=17.9.1.1-1

Configurare il repository Microsoft adatto a Debian 12 per preparare l'aggiornamento di versione:

1
echo "deb [arch=amd64] https://packages.microsoft.com/debian/12/prod bookworm main" > /etc/apt/sources.list.d/mssql-release.list

Preparazione del mirror CyberElements Cleanroom 4.6

Il mirror recuperato durante la fase di preparazione (file con estensione tgz) deve essere inviato al server tramite SCP. Deve essere collocato nella directory /tmp/.

Preparare quindi il mirror eseguendo i comandi seguenti come root (i file residui di un vecchio aggiornamento di versione verranno eliminati):

1
2
3
mkdir -p /opt/systancia/repository
rm -rf /opt/systancia/repository/*
tar xvzf /tmp/*.tgz -C /opt/systancia/repository/

Configurazione di APT

Il gestore di pacchetti APT è configurato per recuperare i pacchetti Debian 11; deve essere riconfigurato per recuperare i pacchetti Debian 12. È inoltre necessario aggiornare il riferimento al mirror locale di CyberElements Bastion. A tale scopo, eseguire i comandi seguenti come root:

1
2
echo -e 'deb http://security.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware\ndeb http://ftp.fr.debian.org/debian bookworm main contrib non-free non-free-firmware\ndeb http://ftp.fr.debian.org/debian bookworm-updates main contrib non-free non-free-firmware' > /etc/apt/sources.list
echo "deb file:///opt/systancia/repository/ bookworm ipdiva" > /etc/apt/sources.list.d/systancia.list

Oltre alla configurazione dei nuovi repository, raccomandiamo vivamente di applicare l'impostazione seguente per indicare ad APT di non installare le dipendenze consigliate che non sono strettamente necessarie, al fine di ridurre il numero di componenti installati. Il comando seguente applica questa impostazione comeroot:

1
echo -e 'APT::Install-Recommends false;\nAPT::Install-Suggests false;' > /etc/apt/apt.conf.d/99norecommends

Infine, è necessario aggiornare l'elenco dei pacchetti nei repository con il comando seguente:

1
apt update

Avvio dell'aggiornamento di versione

Accedere al server Mediation Controller tramite SSH e passare a root, quindi aprire uno screen come indicato sopra.

Iniziare aggiornando alcuni pacchetti specifici affinché l'aggiornamento di versione possa essere eseguito. È previsto un messaggio di errore durante l'esecuzione del primo comando, ma l'errore verrà corretto dal secondo comando:

1
2
apt install -y python3-cleanroom-django-mssql python3-ipdiva-ua-parser python3-ipdiva-user-agents python3-ipdiva-django2
apt install -y --fix-broken

Quando si esegue l'aggiornamento di versione di un Mediation Controller da Debian 11 a Debian 12, il pacchetto collectd viene aggiornato e diventa incompatibile con il file di configurazione generato da CyberElements Bastion (/etc/collectd/collectd.conf). Ciò può generare un errore durante l'aggiornamento.

Per evitarlo, disattivare collectd:

1
2
systemctl stop collectd 
systemctl disable collectd

Successivamente, l'aggiornamento di versione può essere avviato con il comando seguente:

1
apt dist-upgrade -y

Durante l'aggiornamento di versione verranno poste diverse domande sull'opportunità di conservare i file di configurazione e aggiornarli conformemente alla configurazione standard di Debian 12, oppure di mantenere la configurazione specifica esistente. Ecco le nostre raccomandazioni per la maggior parte dei file che si possono incontrare:

File di configurazione Azione consigliata
/etc/issue Conservare, rispondere N
/etc/issue.net Conservare, rispondere N
/etc/security/limits.conf Conservare, rispondere N
/etc/login.defs Conservare, rispondere N
/etc/shibboleth/shibboleth2.xml Conservare, rispondere N
/etc/shibboleth/shibd.logger Applicare le modifiche, rispondere Y
/etc/default/ntpsec Applicare le modifiche, rispondere Y
/etc/snmp/snmpd.conf Applicare le modifiche, rispondere Y
/etc/logrotate.d/IPdivaServer Applicare le modifiche, rispondere Y
/etc/ssh/sshd_config Conservare, rispondere Keep the local version currently installed
/etc/ssh/ssh_config Applicare le modifiche, rispondere Y
/etc/apache2/ports.conf Conservare, rispondere N
/etc/init.d/apache2 Conservare, rispondere N
/etc/modsecurity/modsecurity.conf-recommended Applicare le modifiche, rispondere Y
/etc/ipdiva/httpd/commonParameters.conf Applicare le modifiche, rispondere Y
/etc/ipdiva/care/djangosettings.ini Applicare le modifiche, rispondere Y
/etc/crontab Applicare le modifiche, rispondere Y
/etc/openssl.cnf Applicare le modifiche, rispondere Y
/etc/audit/rules.d/audit.rules Conservare, rispondere N
/etc/pam.d/su Conservare, rispondere N
/etc/sysctl.conf Conservare, rispondere N

Accettare il messaggio di configurazione del pacchetto glibc:

Accettare il riavvio automatico dei servizi:

Una volta completato l'aggiornamento di versione, eseguire i comandi seguenti per riattivare collectd, rimuovere i pacchetti non necessari e riavviare la macchina:

1
2
3
4
systemctl start collectd
systemctl enable collectd
apt autoremove -y
reboot

Azioni specifiche per i Mediation Controller in Cluster

Sul server Mediation Controller SLAVE, eseguire i comandi seguenti per risincronizzare il segreto condiviso tra il Mediation Controller MASTER e lo SLAVE:

1
2
hostManagerCtl masterSynchro /etc/ipdiva/secure/secret /etc/ipdiva/secure/secret
systemctl restart apache2

Aggiornamento di versione dell'istanza di database PostgreSQL

Sul server Mediation Controller, aggiornare l'istanza di database PostgreSQL dalla versione 13 alla versione 15. A tale scopo, eseguire le istruzioni seguenti con i diritti root appropriati.

Verificare lo stato delle istanze PostgreSQL prima della migrazione:

1
pg_lsclusters

Eseguire i comandi seguenti per aggiornare l'istanza di database alla versione 15 di PostgreSQL:

1
2
3
4
pg_dropcluster --stop 15 main
systemctl stop postgresql
pg_upgradecluster 13 main
systemctl start postgresql

Verificare che l'istanza di database sia stata aggiornata correttamente. Dovrebbero comparire due istanze, una in versione 13 e l'altra in versione 15, che è la sola attiva. La verifica si effettua con il comando seguente:

1
pg_lsclusters

Se l'aggiornamento di versione è riuscito, l'istanza di database in versione 13 può essere eliminata:

1
pg_dropcluster 13 main

È possibile avviare l'eliminazione dei pacchetti PostgreSQL della versione 13:

1
apt -y --purge autoremove postgresql-client-13 postgresql-13

Migrazione del database di CyberElements Bastion

La configurazione del prodotto è memorizzata nel database, che deve essere migrato affinché possa contenere le impostazioni delle modifiche introdotte dalla nuova versione. L'operazione si esegue sul Mediation Controller come root.

Architettura Cluster

In un'architettura Cluster è necessario eseguire l'operazione da un solo Mediation Controller, indipendentemente da quale.

È inoltre necessario eseguire il comando seguente:

1
python3 /var/lib/ipdiva/care/manage.py migrate

La migrazione dei dati si avvia con un comando equivalente a questo:

1
python3 /var/lib/ipdiva/care/manage.py migrate --database=<org_clr>

Dove <org_clr> deve essere sostituito con il nome dell'organizzazione da migrare. Si noti che, se il Mediation Controller ha più organizzazioni (multi-tenant), sarà necessario eseguire il comando tante volte quante sono le organizzazioni da migrare.

Esempio

Per una piattaforma CyberElements Bastion che ha le organizzazioni systancia e systancia-test, sarà necessario eseguire i comandi seguenti:

1
2
python3 /var/lib/ipdiva/care/manage.py migrate --database=systancia
python3 /var/lib/ipdiva/care/manage.py migrate --database=systancia-test

Dopo la migrazione del database, il servizio Apache2 deve essere riavviato:

1
systemctl restart apache2

Ripristino delle configurazioni

Alcune configurazioni sono state sovrascritte durante il processo di aggiornamento di versione e devono essere ripristinate.

File commonParameters.conf:

Spostare i tag <Location> relativi agli HTML5 Gateway, che si trovano generalmente alla fine del file, dal file /etc/ipdiva/httpd/commonParameters.conf.dpkg-old a /etc/ipdiva/httpd/commonParameters.extra.conf (creare il file se non esiste). Se non è presente alcun tag <Location>, è possibile copiare gli esempi seguenti.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<Location /HTML5/>
    Order allow,deny
    Allow from all
    ProxyPass http://127.0.0.1:1234/systanciaHTML5-6.0/ flushpackets=on
    ProxyPassReverse http://127.0.0.1:1234
</Location>

<Location /HTML5/websocket-tunnel>
    Order allow,deny
    Allow from all
    ProxyPass ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
    ProxyPassReverse ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
</Location>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<Location /HTML5-1/>
    Order allow,deny
    Allow from all
    ProxyPass http://127.0.0.1:1234/systanciaHTML5-6.0/ flushpackets=on
    ProxyPassReverse http://127.0.0.1:1234
</Location>

<Location /HTML5-1/websocket-tunnel>
    Order allow,deny
    Allow from all
    ProxyPass ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
    ProxyPassReverse ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
</Location>

<Location /HTML5-2/>
    Order allow,deny
    Allow from all
    ProxyPass http://127.0.0.1:1235/systanciaHTML5-6.0/ flushpackets=on
    ProxyPassReverse http://127.0.0.1:1235
</Location>

<Location /HTML5-2/websocket-tunnel>
    Order allow,deny
    Allow from all
    ProxyPass ws://127.0.0.1:1235/systanciaHTML5-6.0/websocket-tunnel
    ProxyPassReverse ws://127.0.0.1:1235/systanciaHTML5-6.0/websocket-tunnel
</Location>

File djangosettings.ini:

Copiare le informazioni della riga 2 «allowed_hosts» del file /etc/ipdiva/care/djangosettings.ini.dpkg-old nel file /etc/ipdiva/care/djangosettings.ini. Questa operazione può essere automatizzata con il comando seguente, eseguito come root:

1
sed -i "2c\\`sed -n '2p' /etc/ipdiva/care/djangosettings.ini.dpkg-old`" /etc/ipdiva/care/djangosettings.ini

Applicazione dei ripristini:

Per applicare i ripristini è necessario riavviare il servizio Apache2 come root:

1
systemctl restart apache2

Convalida

Una volta completato l'aggiornamento di versione, l'infrastruttura CyberElements Bastion deve essere convalidata per assicurarsi che funzioni correttamente prima del ritorno in produzione. Se la convalida non riesce, prendere in considerazione un ritorno alla situazione precedente ripristinando i backup dei server CyberElements Bastion.

Accedere all'interfaccia di amministrazione di un'organizzazione, quindi al menu «About» della barra di controllo per verificare che la versione del Mediation Controller sia stata aggiornata correttamente alla 4.6.

È possibile avviare i primi test di funzionamento della piattaforma, ma si raccomanda di utilizzare la versione 4.6 dell'Edge Gateway per garantire prestazioni ottimali delle applicazioni CyberElements Bastion.