Installare le patch di Windows su Windows 2003


Guida a come installare nel 2022 le patch su un sistema Windows Server 2003 mai aggiornato o di recente installazione.

Necessiti di creare una virtual machine con una vecchia versione di Windows 2003 (con service pack 2) da zero? Potrebbe essere un problema.
Windows 2003 non è più supportato da Microsoft e sono pochi i software nuovi disponibili per questo sistema, ma a volte è necessario installarne uno per fare delle prove di compatibilità o utilizzare un vecchio dispositivo i cui driver sfortunatamente funzionano bene solo qui.

Dopo aver trovato la iso di 2003 o un supporto ottico, bisogna recuperare i driver necessari. Nel caso dell’installazione su virtual machine VMware sono sufficienti, per fortuna, soltanto i VMware Tools. Questi possono essere installati dopo aver installato il sistema operativo.
I VMware Tools 10 (ossia la versione 10) non sono supportati da Windows 2003 per cui è necessario procurarsi una vecchia versione.
Ecco il link: https://packages.vmware.com/tools/esx/6.0p01/windows/. Qui si possono trovare sia quelli per una versione a 32 bit del sistema oppure per la versione a 64 bit.

Dopo l’installazione dei VMware Tools su Windows Server 2003 è necessario riavviare il sistema.

L’installazione delle patch di Windows 2003 in questo momento non è fattibile e avviando la procedura è probabile che esca l’errore 0x80072eff. Infatti, Windows 2003 (SP2) arriva con il vetusto Internet Explorer 6. Questo non permette l’installazione delle patch di sicurezza del sistema per cui è necessario installare Internet Explorer 8 scaricabile da qui.

Internet Explorer 8 per Windows Server 2003 a 32 bit in inglese:

http://download.microsoft.com/download/7/5/0/7507EBD5-0193-4B7F-9F14-9014C7EB5C67/IE8-WindowsServer2003-x86-ENU.exe

Internet Explorer 8 per Windows Server 2003 a 64 bit in inglese:

http://download.microsoft.com/download/7/5/4/754D6601-662D-4E39-9788-6F90D8E5C097/IE8-WindowsServer2003-x64-ENU.exe

Una volta scaricato IE ed installato riavviare il sistema.

Se vi viene restituito l’errore 0x80072efd in quanto non è possibile scaricare https://www.update.microsoft.com/v11/3/legacy/windowsupdate/SelfUpdate/wuident.cab dovete avviare lo scaricamento delle patch con un nuovo url, infatti il link degli aggiornamenti automatici che è impostato nel sistema non funziona correttamente, è opportuno usare questo:

http://www.update.microsoft.com/microsoftupdate/v6/default.aspx?ln=en-us

per cui è sufficiente aprirlo con Internet Explorer 8 permettere l’esecuzione degli active X e procedere con la ricerca delle patch. Quest’operazione prevedere l’installazione di un tool più recente per lo scaricamento dei Windows Update.

Recensione del SSD NVME Crucial P5 Plus

In questo articolo troverete una recensione del modulo M.2 NVME Crucial P5 Plus.
Il Crucial P5 Plus è un modulo M.2 NVMe che sfrutta la tecnologia PCI Express 4.0 in modo da poter superare di gran lunga i moduli pensati per la generazione precedente.
Le specifiche riportano che il modulo può raggiungere velocità di lettura fino a 6600 MB/s per tutti i 3 modelli disponibili quello da 500 GB, da 1 TB e da 2 TB.
Il modello recensito in questo articolo è il Crucial P5 Plus 500 GB CT500P5PSSD8. Di seguito le caratteristiche riportate da Crucial per questo SSD:

CapacitàCodice prodottoLettura sequenzialeScrittura sequenzialeLettura casualeScrittura casuale
500 GBCT500P5PSSD86600 MB/s4000 MB/s360K IOPS700K IOPS
Caratteristiche tecniche del P5 Plus

La scheda madre che ospita il modulo NVMe è una ASRock X570M Pro4 che dispone di 2 slot M.2 di cui uno PCIe Gen4 x4 & SATA3 e l’altro PCIe Gen4 x4.
Esattamente quello che ci serve per fare andare tutto al massimo.

Una foto del Crucial CT500P5PSSD8

Nel mio test ho deciso di sottoporre non solo il CT500P5PSSD8 ma di aggiungere i dati anche di altri due dispositivi: uno NMVe che non supporta PCI Express 4.0 e l’altro un disco meccanico SATA. Il modulo M.2 NMVe è un SSD Intel serie 760p SSDPEKKW256G8 da 256 GB PCIe 3.1 x4, il disco meccanico è un WD Velociraptor WD1000DHTZ da 1 TB SATA 6 Gb/s.

In questo modo possiamo avere un’idea di quanto le velocità e il thoughput negli anni sia veramente migliorato di molto.

Di seguto riporto i test con i benchmark del Crucial P5 Plus, Intel serie 760p e del Velociraptor raccolti con CrystalDiskMark:

Crucial P5 Plus CT500P5PSSD8
Intel serie 760p SSDPEKKW256G8
WD Velociraptor WD1000DHTZ

Dai test si evince come il Crucial P5 Plus sia più performante del modulo M.2 NMVe di Intel che adotta una tecnologia più datata, infatti i limiti di velocità per PCIe 3.1×4 stanno attorno a 3300/2700 MB/s (in base al modulo) e l’Intel è anche il dispositivo di sistema (quindi un po’ più penalizzato).

Si può notare però facendo un raffronto con i dati indicati dal produttore che la velocità di lettura sequenziale del Crucial P5 Plus di 6600 MB/s non è stata raggiunta nel test, nei quali abbiamo rilevato 6137,61 MB/s. Per raggiungere i 6600 MB/s bisogna trovarsi in condizioni veramente particolari e del tutto inusuali nell’uso quotidiano.

C’è da dire anche che sono in commercio moduli M.2 NMVe più veloci che riescono a raggiungere un throughput di ben 7300 MB/s, di gran lunga maggiori a quelli del CT500P5PSSD8.

Tuttavia ciò che premia il nostro Crucial P5 Plus da 500 GB è il prezzo: infatti online è possibile trovarlo ad un prezzo estremamente conveniente su Amazon. Ora sta a poco meno di 70 euro per la versione a 500 GB mentre a meno di 150 euro per la versione da 1 TB ossia il Crucial P5 Plus CT1000P5PSSD8. Se invece potete spendere un po’ di più e volete un SSD che possa raggiungere e superare i 7000 MB/s in lettura, vi consiglio il WD BLACK SN850 500 GB.

