Vai al contenuto

10 Automazione delle Snapshot

Nel corso di questo capitolo, è necessario essere l'utente root o essere in grado di eseguire con i privilegi di root con sudo.

L'automazione del processo di snapshot rende le cose molto più facili.

Automazione del Processo di Copia delle Snapshot

Eseguire questa procedura su incus-primary. La prima cosa da fare è creare uno script che verrà eseguito da cron in /usr/local/sbin chiamato "refresh-containers" :

sudo vi /usr/local/sbin/refreshcontainers.sh

Lo script è piuttosto semplice:

#!/bin/bash
# This script is for doing an lxc copy --refresh against each container, copying
# and updating them to the snapshot server.

for x in $(/var/lib/snapd/snap/bin/lxc ls -c n --format csv)
        do echo "Refreshing $x"
        /var/lib/snapd/snap/bin/lxc copy --refresh $x incus-snapshot:$x
        done

E poi renderlo eseguibile:

sudo chmod +x /usr/local/sbin/refreshcontainers.sh

Cambiare la ownership di questo script all'utente e al gruppo incusadmin:

sudo chown incusadmin.incusadmin /usr/local/sbin/refreshcontainers.sh

Impostare il crontab per l'utente incusadmin per l'esecuzione di questo script, in questo caso alle 10 di sera:

crontab -e

La voce avrà il seguente aspetto:

00 22 * * * /usr/local/sbin/refreshcontainers.sh > /home/incusadmin/refreshlog 2>&1

Salvare le modifiche e uscire.

Questo creerà un log, nella home directory di incusadmin, chiamato “refreshlog”, che permetterà di sapere se il processo ha funzionato o meno. Molto importante!

La procedura automatica a volte fallisce. Questo accade generalmente quando un particolare container non riesce ad aggiornarsi. È possibile eseguire manualmente l'aggiornamento con il seguente comando (assumendo rockylinux-test-9 qui, come nostro contenitore):

lxc copy --refresh rockylinux-test-9 incus-snapshot:rockylinux-test-9

Author: Spencer Steven

Contributors: Ezequiel Bruni, Ganna Zhyrnova