Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’uso
Transcript of Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’uso
20/10/2016 Fuss Server
FUSS Server
20 Ottobre 2016
LugBz workshop @ CTS Einaudi
Christopher R. Gabriel
Truelite
© 2016 Truelite Srl - La copia letterale e la distribuzione del materiale qui raccolto nella sua integrità sono permesse con qualsiasi mezzo, a condizione che questa nota sia riprodotta.
20/10/2016 Fuss Server
Agenda
● Perchè● Requisiti● La soluzione software● Componenti e architettura tecnica● Futuro?
20/10/2016 Fuss Server
Perchè
● Luglio/Agosto 2005: migrazione completa a software libero di tutte le scuole in lingua italiana dell'Alto Adige.
● Schema standard presente all'interno della rete delle singole scuole, da replicare e estendere usando solo software libero
● Realizzare un modello standard che soddisfi i requisiti richiesto dalla Intendenza Scolastica
20/10/2016 Fuss Server
Requisiti
● La soluzione software è stata realizzata a partire dai requisiti relativi a:– Attuazione della migrazione– Trasferimento di competenze e formazione– Rapidità di deploy e ripristino– Mantenimento degli standard e delle policy
della distribuzione GNU/Linux adottata (Debian 3.1)
– Redistribuzione delle soluzioni tecniche e aggiornamento continuo dei requisiti tecnici
20/10/2016 Fuss Server
Migrazione
● Installazione di tutti i servizi necessari● Applicazione delle configurazioni
prestabilite● Migrazione dati utenti/gruppi/ruoli etc da
AD● Adeguamento continuo sulle
problematiche riscontrate e non individuate in fase di analisi/sopralluogo.
20/10/2016 Fuss Server
Formazione
● Per ridurre al minimo l'effort formativo necessario, la soluzione deve automatizzare al massimo tutte le procedure di installazione e configurazione
● Formazione e trasferimento di competenze verso referenti tecnici del progetto, per approfondimenti sulla struttura e la configurazione specifica a partire dal modello base.
20/10/2016 Fuss Server
Rapidità di installazione e ripristino
● 83 server in circa un mese (oltre ai ~2300 client).
● Ultima spiaggia per risoluzione dei problemi, ripetere l'installazione.
● Ridurre downtime al massimo, HA in ogni caso (nel 2005) non necessario.
● Minimizzare la quantità di lavoro del referente tecnico della scuola.
20/10/2016 Fuss Server
Standard e policy
● Utilizzare soluzioni standard● Rispettare criteri e policy della distribuzione● Integrazione totale● Nessuna ingerenza e/o introduzione di
vincoli o forzature rispetto alla flessibilità di configurazione
( SuSE Yast, anyone? <g> )● Un punto di partenza e non di arrivo
20/10/2016 Fuss Server
Redistribuzione
● Necessario automatizzare la redistribuzione dei cambiamenti successivi in termini di:– Politiche di configurazione
– Nuove integrazioni software
– Tools
– Documentazione
20/10/2016 Fuss Server
Soluzione software
● Pacchetto debian fuss-server:– Software necessari per l'ambiente server
espressi tramite dipendenze
– Template di file di configurazione
– “Wizard” con 8 domande totali per personalizzazione di base
– Script di automazione
– Applicazione fuss-server per attuazione della configurazione
20/10/2016 Fuss Server
Soluzione software
● Dati richiesti all'operatore:– Interfaccia di rete LAN e WAN
– Rete locale
– Range indirizzi dinamici DHCP
– Domanio locale
– Workgroup
– Denominazione struttura
– Master password
20/10/2016 Fuss Server
Modello rete
● Il modello è standardizzato per ogni singola scuola
FUSSSERVER
Rete esterna
LANRouter
WIFI NETWORK
20/10/2016 Fuss Server
Requisiti Rete
● La macchina server deve prevedere un minimo di 2 interfacce di rete fisica (LAN/green, WAN/red) con l'opzione di una terza per la gestione dell'ambito WIFI/blue.
● WAN può usare DHCP o indirizzamento statico: la sua configurazione specifica è demandata agli strumenti della distribuzione.
● LAN è decisa autonomamente rispetto al contesto locale, sia per indirizzamento che per dimensioni
20/10/2016 Fuss Server
Servizi
● FUSS Server si preoccupa di configurare uno stack standard di servizi, partendo dai template forniti dal pacchetto stesso.
● I template sono elaborati dall'applicazione fuss-server utilizzando i dati di configurazione forniti tramite il Wizard
● Fornisce, tramite le dipendenze, tutto i pacchetti software necessari.
20/10/2016 Fuss Server
Servizi
● LDAP - Autenticazione centralizzata● DNS - Gestione host rete locale e cache
per rete pubblica● DHCP - Range configurabile per
indirizzamento dinamico, con auto-update del DNS.
● Network File System - Condivisione sulla rete LAN delle directory home degli utenti
● Windows Primary Domain Controller
20/10/2016 Fuss Server
Servizi
● Apache HTTPD Web server● IP stateful firewall e router ● HTTP Proxy Cache● HTTP Proxy Content Filter● Proxy Secure Shell
Tutti i servizi sono implementati con componenti standard disponibili sul sistema, l'automazione riguarda la configurazione di questi. Ogni personalizzazione successiva è permessa per adattarsi al contesto specifico.
20/10/2016 Fuss Server
Fuss Server
# fuss-server create
Avvia il processo di configurazione dei servizi a partire dal file di configurazione
/etc/fuss-server/fuss-server.conf
Se il file di configurazione non è presente o non contiene le informazioni richieste, viene avviato wizard di configurazione
20/10/2016 Fuss Server
Fuss Client
● Obiettivo: ridurre al minimo complessità, tempo e difficoltà di installazione di una postazione client GNU/Linux, per inserirla nel contesto di una rete gestita da un Fuss Server
● Installa tutti i componenti software necessari
● Esegue la configurazione della macchina a partire dalle informazioni fornite dal server FUSS
20/10/2016 Fuss Server
FUSS Client - Configurazione
● Autenticazione degli utenti tramite server LDAP
● Download e installazione dei certificati SSL necessari
● Mount delle directory HOME tramite NFS● Installazione chiavi di autenticazione SSH● Sincronizzazione NSCD● Inserimento in configurazione cluster● Creazione di utente locale di amministrazione
20/10/2016 Fuss Server
FUSS Client - Configurazione
● Configurazione minimale ambiente desktop
● Registrazione su server DHCP/DNS● Rimozione di utenze locali di
test/installazione
Tutte le operazioni possono essere annullate, riportando la macchina allo stato iniziale.
20/10/2016 Fuss Server
FUSS Client - Opzioni
● -n Non utilizzo di HOME condivise, ma creazione di directory locali
● -a Configurazione della postazione● -r Annulla la configurazione della
postazione● -g Specifica cluster/gruppo di client di
appartenenza
20/10/2016 Fuss Server
Cluster?
● Cluster: indica un gruppo di macchine presenti sulla Lan. Questa configurazione, in parte automatizzata, permette l'utilizzo di strumenti (già installati) per facilitare l'amministrazione di gruppi di macchine. Ad esempio, posso creare un cluster di macchine per ogni aula presente nella scuola.
● Oltre agli strumenti integrati, possono essere gestiti tramite tool di terze parti (es. cluster-ssh)
20/10/2016 Fuss Server
2006: Octofuss Suite
● Suite di applicazioni di gestione e raccolta dati
● Componenti client: octofuss, octofuss-ctl, octofuss-client (, octonet)
● Componente server: octofussd● Struttura client/server su API HTTP simil-
REST● Strutturato per plugin● Autorizzazioni per singolo plugin
20/10/2016 Fuss Server
octofussd
● Installato su FUSS Server, responsabile della gestione e distribuzione dei dati, e di eseguire task di amministrazione
● Tutti i plugin vengono inseriti in un albero dati coerente
● Operazioni simil-REST (xmlrpc + json):– Navigazione: cd, list, ls
– Gestione: create, delete, get, has, set
– Varie: doc, has, quit
20/10/2016 Fuss Server
Octofuss Tree
$ octofussctl http://192.168.84.9:13400/conf/Username: rootPassword: Welcome to the octofussd client. Queries are sent to http://192.168.84.9:13400/conf//> lscontentfiltersambausersnetpermsfirewallcomputersauthserverinfoclusterhostqueueuserlogupgradesservicesscriptsavahicomputers/> ls /users/users/adminnobody/> ls /computers:actions:workstation1serverubuntu
20/10/2016 Fuss Server
Octofuss Tree
/> get /users/users/admin
{'uid': 'admin', 'loginShell': '/bin/false', 'enabled': False, 'gidNumber': '0', 'sambaPrimaryGroupSID': 'S-1-5-21-1529128530-807834107-4714568-512', 'sambaSID': 'S-1-5-21-1529128530-807834107-4714568-500', 'gecos': 'Netbios Domain Administrator', 'controllerGroup': None, 'homeDirectory': '/home/admin', 'uidNumber': '0', 'ou': None}
/> set /users/users/admin/loginShell /bin/bash
/> get /users/users/admin
{'uid': 'admin', 'loginShell': '/bin/bash', 'enabled': True, 'gidNumber': '0', 'sambaPrimaryGroupSID': 'S-1-5-21-1529128530-807834107-4714568-512', 'sambaSID': 'S-1-5-21-1529128530-807834107-4714568-500', 'gecos': 'Netbios Domain Administrator', 'controllerGroup': None, 'homeDirectory': '/home/admin', 'uidNumber': '0', 'ou': None}
/> cd /users/users/admin
/users/users/admin> get loginShell
/bin/bash
20/10/2016 Fuss Server
octofuss-client
● Componente installato su tutti le macchine client, per la comunicazione verso octofussd in modo trasparente
● Trasmette dati relativi alla macchina per aggregazione sul server, ed eventuale trasmissione successiva
● Riceve istruzioni e comandi da octofussd
20/10/2016 Fuss Server
octofuss
● Accesso a octofussd tramite interfaccia grafica Gtk/X-Window
● Utilizzabile tramite tunnel di rete● Componenti attivati sulla base di quanto
offerto dal server e dalle autorizzazioni per l'utente
● Permette facilmente la delega alla gestione di aspetti della rete
20/10/2016 Fuss Server
octofussctl
● Accesso a octofussd tramite CLI● Permette esecuzione di operazioni
complesse in batch, tramite scripts● Utilizzabile da remoto con minor utilizzo
di banda● OCTOFUSS_USER / OCTOFUSS_PASSWORD
nell'enviroment per automatizzare il processo di autenticazione.