Concludendo il Crucial P5 Plus da 500 GB è un modulo M.2 interessante perchè permette di sfruttare piuttosto bene la tecnologia PCI Express 4.0 e al contempo essendo abbastanza economico è un’ottima soluzione perchè ha bisogno di un unità per il proprio computer fisso oppure portatile contendo la spesa. Questo è il motivo per cui ho preferito il CT500P5PSSD8, rispetto ad altre soluzioni più costose, che userò assieme al vecchio Velociraptor per il video editing.

VirtualBox 7

E’ arrivata ieri VirtualBox7, l’ultima versione del noto software per la virtualizzazione di Oracle. Ecco le note di rilascio:

Questo è un aggiornamento importante. Sono state aggiunte a VirtualBox 7 le seguenti importanti novità:

  • Le macchine virtuali possono essere completamente crittografate, inclusi i registri di configurazione della macchina virtuale e gli stati salvati (solo CLI per ora)
  • OCI: le macchine virtuali sul cloud (OCI) possono essere aggiunte a Virtual Machine Manager e controllate come se fossero macchine virtuali locali
  • OCI: le reti cloud ora possono essere configurate tramite lo strumento Network Manager allo stesso modo in cui si fa per le reti solo host e NAT
  • GUI: aggiunta una nuova utility simile a “top” o “resource monitor” che elenca le statistiche sulle prestazioni (utilizzo della CPU, utilizzo della RAM, velocità di I/O del disco, ecc.) delle virtual machine in esecuzione
  • GUI: rielaborata la procedura guidata per la creazione di una vm in modo da integrare l’installazione automatica del sistema operativo guest e per avere un flusso di lavoro più snello
  • GUI: aggiunto un nuovo widget visualizzatore della guida di VirtualBox che consente di navigare e cercare nel manuale utente
  • GUI: aggiunta di un nuovo centro notifiche che unifica la maggior parte dei progressi di esecuzione e la segnalazione degli errori nella GUI
  • GUI: supporto dei temi migliorato su tutte le piattaforme. Linux e macOS utilizzano il motore nativo mentre per l’host Windows è implementato separatamente.
  • GUI: aggiornamento per l’icona grande.
  • Registrazione audio: ora utilizza Vorbis come formato audio predefinito per i contenitori WebM. Opus non viene più utilizzato.
  • Audio: aggiunto il tipo di driver host “predefinito” per consentire lo spostamento di VM (appliance) tra piattaforme diverse senza la necessità di modificare esplicitamente il driver audio. Quando viene selezionato il driver “predefinito”, verrà utilizzata la migliore opzione di backend audio per una piattaforma. Questa è l’impostazione predefinita per le macchine virtuali appena create.
  • Guest Control: implementato il supporto iniziale per l’aggiornamento automatico delle VirtualBox guest additions per i guest Linux
  • Controllo guest: implementata l’azione di attendere e/o riavviare il guest durante l’aggiornamento delle VirtualBox guest additions tramite VBoxManage
  • VBoxManage: aggiunto il sottocomando “waitrunlevel” di per la gestioen delle virtual machine per consentire di attendere che la virtual machine raggiunga un determinato livello di esecuzione
  • Host Windows: Aggiunto supporto sperimentale per l’esecuzione di VM avviate automaticamente nella sessione 0, per consentire l’esecuzione delle VM anche quando un utente non è connesso (disabilitato per impostazione predefinita, consultare il manuale)
  • Host macOS: tutte le estensioni del kernel sono state eliminate. VirtualBox 7 si basa ora completamente sui framework hypervisor e vmnet forniti da Apple. Al momento l’implementazione manca della funzionalità “Rete interna”. Questo sarà fornito in un secondo momento.
  • Host macOS: fornisce un pacchetto Developer Preview per i sistemi con una CPU Silicon Apple. Questo è un lavoro in corso non supportato ed è noto per avere prestazioni molto modeste.
  • Aggiunte guest Linux: funzionalità di ridimensionamento dello schermo guest rielaborata, integrazione di base aggiunta con alcuni ambienti desktop guest
  • Dispositivi: implementato il nuovo supporto 3D basato su DirectX 11 (e DXVK su host non Windows)
  • Dispositivi: aggiunti dispositivi IOMMU virtuali (variante Intel e AMD)
  • Dispositivi: aggiunti dispositivi virtuali TPM 1.2 e 2.0
  • Dispositivi: i dispositivi controller USB EHCI e XHCI fanno ora parte del pacchetto base open source
  • EFI: aggiunto il supporto per Secure Boot
  • Debug: Aggiunto supporto sperimentale per il debug delle VM tramite GDB e supporto altamente sperimentale per il debug tramite KD/WinDbg

Inoltre, sono stati corretti e/o aggiunti i seguenti elementi:

  • OCI: la funzionalità di rete cloud è stata migliorata per le macchine virtuali locali, ora le macchine virtuali locali possono essere collegate alla rete cloud
  • GUI: comportamento migliorato dell’elenco delle macchine virtuali e di vari strumenti relativi alle macchine virtuali nel caso in cui vengano selezionati più elementi
  • GUI: sulle piattaforme disponibili, è stata aggiunta una nuova opzione per disabilitare lo screensaver dell’host
  • GUI: preferenze globali, impostazioni della macchina e procedure guidate rielaborate per migliorare la stabilità e l’usabilità
  • GUI: miglioramento della gestione del mouse in caso di multi-monitor su piattaforma X11
  • GUI: il motore di enumerazione medio è stato rielaborato per migliorare le prestazioni
  • GUI: la sezione riguardante la rete NAT è stata spostata dalle preferenze globali allo strumento Network Manager globale
  • GUI: Extension Pack Manager è stato spostato dalle preferenze globali agli strumenti globali
  • GUI: accessibilità generale migliorata
  • GUI: Migrazione a una versione recente di Qt.

Come installare Oracle Virtualbox

VirtualBox è uno dei software di riferimento per la virtualizzazione su PC e portatili in quanto essendo gratuito, senza registrazione, e avendo funzionalità avanzate consente di far girare sistemi operativi contemporaneamente in ambienti isolati (chiamati virtual machine) in maniera piuttosto semplice e conveniente.

