Home > Server > SME Server internals: database di configurazione, azioni ed eventi

SME Server internals: database di configurazione, azioni ed eventi

In questo articolo viene analizzato il sistema di creazione e gestione del master-database di SME Server e come questo database viene modificato opportunamente tramite il sistema di scripting interno al server stesso, costituito in parte da una serie di azioni singole concatenate in appositi eventi che le richiamano alla bisogna. Visto che il mio modo di imparare è scrivere pubblico questi appunti sperando magari che siano utili a qualcuno. Se trovate inesattezze non esitate a farmele notare… 🙂

La ricerca di nuovi orizzonti mi porta a studiare nei limite delle mie possibilità gli internals (il sistema di gestione e configurazione) di SME Server. NON prendete per oro colato ciò che scrivo… tenterò di aggiornare gli appunti quando mi accorgerò che non sono esatti…

Tutti i parametri modificabili di SME Server risiedono sul db. Questi parametri vengono utilizzati per ricreare i file di configurazione (residenti in /etc/…) quando questo si rende necessario. La modifica di questi parametri può avvenire in diversi modi; dal pannello web di gestione, dalla concole, tramite script ad hoc…

I parametri possono essere costituiti da una coppia key/valore o da una key che racchiude vari parametri e i relativi valori. Il comando per vedere le chiavi è config show key

[root@gsxdev1 ~]# config show AccessType<br />
AccessType=dedicated<br />
[root@gsxdev1 ~]# config show ConsoleMode<br />
ConsoleMode=login<br />
[root@gsxdev1 ~]# config show TimeZone<br />
TimeZone=Australia/NSW<br />
[root@gsxdev1 ~]# config show atalk<br />
atalk=service<br />
    MaxClients=20<br />
    status=enabled</p>
<p>[root@gsxdev1 ~]# config show dhcpd<br />
dhcpd=service<br />
    end=192.168.1.250<br />
    start=192.168.1.65<br />
    status=disabled<br />

Le configurazioni vengono quindi ad essere semplici valori di database, per tale motivo il comando config è nella pratica il sostituto di db configuration.

<br />
[root@gsxdev1 ~]# config show LocalIP<br />
LocalIP=192.168.1.100</p>
<p>[root@gsxdev1 ~]# db configuration show LocalIP<br />
LocalIP=192.168.1.100

Il comando principale resta però “db” in quanto (prendendo l’ultimo esempio) il “configuration” specifica su quale database cercare la chiave (LocalIP) da mostrare (show). Per questo motivo volendo ad esempio visualizzare i valori associati all’account di amministrazione il comando corretto sarà

<br />
[root@gsxdev1 ~]# db accounts show admin<br />
    admin=system<br />
    EmailForward=local<br />
    FirstName=Local<br />
    ForwardAddress=<br />
    LastName=Administrator<br />
    Lockable=no<br />
    PasswordSet=yes<br />
    Removable=no<br />
    Shell=/sbin/e-smith/console<br />
    VPNClientAccess=no<br />

Abbiamo praticamente chiesto di mostrare i valori della chiave “admin” del database “accounts”.
I database principali sono

  • Configuration (che contiene i valori utilizzati per la configurazione della macchina server quali il tipo di accesso ad internet, il tipo di elaborazione a cui saranno sottoposte le caselle di posta elettronica e altro…)
  • Accounts (che contiene le informazioni sui gruppi, gli utenti, le i-bay, le stampanti “sharate”, gli pseudonimi/alias, gli account di sistema e i redirect web come ad esempio server-manager)
  • Domains (che contiene le informazioni sui domini gestiti e su come gestirli)
  • Networks (che contiene i dati su quali network sono considerati locali; se infatti l’accesso al server avviene da network non locali solitamente, se non diversamente programmato, il server non caga niente e nessuno… :-P)
  • Hosts (contiene i dati utilizzati dal DNS server e dal DHCP server interni a SME)
  • backups
  • spamassassin
  • mailpatterns
  • yum_installed
  • yum_repositories
  • yum_available
  • yum_updates

I database vengono creati, modificati e aggiornati tramite il contenuto di /etc/e-smith/db; il contenuto è costituito da directory con il nome del database con all’interno altre 3 directory utilizzate per i processi di inizializzazione, aggiornamento e migrazione (defaults/, force/ e migrate/). All’interno di defaults/ ci sono delle directory che hanno per nome le key del database e all’interno di queste ultime dei file di testo con per nome i parametri e per contenuto il valore di default del parametro.

