Aggiornamenti automatici e rollback manuali

Fedora CoreOS fornisce aggiornamenti atomici e rollback tramite distribuzioni OSTree.

Per impostazione predefinita, il sistema operativo esegue aggiornamenti automatici continui tramite due componenti:

  • rpm-ostree gestisce più distribuzioni OSTree su disco e può passare da una all’altra al momento dell’avvio.

  • Zincati controlla continuamente gli aggiornamenti del sistema operativo e li applica tramite rpm-ostree.

Diffidenza agli aggiornamenti

L’agente Zincati locale verifica periodicamente con un servizio remoto la disponibilità degli aggiornamenti. È possibile fornire un valore personalizzato di "diffidenza di rollout" (vedere documentazione) per consentire al server di sapere come desideroso, o quanto avverso al rischio, il nodo è nel ricevere aggiornamenti.

Il parametro rollout_wariness può essere impostato su un valore in virgola mobile compreso tra 0.0 (più entusiasta) e 1.0 (più conservativo). Per ricevere gli aggiornamenti molto presto nel ciclo di implementazione graduale, un nodo può essere configurato con un valore basso (ad esempio 0.001). Questa operazione può essere eseguita durante il provisioning utilizzando lo snippet di configurazione Butane mostrato di seguito:

Esempio: configurazione della cautela nell’implementazione di Zincati
variante: fcos
versione: 1.7.0
magazzinaggio:
  file:
    - percorso: /etc/zincati/config.d/51-rollout-wariness.toml
      contenuto:
        inline: |
          [identità]
          rollout_wariness = 0,001

Finalizzazione dell’aggiornamento del sistema operativo

Per finalizzare un aggiornamento del sistema operativo, la macchina deve riavviarsi. Poiché si tratta di un’azione invasiva che può causare l’interruzione del servizio, Zincati consente all’amministratore del cluster di controllare quando è consentito riavviare i nodi per la finalizzazione dell’aggiornamento.

Sono disponibili le seguenti strategie di finalizzazione:

  • Non appena l’aggiornamento viene scaricato e gestito localmente, riavviare immediatamente per applicare un aggiornamento.

  • Utilizza un gestore di blocchi esterno per coordinare il riavvio di una flotta di macchine.

  • Consenti riavvii solo entro finestre di manutenzione configurate, definite su una pianificazione UTC settimanale.

Su ciascun nodo è possibile configurare una strategia di finalizzazione specifica.

Lo snippet Butane riportato di seguito mostra come definire due finestre di manutenzione durante i giorni del fine settimana, a partire dalle 22:30 UTC e della durata di un’ora ciascuna:

Esempio: configurazione della strategia di aggiornamento di Zincati
variante: fcos
versione: 1.7.0
magazzinaggio:
  file:
    - percorso: /etc/zincati/config.d/55-updates-strategy.toml
      contenuto:
        in linea: |
          [aggiornamenti]
          strategia = "periodico"
          [[aggiornamenti.finestra.periodica]]
          giorni = ["Sabato", "Domenica"]
          ora_inizio = "22:30"
          lunghezza_minuti = 60

Per ulteriori dettagli sulla finalizzazione degli aggiornamenti, consultare la documentazione Zincati.

Rollback manuali

Quando un aggiornamento è completato, la precedente distribuzione del sistema operativo rimane sul disco. Se un aggiornamento causa problemi, puoi utilizzarla come fallback. Questa è un’operazione manuale che richiede l’intervento umano e l’accesso alla console.

Rollback temporaneo

Per avviare temporaneamente la precedente installazione del sistema operativo, tieni premuto Shift durante il processo di avvio. Quando appare il menu del bootloader, seleziona la voce corrispondente al sistema operativo di interesse.

Rollback permanente

Per ripristinare definitivamente la distribuzione del sistema operativo precedente, accedi al nodo di destinazione ed esegui i seguenti comandi:

# Stop the service that performs automatic updates
sudo systemctl stop zincati.service

# Contrassegna la distribuzione del sistema operativo precedente come predefinita e riavvia immediatamente su di essa
sudo rpm-ostree rollback -r

Si prega di notare che Zincati continuerà a cercare aggiornamenti e aggiornerà verso qualsiasi nuova distribuzione del sistema operativo disponibile, diversa da quella a cui hai appena ripristinato.

Se preferisci, puoi disattivare temporaneamente gli aggiornamenti automatici. In seguito, puoi riattivarli per consentire alla macchina di recuperare il normale flusso degli aggiornamenti:

# Disabilita Zincati per escludersi dagli aggiornamenti automatici futuri
sudo systemctl disable --now zincati.service

[...]

# In un momento successivo, riabilitalo per riallinearti con l'ultima versione dello stream
sudo systemctl enable --now zincati.service