In questo tutorial vediamo come installare Virtualbox e creare una virtual machine.

I requisiti per installare Virtualbox sono decisamente abbordabili: è necessario un processore Intel o AMD x86_64, con supporto per le estensioni SSE2, meglio se la CPU ha le estensioni per la virtualizzazione.
Poi è sufficiente disporre di 6-8 GB di RAM sul proprio PC per poter eseguire senza grandi rallentamenti una virtual machine con dentro Windows.
Se, invece, vogliamo installare Linux i requisiti sono ancora più bassi, con 4 GB di RAM sul PC dovremmo cavarcela.
Tuttavia suggerisco di utilizzare un PC con almeno 8 GB così da poter usare fino a 2 VM in contemporanea oppure una virtual machine senza grossi compromessi.

Installare Virtualbox su Windows

Per installare Virtualbox su Windows (sono supportati Windows 10 e Windows 11) è sufficiente andare sul sito di Oracle Virtualbox https://www.virtualbox.org/, scaricare l’eseguibile e lanciarlo. Se desiderate scaricare direttamente l’ultima versione al momento disponibile di Virtualbox, ecco il link: https://download.virtualbox.org/virtualbox/6.1.38/VirtualBox-6.1.38-153438-Win.exe

Installare Virtualbox su Linux

Virtualbox, a causa della licenza che adotta (PUEL), non è quasi mai presente nei repository ufficiali delle varie distribuzioni. Inoltre la procedura di installazione di Virtualbox su Linux dipende dalla distribuzione; nel caso di Debian Buster è necessario aggiungere il repository esterno:

sudo tee /etc/apt/sources.list <<EOF
deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian buster contrib
EOF

Per Ubuntu 22.04:

sudo tee /etc/apt/sources.list <<EOF
deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian jammy contrib
EOF

Una volta aggiunto il repository esterno possiamo installare Virtualbox previo refresh delle fonti (passo valido sia su Debian sia su Ubuntu) in questo modo:

sudo curl -fsSL https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmour -o /usr/share/keyrings/oracle-virtualbox-2016.gpg
sudo apt update && sudo apt install virtualbox

Invece questa è la configurazione dei repository e l’installazione di Virtualbox per le distribuzioni Opensuse Tumbleweed o Leap 15.3 (o superiore):

rpm --import https://www.virtualbox.org/download/oracle_vbox.asc

tee /etc/zypper/repos.d <<EOF
[virtualbox]
name=VirtualBox for openSUSE $releasever - $basearch
baseurl=http://download.virtualbox.org/virtualbox/rpm/opensuse/$releasever/$basearch
type=yum
enabled=1
priority=120
autorefresh=1
gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
keeppackages=0
EOF

zypper refresh
zypper in virtualbox

Post-installazione di Virtualbox

Dopo aver installato Virtualbox, che sia su Ubuntu/Debian/Opensuse, è necessario aggiungere il proprio utente al gruppo vboxusers in modo da usare Virtualbox in modalità avanzata:

usermod -a -G vboxusers $USER

Poi è necessario fare logout e nuovamente login alla propria sessione (o riavviare il pc).

Creazione di una virtual machine con Windows 10 su Virtualbox

Apriamo VirtualBox manager, chiamato anche Virtualbox gestore. Al primo avvio, in ambienti Linux, ci viene chiesto se abilitare una modalità avanzata per la gestione dei dispositivi USB. Possiamo scegliere di abilitarla, premendo il pulsante “Enable”.

Per creare una nuova virtual machine su Virtualbox basta seguire il wizard di creazione che comincia premendo il pulsante Nuova.

Possiamo scegliere dal menù a tendina la versione del sistema operativo e poi assegnare il nome alla nostra virtual machine oppure digitare come nome Windows 10 e in automatico Virtualbox selezionerà l’o.s. giusto.

Decidiamo quanta RAM assegnare alla virtual machine. Per Windows 10 il minimo è 2 GB ma è opportuno assegnare almeno 3 GB alla VM per farla girare senza troppi rallentamenti.

E’ necessario creare un disco virtual dove saranno contenuti i dati del sistema. Per farlo clicchiamo su Crea.

L’impostazione di “allocazione dinamica” ci consente di risparmiare spazio su disco in quanto soltanto lo spazio strettamente necessario verrà assegnato alla VM.

Indichiamo lo spazio massimo del nostro disco. Teniamo in considerazione il software che andremmo ad installare. Come minimo assegnare 40 GB ma è più sicuro nel dubbio assegnare almeno 60 GB.

Per installare Windows 10 è necessaria una ISO del sistema operativo. Può essere scaricata in versione di prova un file iso di Windows 10 a 64 bit in italiano da questo link: http://care.dlservice.microsoft.com/dl/download/8/9/7/897D914C-5410-4EA9-B8C8-AB166B65715B/16299.15.170928-1534.rs3_release_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_it-it.iso

Per usare la iso è necessario assocciarla alla virtual machine andando nelle impostazioni e cliccando sull’icona del disco “Vuoto” e scegliendo l’icona identica che sta accando a Lettore Ottico, lì si aprirà un menù e scegliere “scegli un file di disco”. Indicare l’iso scaricata in precedenza.

Ora è possibile avviare la virtual machine premendo il pulsante “Avvia” così partirà l’installazione di Windows.

Come possiamo vedere l’installazione di Windows 10 sta partendo.

Scaricare VirtualBox Guest Additions

Le VirtualBox Guest Additions, delle applicazioni per il miglioramente delle prestazioni, sono installabili soltanto dopo che il sistema operativo è già stato installato nella virtual machine.

Possiamo scaricare l’ultima versione dei VirtualBox Guest Additions da questo link:

https://download.virtualbox.org/virtualbox/6.1.38/VBoxGuestAdditions_6.1.38.iso

Questo file va utilizzato come CD-ROM virtual da collegare alle nostre virtual machine, una volta collegato è possibile installare VirtualBox Guest Additions in modo che le performance siano maggiori. Per collegare la iso basta andare nelle impostazioni e cliccando sull’icona del disco “Vuoto” e scegliendo l’icona identica che sta accando a Lettore Ottico, lì si aprirà un menù e scegliere “scegli un file di disco” e selezionare la iso dei VirtualBox Guest Additions.

Installare Pi Hole su Raspberry Pi

