FUSS Client
fuss-client è uno script python che lancia un playbook ansible che
configura una macchina come client in una rete FUSS.
fuss-client
Lo script fuss-client è scritto per python 3.
Le opzioni -a | -U | -c | -S | -l sono mutualmente esclusive e
corrispondono rispettivamente ai metodi add, upgrade, cloud,
standalone e listavail; ad eccezione di quest’ultimo si
concludono con l”os.execvp di un comando di shell per lanciare
ansible; notare che questo termina l’esecuzione del programma python,
eventuale codice successivo non viene eseguito.
Prima della configurazione, l’opzione -a ricerca e contatta un
fuss-server (metodi _test_connection e _get_cluster) per
aggiungere la macchina corrente ad un cluster, tramite l’api di
octofuss.
Notare che non esiste un’api corrispondente per rimuovere una macchina da un cluster, operazione che va svolta lato server.
Il passo successivo è la generazione di una chiave kerberos per il
client: questa operazione viene svolta sul server dallo script
add_client_principal, richiamato tramite ssh, quindi la chiave viene
copiata localmente tramite scp.
Per l’autenticazione sul server, sono supportati vari casi: accesso come
root, accesso come utente con permessi sudo, oppure accesso con chiave
con permessi limitati alle sole operazioni necessarie per lo script.
Playbook
Ansible viene chiamato con uno dei seguenti playbook, a seconda del sottocomando usato:
joined.ymlper configurare un fuss-client collegato ad un FUSS Server;
cloud.ymlper configurare un fuss-client collegato ad un FUSS Server, ma senza home su NFS;
standalone.ymlper configurare un fuss-client standalone, non collegato ad un FUSS Server.
Tutti e tre richiamano non compiono direttamente azioni, ma richiamano
ruoli dalla directory roles.
Compatibilità raspbian
Alcuni task, ed in particolare quelli relativi a lightdm, non vanno
eseguiti quando la distribuzione base non è fuss-client (o una normale
Debian), ma Raspbian, che richiede alcune personalizzazioni specifiche;
per questi si usa la condizione when: ansible_lsb.id != "Raspbian".
Pacchetti Debian
Il repository prevede la generazione di due pacchetti .deb,
fuss-client e fuss-client-dependencies; il primo contiene il
fuss-client vero e proprio, mentre il secondo è un metapacchetto che
dipende da tutti i pacchetti installati dal playbook ansible.
fuss-client-dependencies non è necessario per l’uso di fuss-client,
ma è aggiunto per comodità per pre-installare (e soprattutto
pre-scaricare) tutti i pacchetti necessari.
Numeri di versione
Il pacchetto fuss-client è nativo, quindi il numero di versione è
del tipo X.Y.Z dove X è il numero di versione debian corrispondente (ad
esempio 12 per bookworm, 13 per trixie.