[root@gsxdev1 db]# cd /etc/e-smith/db<br />
[root@gsxdev1 db]# ls<br />
accounts       domains       networks       yum_installed<br />
backups        hosts         spamassassin   yum_repositories<br />
configuration  mailpatterns  yum_available  yum_updates<br />
[root@gsxdev1 db]# ls configuration/<br />
defaults  force  migrate<br />
[root@gsxdev1 db]# cd /etc/e-smith/db/accounts/defaults/admin<br />
[root@gsxdev1 admin]# ls<br />
FirstName  LastName  Lockable  Removable  Shell  type  VPNClientAccess<br />
[root@gsxdev1 admin]# cat type<br />
system<br />

le cartelle force/ e migrate/ vengono utilizzate per forzare un parametro ad uno specifico valore e per i processi di aggiornamento/migrazione. Quest’ultima cartella in particolare, al contrario delle altre due, contiene i file in Perl necessari per le migrazioni “complesse” dei parametri del database.

L’inizializzazione del database prevede quindi, in sequenza, l’importazione dei valori tramite gli script Perl, il caricamento dei valori di default (che vengono applicati solo se la key o il parametro non sono ancora presenti perchè creati dagli script) e l’applicazione dei parametri della cartella force/.

Il lavoro di gestione di tutti i parametri e della creazione delle configurazioni per i diversi servizi viene quindi fatto appoggiandosi ai valori del db. Per la modifica in gruppo di una serie di parametri viene utilizzato un meccanismo basato su applicazioni (action, residenti in /etc/e-smith/events/actions/nome_azione) costituite solitamente da script che possono essere inserite in dei compiti (task) semiautomatici da eseguire in presenza di particolari condizioni. Il richiamo di questi gruppi di applicazioni avviene tramite gli eventi (event).

Nella pratica l’invio della segnalazione di evento

[root@gsxdev1 admin]# signal-event ibay-modify

andrà a richiamare le azioni contenute in

[root@gsxdev1 admin]# cd etc/e-smith/events/ibay-modify<br />
[root@gsxdev1 ibay-modify]# ls<br />
S15ibay-modify  S90atalk-reload  services2adjust  templates2expand

S15… ed S90… sono link simbolici a delle action già impostate, l’ordine di esecuzione è dato dal valore dopo la “S”.
Le cartelle services2adjust e templates2expand contengono rispettivamente i comandi da inviare ai servizi attivi e interessati dall’evento e l’eventuale frammento di template da espandere per ricreare i file di configurazione interessati dall’operazione effettuata.

[root@gsxdev1 ibay-modify]# cd services2adjust/<br />
[root@gsxdev1 services2adjust]# ls -l<br />
totale 0<br />
lrwxrwxrwx  1 root root 7  5 mar 22:54 httpd-e-smith -&gt; sigusr1<br />
lrwxrwxrwx  1 root root 6  5 mar 22:53 smbd -&gt; sighup<br />
[root@gsxdev1 services2adjust]# cd../templates2expand/etc/<br />
[root@gsxdev1 etc]# ls -l<br />
totale 12<br />
drwxr-xr-x  2 root root 4096  5 mar 23:12 atalk<br />
-rw-r--r--  1 root root    0 23 nov 20:03 hosts.allow<br />
-rw-r--r--  1 root root    0 23 nov 20:03 hosts.deny<br />
drwxr-xr-x  3 root root 4096 26 apr  2009 httpd<br />
-rw-r--r--  1 root root    0  7 ott  2008 proftpd.conf<br />
drwxr-xr-x  2 root root 4096  5 mar 22:53 samba<br />
-rw-r--r--  1 root root    0 23 nov 20:03 securetty<br />
-rw-r--r--  1 root root    0 23 nov 20:03 services<br />
-rw-r--r--  1 root root    0 23 nov 20:03 shells

Le operazioni eseguite con il comando/programma signal-event verranno registrate sui log di sistema per una eventuale consultazione a posteriori. La lista degli argomenti validi da passare al comando precedente si trova qui.

  1. Nessun commento ancora...
  1. Nessun trackback ancora...