Pi Hole, o meglio Pi-Hole, è uno strumento che si pone come blocco delle pubblicità (ad blocker) in una rete.
Non è facile spiegare le funzionalità di questo strumento se non con un esempio.
Le televisioni collegate ad Internet trasmettono informazioni sull’utilizzo periodicamente al produttore, agli sviluppatori delle app installate e a terze parti. Oltre a queste informazioni talvolta mostrano anche delle pubblicità e dei sondaggi.
L’obiettivo di Pi Hole è quello di contrastare queste azioni perchè spesso il proprietario del TV o del dispositivo “intelligente” non vorrebbe essere monitorato e trova che le continue pubblicità siano fastidiose.

Scopriamo come installare Pi Hole su Raspberry Pi.
Il Raspberry Pi che andremmo ad utilizzare è un vecchio Raspberry Pi 1 B (con 512 MB di RAM), le esigue risorse di ram non permettono un uso in multitasking del vecchio Raspberry che verrà dedicato a Pi Hole.
Scarichiamo l’immagine di Raspberry Pi OS da https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-32-bit, scegliamo l’immagine lite (senza desktop).
Se usiamo Windows possiamo usare un tool come Win32DiskImager per scrivere l’immagine su una scheda SD (da almeno 8 GB). Se invece usiamo Linux non è necessario un tool non integrato col nostro sistema, infatti si può usare un banalissimo:

xz --decompress 2022-09-22-raspios-bullseye-armhf-lite.img.xz | sudo dd of=/dev/sdb bs=4M status=progress conv=fsync

dove 2022-09-22-raspios-bullseye-armhf-lite.img.xz è il file scaricato di Raspberry Pi OS e /dev/sdb è il device associato alla vostra SD card.

Terminata la scrittura della SD card, scolleghiamola e inserimo la scheda nel Raspberry Pi e avviamo il sistema dandogli corrente.
Tipicamente Raspberry Pi acquisisce un indirizzo IP automaticamente se la vostra rete dispone di un server che distribuisce IP (un DHCP server), qualora non ci fosse è necessario collegare tastiera e monitor per configurare Raspberry Pi.
L’account da usare per collegarsi viene creato al primo avvio, potete scegliere un username che desiderate.

Se avete anche voi un Raspberry Pi vecchio è meglio abbassare la memoria assegnata alla scheda video da 64 MB a 16 MB in modo da avere più RAM per Pi-Hole. Questa cosa si può fare usando il comando “sudo raspi-config“.

E’ necessario assegnare un IP statico, ossia che non cambia, al vostro Raspberry Pi perchè tale IP va impostato come DNS server sui vostri dispositivi oppure potete impostare questo indirizzo nel vostro router cosicchè se il vostro router fa anche da DNS server, Pi Hole diventerà il DNS server del vostro router e non sarà necessario modificare il DNS su tutti i vostri dispositivi casalinghi a mano.

Per assegnare un IP statico è sufficiente modificare il file /etc/dhcpcd.conf insendo queste righe:
interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

dove 192.168.1.1 è l’indirizzo IP del vostro router (che agisce come gateway) e 192.168.1.100 è l’indirizzo statico che assegnerete a Pi-Hole.
Ora riavviate il Raspberry Pi perchè in seguito procederemo all’installazione di Pi Hole.

L’installazione di Pi Hole è assai banale, è sufficiente lanciare questo comando:

curl -sSL https://install.pi-hole.net | bash

Nell’interfaccia di configurazione che apparirà vi verrà chiesto quali DNS usare per risolvere gli indirizzi. Scegliamo OpenDNS.
Al termine verrà mostrata la password per l’interfacia grafica di Pi Hole, mi raccomando annotiamocela.
Per accedere all’interfaccia grafica di Pi Hole è sufficiente usare questo indirizzo su un browser:
http://192.168.1.100/admin dove 192.168.1.100 è l’ip statico che abbiamo scelto per il Raspberry Pi.

Se l’interfaccia si apre correttamente, in generale l’installazione ha avuto buon fine. Ora possiamo impostare 192.168.1.100 (ossia l’ip del Raspberry Pi) come DNS del nostro router oppure dei nostri dispositivi casalighi come TV, prese intelligenti ed altro.

Come funziona Pi-Hole?

Pi Hole nei fatti agisce come un DNS server che consente di risolvere indirizzi Internet come cdn.samsungcloudsolution.com in 95.101.22.226. In questo modo quando il vostro TV vuole risolvere il nome cdn.samsungcloudsolution.com, Pi hole gli risponderà 95.101.22.226.
Supponiamo che alcuni network pubblicitari usino dei particolari indirizzi per veicolare la pubblicità. Per esempio ad.doubleclick.net (al momento 142.251.1.149) è usato per le pubblicità di Double Click, in questo caso Pi Hole invece che rispondere con l’ip 142.251.1.149 risponde con 0.0.0.0 nei fatti dicendo che ad.doubleclick.net non è risolvibile e quindi il banner pubblicitario non viene scaricato.

Pi Hole ha dei limiti proprio nella suo metodo di funzionamento. Non è propriamente un Ad blocker come si definisce per il semplice fatto che non tutti i siti porpalano le pubblicità su uno specifico indirizzo Internet diverso da quello dove veicolano i contenuti: il caso più significativo è Youtube. Infatti se intendete usare Pi Hole per bloccare le pubblicità di Youtube farete un buco nell’acqua. In questo caso è più efficiente un tool come uBlock Origin, Adblock Plus ma che difficilmente si può installare su televisori.

Allora perchè è utile Pi Hole?

Usate Netflix sul vostro TV? Io mai, eppure l’app di Netflix frequentemente raccoglie dati ma non è l’unica in quanto Mediaset e altre come Amazon, Google sono lì a raccogliere informazioni sul mio televisore e tutti gli apparecchi come smartphone, prese intelligenti…

Migrazione da Oracle Linux 8 a Oracle Linux 9

Oracle Enterprise Linux, o come spesso viene chiamata Oracle Linux, è una scelta alquanto obbligata quando si vuole usare il celeberrimo database Oracle: sebbene Windows sia una possibilità ma è meglio evitare se si vuol puntare alle performance massime; le altre soluzioni sono a pagamento (Red Hat Enterprise Linux e SUSE Linux Enterprise Server) e non così ben supportate dal software.
Oracle database è stato uno degli applicativi aziendali più utilizzati nel corso dell’ultimo ventennio e anche se ci sono soluzioni più economiche e flessibili, ancora molti preferiscono utilizzare Oracle database, pure per progetti nuovi. Motivo per cui, questa distribuzione è abbastanza diffusa.

Vediamo in questo articolo come si può migrare un sistema da Oracle Linux 8 a Oracle Linux 9.

Note: se avete Oracle Database installato sul sistema, vi conviene attendere perchè Oracle Linux 9 non è ancora supportato al momento della stesura di questo articolo.


Prima di passare a a Oracle Linux 9 è bene assicurarsi che il proprio sistema e server soddisfino i criteri minimi di Oracle Linux 9, leggendo questa guida.

Prima dell’aggiornamento di Oracle Linux con Leapp

L’applicazione Leapp è un insieme di strumenti per l’aggiornamento del sistema operativo e delle sue applicazioni. Tuttavia sono necessari alcuni passaggi prima di poterla usare.

Accertiamoci che tutte le applicazione siano state fermate prima dell’aggiornamento a Oracle Linux 9. Es. se abbiamo Apache httpd attivo, stoppiamolo.

Se Oracle Linux 8 è dietro un proxy, è opportuno verificare le impostazioni del proxy in /etc/yum.conf, ad esempio:

proxy=proxy-url:port

questo è necessario perchè Leapp scaricherà i pacchetti dalla rete.

Se è stato installato il pacchetto yum-plugin-versionlock (se non c’è, non serve), è necessario cancellare tutti i pacchetti con versioni bloccate.

sudo dnf versionlock clear

Il secure boot va disabilitato perchè altrimenti non ci permetterà di fare l’upgrade.
Per sapere lo stato del secure boot si può usare il comando:

sudo bootctl status

Il secure boot va disabilitato nel BIOS/EFI del proprio PC. Per esempio se il nostro sistema si trova su VMware ESXi, possiamo toglierlo dalle impostazioni della virtual machine quando essa è spenta.

Dopo aver disattivato il secure boot, è conveniente anche installare gli ultimi aggiornamenti disponibili per Oracle Linux 8. Per farlo è sufficiente usare il classico comando:

sudo yum update

Se il sistema ha file system montati in rete, questi vanno smontali e siccome il sistema verrà riavviato è bene commentare le voci correlate nel file /etc/fstab.

La procedura di upgrade prevede che la localizzazione (locale) sia impostato su en_US.UTF-8, per cui per sapere quale è quello sul nostro sistema, possiamo visualizzarlo col comando:

cat /etc/locale.conf

Qualora serva cambiarlo, per impostarlo usiamo:

sudo localectl set-locale LANG=en_US.UTF-8

Se abbiamo il firewall attivo, disattiviamo lo Zone Drifting di Firewalld:

sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf

Se Oracle Linux è registrato con ULN o un mirror ULN, bisogna disattivare la registrazione del sistema, maggiori info qui.

A questo punto possiamo riavviare nuovamente il sistema e poi procedere con il comando necessario all’installazione di Leapp (e dei suoi repository):

sudo dnf install -y leapp-upgrade --enablerepo=ol8_leapp,ol8_appstream,ol8_baseos_latest

Aggiornamento di Oracle Linux con Leapp

E’ necessario abilitare il login di root via SSH, per farlo mettiamo yes come valore al parametro PermitLogin nel file di configurazione di SSH /etc/ssh/sshd_config.

sed -i "s/^PermitRootLogin=no/PermitRootLogin=yes/" /etc/ssh/sshd_config

Se si utilizza un server proxy (altrimenti non lanciare questo comando), modificare /etc/yum.repos.d/leapp-upgrade-repos-ol9.repo aggiungendo l’impostazione proxy per ogni voce del repository dove proxy-host:proxy-port è il nome del vostro proxy e della porta.

sudo sed -i '/^enabled=0.*/a proxy=http://proxy-host:proxy-port' /etc/yum.repos.d/leapp-upgrade-repos-ol9.repo 

Eseguire il comando di preaggiornamento:

sudo leapp preupgrade --oraclelinux

Quando si utilizza questo argomento –oraclelinux, i seguenti repository vengono automaticamente abilitati:

  • ol9_baseos_latest
  • ol9_appstream
  • ol9_UEKR7

Se è necessario aggiunger i repository degli add-ons è bene farlo in questa fase mutando il precedente comando in:

sudo leapp preupgrade --enablerepo 'ol9_baseos_latest' --enablerepo 'ol9_appstream' --enablerepo 'ol9_UEKR7' --enablerepo 'ol9_addons'

Al termine del comando di preaggiornamento, è opportuno consultare l’esito di Leapp: viene infatti prodotto un file /var/log/leapp/leapp-report.txt dove vengono identificati i potenziali rischi e problemi per l’aggiornamento. In base a quello che c’è scritto si possono porre i rimedi necessari e rilanciare il comando leapp preupgrade più volte fino a che il nostro sistema non sia pronto per l’aggiornamento da Oracle Linux 8 a 9.

Vediamo un esempio di file di report in questa immagine.

Il classico messaggio relativo a “GPG Key Issue” è riscontrabile in parecchi sistemi sottoposti a migrazione, perchè dipende da quale versione di Oracle Linux abbiamo fatto l’installazione iniziale.

Per capire quale è la versione di gpg-pubkey sul sistema si può usare il comando:

rpm -qa | grep gpg-pubkey

Per esempio nel caso di questo sistema, esso è nato come Oracle Linux 8.2 e poi aggiornato con gli ultimi update.

Se siamo sicuri che questo pacchetto è effettivamente quello fornito da una delle versioni di Oracle Linux 8, possiamo ignorare l’avvertimento.

Si potrebbero verificare delle segnalazioni se abbiamo delle regole di SELinux personalizzate, in tal caso se è possibile correggerle altrimenti bisogna disabilitare SELinux.

Viene creato un ulteriore file per il debugging: /var/log/leapp/leapp-preupgrade.log

Oltre a risolvere tutti i punti critici riportati nel file /var/log/leapp/leapp-report.txt, va compilato il file /var/log/leapp/answerfile. Leapp genera delle domande vero/falso per determinare come procedere. I quesiti si trovano nel file /var/log/leapp/answerfile, questo file può essere vuoto (se non ci sono problemi).

Se c’è connettività verso i repository il comando preupgrade scaricherà anche i pacchetti necessari per l’upgrade (una parte di essi) altrimenti è necessario rilanciare il comando di preupgrade dopo aver risolto il problema di raggiungibilità dei repository.

Dopo aver completato correttamente /var/log/leapp/answerfile e verificato che /var/log/leapp/leapp-report.txt non segnali più rischi, si può aggiornare il sistema con il comando:

sudo leapp upgrade --oraclelinux

Se avete delle connessioni di rete attive, potrebbero essere terminate durante la fase di upgrade, per questo motivo è bene stoppare tutte le applicazioni non necessarie.

Al termine possiamo riavviare il sistema col classico comando di reboot. In fase di spegnimento verrà completata l’installazione dei pacchetti aggiornati. Per questo motivo, l’avvio del sistema impiegherà più tempo del normale. Fra l’altro è possibile che in avvio venga fatto il relabeling di SELinux.

Se il reboot ha avuto successo possiamo disattivare il login SSH dell’utente root, riattivare il secure boot, ripristinare le varie opzioni che abbiamo cambiato.

Al termine, il processo di aggiornamento un nuovo report in /var/log/leapp/leapp-report.txt e il file /var/log/leapp/answerfile, questi possono essere consultati per effettuare alcune modifiche che possono essere suggerite dopo l’aggiornamento.

La schermata di login di Oracle Linux 9

Se avete dei problemi durante la fase di preaggiornamento o in seguito al passaggio da Oracle Linux 8 a Oracle Linux 9, lasciate pure un commento.

Docker su Ubuntu 22.04

Non ci crederete, ma installare Docker su Ubuntu 22.04 è piuttosto semplice. L’interazione con Kubernetes solitamente richiede dei passaggi più ostici ma in questo tutorial ci concentreremo soltanto ad installare Docker su Ubuntu 22.04.

La prima cosa è aggiornare i pacchetti della nostra distribuzione all’ultima versione tramite il classico comando:

sudo apt update && sudo apt upgrade

Installare alcuni tool aggiuntivi

sudo apt install apt-transport-https ca-certificates software-properties-common

Occorre aggiungere la chiave del repository pubblico di docker (qualora non l’abbiate mai fatto):

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker.gpg

Aggiungere il repository di Docker al nostro sistema:

echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Fare un refresh dei pacchetti del sistema:

sudo apt update

Installare la versione comunity di Docker ossia il pacchetto docker-ce (e le sue dipendenze):

sudo apt install docker-ce

Ora per poter usare il nostro utente per con docker dobbiamo aggiungerlo al gruppo “docker”

sudo usermod -aG docker ${USER}

Possiamo aggiungere altri utenti al gruppo docker semplicemente con il comando sopra sostituendo ${USER} con il nome degli altri utenti presenti su Ubuntu.

Ora l’ambiente è funzionante. Se per esempio vogliamo scaricare un’immagine di Alpine Linux sul nostro sistema possiamo usare il comando:

sudo docker pull alpine

Installare Kubernetes su Ubuntu 22.04

Dopo qualche mese d’utilizzo, è ora di installare Kubernetes su Ubuntu 22.04.

L’installazione di Kubernetes (K8s) su Ubuntu 22.04 differisce da quella fatta per Ubuntu 20.04 in quanto non andremmo più ad installare Docker.

Esatto! La mancanza di Docker non è un problema anzi un’opportunità in quanto uno dei componenti di Kubernetes, chiamato dockershim, che permetteva a Kubernetes di interloquire con Docker è stato rimosso dalla versione 1.24 di K8s. Ora l’installazione di Kubernetes con Docker non è più così immediata come prima, per cui passare a containerd come runtime risulta più agevole e non limita le funzionalità.

Se avete l’esigenza di creare un disco (o un filesystem) separato dove ospitare i container farlo usando come mount point /var/lib/containerd.

Installazione di Kubernetes su Ubuntu 22.04

Dopo aver installato la versione server di Ubuntu 22.04 (l’installazione minimal con server SSH è sufficiente), il primo passaggio è quello di assegnare un IP statico (che non cambia) ai nodi Kubernetes.
Questo in quanto cambiare l’indirizzo IP successivamente all’installazione è un po’ problematico e comporta dei tempi di indisponibilità del cluster.
Altro suggerimento è quello di non cambiare l’hostname del server successivamente all’installazione e configurazione di K8s, per lo stesso motivo.

Ora procediamo! E’ necessario disabilitare la swap e attivare e modificare alcune impostazioni al kernel.

sudo swapoff -a
sudo sed -i '/swap.img/ s/^\(.*\)$/#\1/g' /etc/fstab

Aggiugere questa configurazione per il kernel:

sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

Attivare questi 2 moduli del kernel (il comando è persistente al riavvio):

sudo modprobe overlay
sudo modprobe br_netfilter

Poi aggiungere ancora queste impostazioni dedicate a Kubernetes

sudo tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

Per renderle attive è necessario ricaricare sysctl con il seguente comando:

sudo sysctl --system

Si può installare il runtime containerd. Containerd oppure un altro runtime come CRI-O potevano essere “ignorati” fino alla versione 1.23 di Kuberentes in quanto si potevano usare dei componenti creati ad-hoc per docker, ma ora questi sono stati rimossi da Kuberentes (> 1.24) per cui è più semplice usare queste parti e quindi in questa guida è stato scelto di installare il runtime di containerd anzichè docker.

Questi tool sono necessari per l’installazione dei pacchetti successivi:

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

Abilitare repository Docker

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Procedere all’ installazione di containerd (che proviene dai repository di docker):

sudo apt update
sudo apt install -y containerd.io

Configurare containerd in modo che usi systemd come cgroup.

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Riavvia e abilita il servizio containerd

sudo systemctl restart containerd
sudo systemctl enable containerd

Xenial è ancora l’ultimo repository Kubernetes disponibile per Ubuntu 22.04 (Jammy Jellyfish).
Aggiungere ora il repository per Kubernetes

sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/cloud.google.gpg
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Installare i componenti Kubernetes Kubectl, kubeadm e kubelet e impostare il fatto che futuri aggiornamenti sono bloccati per questi pacchetti.

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

Ricordiamoci che al termine dell’installazione e configurazione di Kubernetes è opportuno attivare un componente aggiuntivo di rete Pod basato su Container Network Interface (CNI) in modo che i tuoi Pod possano comunicare tra loro. Ora scegliamo una rete dalla quale saranno scelti gli IP che saranno assegnati ai vari container e servizi.
Solitamente questa rete deve essere diversa da quella del nostro ambiente in quanto altrimenti si potranno avere degli IP duplicati che comportano l’irraggiunbilità dei servizi e altri malfunzionamenti.

Ora è possibile inizializzare Kubernetes ma prima va fatta una considerazione sulla rete e su pod-network-cidr.

Siccome ad ogni nodo generalmente viene assegnato un pool di 256 indirizzi che verranno assegnati ai servizi e container bisogna calcolare una rete amplia anche per usi futuri. Con una rete come 192.168.240.0/21 è possibile avere fino ad 8 nodi in quanto ci sono 2046 indirizzi utilizzabili. Per questo motivo se pensate di aggiungere più di 8 nodi al vostro cluster, sarebbe opportuno fin da subito ampliare il pod network cidr con una rete più amplia es. 192.168.240.0/20, così da poter avere ben 16 nodi e un intervallo di indirizzi utilizzabili da 192.168.240.1 a 192.168.255.254.
Quindi nel successivo comando cambiare la rete 192.168.240.0/21 con una che soddisfa i vostri requisti. Sostituire 192.168.1.1 con l’indirizzo del server K8s che disporrà del componente Control Plane (quello che una volta era chiamato Master).

sudo kubeadm init --control-plane-endpoint 192.168.1.1 --pod-network-cidr 192.168.240.0/21

E’ importante annotarsi il comando da usare per aggiungere nuovi nodi, come worker, al nostro cluster K8s. Il comando viene dato come output alla fine dell’inizializzazione di Kubernetes.

sudo kubeadm join 192.168.1.1:6443 --token s1o2xh.sqcjbkc7f1iocf15 \
        --discovery-token-ca-cert-hash sha256:bbb0aded78f6138b3bf185dabce1f9441e6c224aa270a98b0f782dc52062af5c \
        --control-plane

192.168.1.1 dovrebbe corrispondere all’indirizzo del vostro control plane e poi vi viene fornito un token generato a caso e l’hash del token.

E’ possibile comunque rigenerare un token sostituivo per il join di un worker lanciando il seguente comando sul nodo control plane

kubeadm token create --print-join-command

Al termine dell’installazione è possibile configurare l’ambiente dei comandi in maniera comoda, lanciando quanto sotto:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Ora è necessario configurare la parte di rete.
Come gestore utilizzeremo Calico come nel precedente tutorial su Ubuntu 20.04.

curl https://docs.projectcalico.org/manifests/calico-typha.yaml -o calico.yaml
kubectl apply -f calico.yaml

Attendere una decina di minuti (dipende dalla vostra connessione) oppure verificare che tutti i pod necessari a Calico siano in esecuzione:

watch kubectl get pods --all-namespaces

E’ possibile aggiungere altri nodi, come worker, seguendo la procedura sopra ma saltando la parte di kubectl init e la configurazione del gestore di rete, per riferimento potete leggere la guida di installazione di Kubernetes su Ubuntu 20.04.

Passaggio facoltativo:

E’ possibile consentire l’esecuzione di pod anche sul nodo control plane (master); chiaramente non è un’operazione consigliata in un ambiente produttivo, ma così è possibile usare il nodo col control plane per far girare i container come se fosse un po’ un worker.

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

Risoluzione dei problemi di Kubernetes (troubleshooting)

Cosa fare quando un nodo Kubernetes risulta NotReady?

Uno dei possibile stati di un nodo, che sia Control Plane o Worker, è NotReady. Se un nodo K8s è NotReady significa che non può essere utilizzato completamente e ha qualche anomalia. Per indagare su questa eventualità si può usare il comando:
kubectl describe node

L’output di questo comando è alquanto prolisso ma possiamo trovare questa riga che ho sottolineato in giallo:

Questo significa che il gestore di rete non sta funzionando correttamente. Solitamente si consiglia di verificare che i pod del gestore siano attivi sul cluster.

Installare Kubernetes su Ubuntu 20.04

In questo articolo potrai trovare i passaggi per installare Kubernetes su Ubuntu 20.04.

Kubernetes (K8s) è un insieme di strumenti per gestire l’automazione della creazione e la scalabilità di applicativi nei container. Esso può utilizzare diverse tecnologie di container come Docker, Cri-o o Containerd. In questo tutorial scoprirai come installare Docker, Kubernetes su Focal Fossa.

Installazione di K8s

La prima cosa da fare, che tu stia usando la versione server oppure quella desktop di Ubuntu Focal Fossa 20.04 (LTS), è un aggiornamento dei pacchetti in generale tramite il comando:

sudo apt update && sudo apt upgrade

Il sistema su cui installerai Kubernetes dovrebbe essere dedicato a questo scopo perchè, poi verrà attivato l’inoltro dei pacchetti di rete ed è necessario disattivare la swap (la swap generalmente è utile in altri casi). Disattivare la swap con i comandi:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

Poi, siccome gli strumenti di Kubernetes non sono presente nei repository standard di Ubuntu, è opportuno attivare un repository esterno in questo modo:


sudo apt -y install curl apt-transport-https
wget -qO- https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Ora aggiornare nuovamente i metadati dei pacchetti con il classico apt update e poi procedere all’installazione dei pacchetti di Kubernetes.

sudo apt update
sudo apt install -y vim git kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

In seguito bisogna attivare alcuni moduli del kernel, abilitare il forward dei pacchetti di rete e configurare sysctl.

sudo tee /etc/modules-load.d/containerd.conf<<EOF
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sudo sysctl --system

Verifichiamo che i moduli del kernel aggiunti siano effettivamente attivi:

lsmod | grep br_netfilter

Ora possiamo decidere quale tecnologia di container vogliamo usare sul nostro server Kubernetes. Possiamo scegliere fra Docker, Cri-o oppure Containerd.

In questo tutorial installeremo Docker.

Installazione di Docker

Attivare i repository e installare i pacchetti necessari per Docker:

sudo apt install gnupg2 software-properties-common ca-certificates
wget -qO- https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install containerd.io docker-ce docker-ce-cli

Successivamente è necessario configurare alcune componenti di Docker al fine di sfruttare al meglio Kubernetes (per utilizzare systemd per la gestione dei cgroup del contenitore):

sudo mkdir /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

Ora per avere un riscontro riguardo il corretto funzionamento di Docker è sufficiente digitare il classico comando:


sudo systemctl status docker

Kubernetes ci richiede di creare un nodo principale, chiamato Master Node. Per creare tale nodo, abilita il servizio kubelet.

sudo systemctl enable kubelet

Poi aggiungere i componenti del control plane che include etcd (il database del cluster) e il server API.

sudo kubeadm config images pull

Quest’operazione va svolta solo nel nodo master: kubeadm consente di creare un nodo col ruolo control-plane utilizzando il comando kubeadm init. Per utilizzare il bootstrap di un cluster senza utilizzare l’endpoint DNS:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

Conviene salvare l’output del comando precedente, in particolare la parte finale gialla con l’hash code perchè ci servirà più tardi.

Completare la configurazione per avviare il cluster:

mkdir -p $HOME/.kube
sudo cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Per verificare il funzionamento di Kubernetes, lanciare il comando:

kubectl cluster-info

L’ultima cosa da fare è installare il plugin di rete sul nodo Master. Anche qui ci sono svariati plug-in che si possono utilizzare, per semplicità e comodità attiveremo Calico.

kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml 
kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml

Attendere 7-8 minuti oppure verificare che tutti i pod necessari a Calico siano in esecuzione:

watch kubectl get pods --all-namespaces

Poi controllare che Kubernetes sia ok:

kubectl get nodes -o wide

Ora la configurazione base di Kubernetes è finita. Abbiamo un nodo master che può essere usato per attivare nuove applicazioni. Per aggiungere un nodo come worker ripetere il tutorial saltando il passaggio indicato solo per nodi master (ossia kubeadm init) e aggiungere al suo posto quella di kubeadm join.

Se lo desiderate potete installare una web gui (dashboard) per la gestione di Kubernetes, comoda se siete principianti. Le istruzioni sono le successive.

Installare Kubernetes Dashboard con NodePort (facoltativo)

Puoi attivare la dashboard di Kubernetes con il comando seguente:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
kubectl --namespace kubernetes-dashboard patch svc kubernetes-dashboard -p '{"spec": {"type": "NodePort"}}'

Per verificare che si sia attivata usare il comando:

kubectl get svc -n kubernetes-dashboard
NodePort espone il servizio sull’IP di ogni nodo su una porta stabilita (la NodePort), nel caso dell’immagine sopra è la 31115, questo numero può cambiare, usate quello che vi è stato indicato.

Creiamo un file chiamato patch.yaml e incolliamo quanto sotto, ricordandoci di cambiare 31115 con la porta che vi è stata assegnata.

spec:
  ports:
  - nodePort: 31115
    port: 443
    protocol: TCP
    targetPort: 8443

Applicare la patch:

kubectl -n kubernetes-dashboard patch svc kubernetes-dashboard --patch "$(cat patch.yaml)"

Per accedere alla dashboard di Kubernetes, usare l’IP della scheda di rete di Ubuntu che si può ottenere col comando (evidenziato in giallo):

ip a | grep ens

L’url da usare quindi è https://192.168.159.135:31115 dove 192.168.159.135 è l’ip del sistema, 31115 la porta assegnata alla dashboard.

Per poter accedere alla pagina web tuttavia occorre creare un token. Per farlo creiamo un file chiamato admin.yaml con il seguente testo:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: kubedash-admin
  namespace: kube-system

Creiamo un oggetto Kubernetes attraverso una sintassi dichiarativa usando il file appena salvato:

kubectl apply -f admin.yml

Creare un file di nome admin-ClusterRoleBinding.yaml e scrivere dentro quanto sotto:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubedash-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: kubedash-admin
    namespace: kube-system

Applicare il file così:

kubectl apply -f admin-ClusterRoleBinding.yaml

Impostiamo questa variabile nella shell:

SA_NAME="kubedash-admin"

Ora lanciamo il seguente comando per avere finalmente il token:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

Con il token si può fare login.

Ed ecco la nostra dashboard.

Requisiti di age of empires 4

Age of Empires IV, videogame di strategia in tempo reale, è l’ultimo capitolo della saga degli AoE uscita per la prima volta negli anni ’90. Con questo episodio si tornerà a giocare nell’epoca medioevale, così come lo fu per Age of Empries II (probabilmente il migliore dei capitoli di AoE).

Quali sono i requisiti di sistema per giocare a Age of Empires 4?

Per giocare a AoE 4 su PC, usando Steam, è sufficiente un computer configurato in questo modo.

Requisiti di sistema minimi per Age of Empries 4:

Sistema operativo: Windows 10 64bit oppure Windows 11 64bit (non sono supportati sistemi a 32 bit)
Processore: Intel Core i5-6300U oppure AMD Ryzen 5 2400G (è necessaria una CPU con estensioni AVX)
Memoria: 8 GB di RAM minimo
Scheda video: Intel HD 520 oppure AMD Radeon RX Vega 11
DirectX: Versione 12
Memoria: 50 GB di spazio disponibile su disco o SSD.

Computer consigliato per giocare bene:

Sistema operativo: Windows 10 64bit oppure Windows 11 64bit
Processore: 3.6 GHz 6-core (Intel i5) oppure AMD Ryzen 5 1600 (è necessaria una CPU con estensioni AVX)
Memoria: 16 GB di RAM
Scheda video: Nvidia GeForce 970 GPU oppure AMD Radeon RX 570 GPU con 4GB di VRAM
DirectX: Versione 12
Memoria: 50 GB di spazio disponibilesu disco o SSD.

La configurazione per giocare a Age of Empires 4 su computer non è particolarmente onerosa, un PC per il gaming di 5-6 anni fa è sufficiente per poter giocare fluidamente al video game.

Qualora desideri un suggerimento per un PC nuovo in grado di far girare fluidamente Age of Empires 4 ma che abbia un costo contenuto, ti suggerisco il seguente portatile:

Portatile HP 14s-fq0002sl con CPU AMD Ryzen 5 4500U (con ben 6 core!!), 8 GB (2 x 4 GB) di RAM, disco NMVE da 256 GB, display da 14 pollici FullHD (1920 x 1080), Wifi AC, Bluetooth 5, 1 porta USB Type C, 2 porte USB 3.0 Type A, jack cuffie, HDMI 1.4b, batteria a 3 celle 41 Wh, Windows 10 Home, il tutto ad un peso di poco meno di 1,5 kg e con un prezzo di poco inferiore a 600 euro su Amazon. Il processore con scheda video Radeon 6 Graphics (Renoir) integrata sono un’ottima soluzione per contenere i costi e massimizzare le performance.