Salta l'introduzione Italia - Italiano
HP.com Italia Prodotti e Servizi Supporto e Drivers Soluzioni Come Acquistare
» Contatta HP
Altre opzioni
HP.com Italia
Gestione di sistemi e gruppi di lavoro: Guida per gli amministratori di sistema HP-UX > Capitolo 3 Configurazione di un sistema

Utilizzo di Distributed Systems Administration Utilities

» 

Documentazione tecnica

Libro completo in PDF
» Feedback
Inizio contenuto

 » Sommario

 » Indice

È possibile utilizzare gli strumenti Distributed Systems Administration Utilities - DSAU - per inviare file e comandi verso sistemi designati del proprio cluster o della rete. Gli strumenti DSAU offrono:

  • Configuration synchronization

  • Consolidated logging

  • Command fanout

Con la sincronizzazione della configurazione, si può avere la sicurezza che i sistemi del proprio cluster o della rete siano conformi allo standard scelto. Come saranno effettuate delle modifiche al master di configurazione, queste saranno trasmesse in tutti i sistemi client.

Con la registrazione eventi consolidata, è possibile esaminare un singolo file di log contenente le voci di tutti i sistemi nella propria configurazione, ordinate secondo data ed ora, in modo da reperire facilmente una data voce.

Con la distribuzione dei comandi, da un sistema designato è possibile inviare il medesimo comando verso tutti gli altri sistemi nella propria configurazione. In questo modo sarà eliminata l’esigenza di esaminare tutti i sistemi nella configurazione e di molte operazioni manuali.

Introduzione a Configuration Synchronization

Per gli amministratori di sistema, gestire la configurazione di un gruppo di sistemi distribuiti e le sue variazioni è una sfida costante. Sono disponibili molti strumenti di ausilio per la gestione dei vari aspetti delle configurazioni multisistema. Ad esempio, per la gestione degli account, le soluzioni standard comprendono Network Information System (NIS) e Lightweight Directory Access Protocol (LDAP). Per la sincronizzazione a livello di file, sono disponibili strumenti come rdist ( vedere la manpage rdist(1)) e rsync. System Insight Manager di HP serve a rilevare, controllare e gestire gruppi di sistemi.

Novità di questo gruppo di strumenti è Configuration Engine (cfengine). cfengine è un diffuso strumento open source per la sincronizzazione della configurazione. Consente la gestione della configurazione basata su criteri o su obiettivi, che permettono all’amministratore di definire le azioni d’amministrazione da applicare a gruppi di sistemi, in modo che essi raggiungano la condizione desiderata.

Lo strumento cfengine è su base client/server. Un sistema centrale master di configurazione, o server dei criteri, ospita il file dei criteri di configurazione, che definisce le operazioni di gestione da eseguire in ogni client amministrato. Il master di configurazione ospita inoltre i file delle “immagini golden”, le copie di riferimento dei file da distribuire nei client. L’amministratore può utilizzare cfengine per eseguire operazioni come:

  • Accertarsi che i sistemi client stiano utilizzando un insieme corretto di file di configurazione, tramite la copia dei file o delle directory di riferimento.

  • Disattivare nel client i file configurati in modo inadeguato.

  • Controllare le autorizzazioni dei file, della proprietà, e verificare le variazioni del valore checksum.

  • Modificare i file.

  • Eseguire in ogni client i comandi della shell specificati.

  • Controllare i processi ed i loro segnali.

  • Controllare il montaggio di determinati filesystem.

Per aiutare l’amministratore a configurare rapidamente cfengine per la gestione di un gruppo di sistemi distribuiti, oppure per configurarlo come servizio ad alta disponibilità di un cluster Serviceguard, è disponibile una procedura guidata di sincronizzazione della configurazione (csync_wizard).

Panoramica di cfengine

L’amministratore per prima cosa definisce un sistema centrale, oppure un cluster Serviceguard, in modo che agisca da server master di configurazione o da server dei criteri. Configuration Synchronization Wizard (csync_wizard) è un front-end di uso intuitivo per la procedura iniziale di configurazione. Questo sistema centrale ospiterà il file principale dei criteri - ad esempio cfagent.conf - che definisce i criteri di configurazione desiderati, ed anche le copie di riferimento, o copie principali, dei file che dovranno essere distribuiti nei client amministrati.

Ogni client amministrato copia i file principali dei criteri dal server centrale di configurazione e valuta la propria condizione corrente rispetto a quella definita nel file dei criteri. Qualsiasi differenza provocherà l’applicazione delle regole di configurazione, in modo da sincronizzare il client. L’amministratore può avviare le operazioni di sincronizzazione nei client amministrati in due modi, con un’operazione attiva oppure con una passiva.

  • Utilizzando il comando cfrun (per ulteriori informazioni vedere la manpage cfrun(1)) dal server master di configurazione, l’amministratore potrà forzare - “spingere” - le modifiche. cfrun legge il file cfrun.hosts per stabilire un elenco di client amministrati. Quindi esegue il comando cfagent in ogni client amministrato per eseguire la sincronizzazione. Le operazioni attive sono in realtà una richiesta ai client amministrati di eseguire immediatamente un’operazione passiva.

  • Le operazioni passive - di “traino” - sono eseguite utilizzando cron oppure l’analogo daemon cfexecd di cfengine. Entrambe le tecniche eseguono ad intervalli prefissati il comando cfagent, in modo da eseguire la sincronizzazione della configurazione avviata dal client. L’amministratore definisce quale intervallo è idoneo per ogni gruppo di client amministrati. Ad esempio, ogni cinque minuti, ogni ora, oppure una volta al giorno. L’amministratore può inoltre eseguire direttamente cfagent per eseguire una sincronizzazione a richiesta.

Comandi e daemon di cfengine

Per eseguire le operazioni di sincronizzazione della configurazione, cfengine utilizza vari daemon e comandi. L’elenco seguente descrive i componenti principali di cfengine.

  • cfagent - il comando cfagent è l’agente principale di cfengine. È eseguito in ogni client amministrato, e si avvia da sé utilizzando il file update.conf, che descrive il gruppo di file da trasferire dal server master al client amministrato locale. I file trasferiti comprendono quello principale dei criteri, cfagent.conf, e qualsiasi file dei criteri correlato. Nell’implementazione DSAU, cfagent.conf importa il file cf.main, che contiene esempi di molte funzionalità di cfengine.

    Dopo il trasferimento dei file di configurazione, cfagent valuta le istruzioni di configurazione in essi contenute. Nel caso che la configurazione corrente del sistema client si discosti da quella desiderata, cfagent eseguirà le azioni definite per riportare il client nella condizione idonea.

  • cfservd - il daemon cfservd ha due ruoli:

    • cfservd è eseguito nel server master di configurazione ed è il punto di smistamento per le richieste di trasferimento file provenienti dai client amministrati. Nei client, cfagent contatta cfservd nel server master e richiede le copie dei file principali dei criteri e le copie di qualsiasi file di riferimento che sia necessario per le operazioni di sincronizzazione della configurazione. Il comando cfservd principale è responsabile dell’autenticazione dei client remoti, tramite un meccanismo di scambio di chiavi pubblica/privata, e dell’eventuale crittografia dei file trasferiti verso i client amministrati.

    • cfservd è facoltativamente in grado di essere eseguito in ogni client amministrato, per elaborare le richieste di cfrun. Il comando cfrun consente all’amministratore di imporre le modifiche ai client amministrati, invece che attendere che essi si sincronizzino nell’intervallo di tempo definito nel client. Il comando cfrun deve essere eseguito dal server master di configurazione. Esso contatta ogni client amministrato elencato nel file cfrun.hosts e si connette a cfservd del client amministrato, richiedendo a cfagent di eseguire l’operazione di sincronizzazione.

      cfservd è configurato con cfservd.conf ed avviato con /sbin/init.d/cfservd.

  • cfexecd - cfexecd è uno strumento di pianificazione e di segnalazione. Nel caso l’amministratore utilizzi cron per eseguire la sincronizzazione ad intervalli prefissati, cfexecd è il comando situato nel file crontab per il wrapping dell’esecuzione di cfagent. Memorizza l’output dell’esecuzione di cfagent nella relativa directory - per i dettagli, vedere cfagent.conf - ed invia facoltativamente dei messaggi email.

    cfexecd ha delle proprie funzionalità analoghe a quelle di cron, basate sulle classi temporali di cfengine. L’amministratore può scegliere di eseguire cfexecd in modalità daemon e di utilizzarlo per eseguire cfagent ad intervalli prefissati al posto di cron. L’impostazione predefinita è di eseguire cfagent ogni ora. Dopo avere iniziato ad usare cfengine, risulterà più facile che utilizzare cron.

  • cfrun - il comando cfrun contatta i client amministrati richiedendo loro di eseguire immediatamente la sincronizzazione. In particolare, si connette al comando opzionale cfservd in ogni client amministrato, che a sua volta esegue cfagent.

La Figura 3-1, “Panoramica di cfengine” mostra le relazioni tra i comandi ed i daemon di cfengine, con un esempio dell’uso di cfrun da parte dell’amministratore. Le linee tratteggiate nel diagramma indicano le sequenze di chiamata (ad esempio, A chiama B). Le linee continue indicano la lettura dei dati dai file di configurazione.

Figura 3-1 Panoramica di cfengine

Panoramica di cfengine
  1. L’amministratore ha eseguito l’accesso nel server master di sincronizzazione della configurazione ed effettua una modifica da distribuire ai client amministrati, utilizzando il comando cfrun.

  2. cfrun controlla il file cfrun.hosts per l’elenco dei client amministrati. Il server master può essere client di se stesso. In questo diagramma, ci sono due client, il server master ed un client remoto.

  3. cfrun contatta cfservd in ogni client amministrato, che a sua volta esegue cfagent.

  4. cfagent per prima cosa controlla il server master per una copia aggiornata del file update.conf e, se necessario, lo trasferisce nel client.

    Nel caso che il server master sia un sistema indipendente, per impostazione predefinita la copia principale di update.conf si troverà in /var/opt/dsau/cfengine_master/inputs/. Le copie principali degli altri file di configurazione, come cfagent.conf, cfservd.conf e cfrun.hosts, si troveranno anch’esse qui. Nel caso che il server master sia un cluster Serviceguard, i file di configurazione principali si troveranno nel punto di montaggio associato al pacchetto. Ad esempio, se il nome di questo punto di montaggio è csync, il percorso sarà /csync/dsau/cfengine_master/inputs.

  5. Durante la copia dei file di configurazione nel sistema locale, cfagent li collocherà in /var/opt/dsau/cfengine/inputs sia per i sistemi indipendenti sia per i cluster. Per prima cosa, cfagent esaminerà il contenuto di update.conf, per aggiornare - se necessario - il file binario di cfengine eventualmente modificato, ed ottiene la più recente versione de file dei criteri - cfagent.conf - e dei file relativi.

    cfagent esaminerà quindi cfagent.conf per accertare se il client si trova nella condizione desiderata. In caso di differenze, cfagent eseguirà le azioni definite per correggere la configurazione del client.

Modelli di attuazione del server master di cfengine

Il server master di cfengine può essere un sistema HP-UX indipendente che serve dei gruppi di client distribuiti. I client stessi possono essere dei sistemi indipendenti, oppure membri di un cluster Serviceguard. Nel caso si stia già utilizzando un server di amministrazione centrale Systems Insight Manager, si ha a disposizione un sistema ideale da utilizzare come server master di cfengine. I server principali possono anche agire da client, e le operazioni di sincronizzazione possono essere eseguite in questi sistemi così come nei client remoti.

Nel caso si gestisca dei cluster Serviceguard, sarà possibile utilizzare cfengine esclusivamente per la sincronizzazione dei membri all’interno di un singolo cluster. In questa configurazione, cfservd è configurato come pacchetto per l’alta disponibilità, ma gli unici client di cfengine sono i membri stessi del cluster. Il nome DNS o indirizzo IP del pacchetto è quello del server master di cfengine.

Oltre a fornire la sincronizzazione della configurazione come servizio interno al cluster, un’altra configurazione di Serviceguard è quella in cui il cluster fornisce la sincronizzazione della configurazione ad alta disponibilità per gruppi di sistemi client remoti. Questi client possono essere sistemi indipendenti oppure cluster Serviceguard. Il cluster che fornisce il servizio cfengine può essere un client di se stesso e sfruttare le funzionalità di sincronizzazione della configurazione di cfengine. Una configurazione possibile anche se inconsueta è di avere un membro fisso di un cluster Serviceguard che agisca come server master ma senza che sia configurato alcun pacchetto, in modo che cfservd non sia ad alta disponibilità. Questa configurazione è valida ma non è consigliata.

Configurazione di cfengine

Le sezioni seguenti forniscono le istruzioni dettagliate per impostare un server master di sincronizzazione della configurazione e dei suoi client. Il modo più rapido per iniziare è utilizzare la procedura Configuration Synchronization Wizard (csync_wizard), descritta oltre. È anche descritta la configurazione completamente manuale.

Uso di Configuration Synchronization Wizard

La procedura csync_wizard (vedere csync_wizard(1)) automatizza le operazioni di impostazione di un server master di sincronizzazione della configurazione e dei suoi client amministrati. Supporta l’impostazione di un sistema indipendente oppure di un cluster Serviceguard come server master. La procedura guidata configura tutti i client amministrati in modo da eseguire cfservd, per consentire l’utilizzo di cfrun (vedere cfrun(8)) nel server master.

Per i dettagli, vedere oltre le relative sezioni.

Uso della procedura guidata per la configurazione di un server di sincronizzazione indipendente

Per configurare un server di sincronizzazione per un sistema indipendente, eseguire csync_wizard(1) nel sistema indipendente che si desidera configurare come server master di sincronizzazione:

# /opt/dsau/sbin/csync_wizard

La procedura guidata mostrerà la seguente schermata introduttiva:

Querying the system <nome host locale> for current status, one moment...

This Configuration Synchronization Wizard helps you set up the Configuration Engine (cfengine) environment. Cfengine is a powerful tool for performing policy-based management for groups of systems and cluster environments.

It is a client/server based utility. A standalone system or Serviceguard cluster can be configured as the cfengine ‘master’. The master contains the configuration description and configuration files that will be used by all the clients. Clients copy the configuration description from the master and apply it to themselves. The configuration description supports a rich set of management actions such as copying configuration files from the master to the client, performing edits to files, checking file ownerships, permissions, and checksums, executing shell commands, checking for processes, etc.

For a detailed description of the cfengine management actions, please refer to cfengine man page.

This wizard will help you set up this system as a cfengine master or to add or remove a cfengine client, and to perform the required security setup.

Press ‘Return’ to continue...

Premere INVIO per proseguire e scegliere la voce 1 nel menu in basso per configurare un server master:

Configuration Synchronization Wizard Menu
=========================================
(1) Set up a cfengine master server
(2) Add a client
(3) Remove a client
(4) Key management for cfengine users
(9) Exit
Enter choice: 1
The cfengine master server is being configured on:
<nome host locale>

La procedura guidata chiederà quindi se si desidera anche configurare i client amministrati subito dopo avere configurato il server. In questo esempio, la risposta è no. I client amministrati saranno aggiunti in seguito.

You can optionally specify additional remote clients to manage at this time. If you are running in an HA environment, you do not need to specify the cluster members.

Would you like to manage clients? [N]: n

La procedura guidata procederà nella configurazione del sistema come server master:

******* WARNING!!!! ******** To protect against possible corruption of sensitive configuration files, control-c has been disabled for the remainder of this configuration.

Configuration of the cfengine master server is starting.
Verifying the master has an entry in the /etc/hosts file on each client...
Keys are being created...
Keys have been created, now distributing....
Starting cfengine on the master and any pertinent client machines. This may take a few minutes....

Terminata la configurazione, la procedura guidata presenterà la seguente schermata di riepilogo, che indirizzerà l’amministratore al file principale dei criteri, /var/opt/dsau/cfengine_master/inputs/cf.main, ed al file delle risposte registrate per questa esecuzione della procedura guidata.

The Configuration Synchronization Wizard has completed the configuration of cfengine:
- The master configuration description template is here:
</var/opt/dsau/cfengine_master/inputs/cf.main>

This default template has examples of typical configuration synchronization actions performed in cfengine. For example, synchronizing critical files such as /etc/hosts, package scripts, etc.

All the actions in the template are disabled by default (commented out). Uncomment the lines corresponding to the desired synchronization actions for this configuration. See the cfengine reference documentation for a description of additional cfengine features: /opt/dsau/doc/cfengine/

Press ‘Return’ to continue...

The cfengine environment has been created with Master Host: <nome host locale>
and members:

Quando si configura un server master ma non si aggiungono dei client amministrati durante l’operazione, i membri - l’elenco dei client amministrati - non saranno presenti, come mostrato nell’esempio in alto.

A file recording the answers for this run of the Configuration Synchronization Wizard is stored here...

/var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt

This configuration can be reestablished by issuing the command:

/opt/dsau/sbin/csync_wizard \
-f /var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt

Uso della procedura guidata per la configurazione di un cluster Serviceguard come server di sincronizzazione

Per configurare un server di sincronizzazione in un cluster Serviceguard, sono possibili due scelte:

  • Creare un pacchetto Serviceguard per il servizio di configurazione in modo da garantire l’alta disponibilità.

  • Configurazione di un singolo membro del cluster come se fosse un sistema indipendente. Il servizio di sincronizzazione della configurazione non sarà ad alta disponibilità, ed inoltre questa configurazione non funzionerà correttamente con le funzionalità d’automazione di Serviceguard trattate nella sezione “Funzionalità d’automazione di Serviceguard” e non è quindi consigliata.

Questa sezione tratta l’uso della procedura guidata per impostare un servizio di sincronizzazione della configurazione ad alta disponibilità.

NOTA: Accertarsi che il valore di MAX_CONFIGURED_PACKAGES del cluster sia in grado di accogliere il pacchetto aggiuntivo. Per ulteriori informazioni su questa impostazione, consultare il manuale Managing Serviceguard, che fa parte della documentazione di Serviceguard. Inoltre, prima di eseguire la procedura guidata, tutti i membri correnti del cluster devono essere operativi.

Iniziare eseguendo Configuration Synchronization Wizard, csync_wizard(1):

# /opt/dsau/sbin/csync_wizard
Querying the system <nome host locale> for current status, one moment...
This Configuration Synchronization Wizard helps you set up the Configuration Engine (cfengine) environment. Cfengine is a powerful tool for performing policy-based management for groups of systems and cluster environments.

It is a client/server based utility. A standalone system or Serviceguard cluster can be configured as the cfengine ‘master’. The master contains the configuration description and configuration files that will be used by all the clients. Clients copy the configuration description from the master and apply it to themselves. The configuration description supports a rich set of management actions such as copying configuration files from the master to the client, performing edits to files, checking file ownerships, permissions, and checksums, executing shell commands, checking for processes, etc.

For a detailed description of the cfengine management actions, please refer to cfengine man page.

This wizard will help you set up this system as a cfengine master or to add or remove a cfengine client, and to perform the required security setup.

Press ‘Return’ to continue...

Premere INVIO per proseguire e scegliere la voce 1 nel menu in basso per configurare un server master:

Configuration Synchronization Wizard Menu
=========================================

(1) Set up a cfengine master server
(2) Add a client
(3) Remove a client
(4) Key management for cfengine users
(9) Exit

Enter choice: 1

Dopo avere scelto 1 ed avere premuto INVIO, la procedura guidata mostrerà il testo seguente:

This system is a member of a Serviceguard cluster. The cfengine configuration will be defined as a package for high availability unless you answer no to the below question. If you answer no, for the purposes of cfengine control, this machine will be treated as a single machine without failover capability for cfengine.

If you accept the default answer of ‘HA’ to the below question, cfengine will be configured as a highly available Serviceguard package. This will ensure that your cfengine master server is available as long as one of the cluster members that can run the package is also available.

You will need a free IP address for this package and you need to configure storage for the package before proceeding. For details on creating highly available file systems, please refer to ‘Creating a Storage Infrastructure’ chapters of the Managing Serviceguard documentation.

Will this master server be Highly Available (HA) [Y]:

La procedura guidata proporrà “csync” come nome del pacchetto per la sincronizzazione della configurazione. Questo specifico nome del pacchetto è obbligatorio. Prima di proseguire o iniziare la procedura guidata, deve essere impostata la configurazione d’archiviazione LVM e della rete per il pacchetto. Tutti i membri del cluster devono essere in funzione e disponibili. Per i dettagli, consultare il volume Managing Serviceguard, in “Building an HA Cluster Configuration”, “Creating a Storage Infrastructure with LVM.”

NOTA: La procedura guidata supporta solamente la creazione di pacchetti basati sui gruppi di volumi LVM. Utilizzando CFS o VxVM, sarà necessaria la configurazione manuale. Per i dettagli sulla configurazione manuale del pacchetto csync, vedere la sezione sulla configurazione manuale di un cluster Serviceguard.

La procedura guidata farà le seguenti richieste, le quali dovrebbero essere tutte già configurate:

  • Nome del gruppo di volumi LVM (ad esempio, vgcsync)

  • Volume logico nel gruppo di volumi (ad esempio, /dev/vgcsync/lvol1)

  • Il punto di montaggio del filesystem (ad esempio, /csync)

  • Le opzioni di montaggio del filesystem (ad esempio, -o rw,largefiles). Le opzioni di montaggio sono utilizzate alla lettera nel campo FS_MOUNT_OPT[0] dello script di controllo del pacchetto Service. Le opzioni di montaggio devono essere coerenti con il filesystem creato nel volume logico. Ad esempio, se il filesystem è stato creato con il supporto per i file di grande dimensione, per il punto di montaggio deve essere specificata l’opzione “largefiles”.

  • Il tipo di filesystem (ad esempio, VxFS)

  • L’indirizzo IP del pacchetto. Questo dovrebbe anche essere un nome DNS registrato, in modo che la sincronizzazione della configurazione sia di facile impostazione nei sistemi client.

  • La sottorete del pacchetto. Per accertare la sottorete, utilizzare netstat -i.

Configurata l’infrastruttura d’archiviazione ed ottenuto l’indirizzo IP, premere INVIO per accedere alla risposta predefinita “yes” e procedere con la creazione del pacchetto. La procedura guidata richiederà le informazioni del pacchetto:

Configuring the csync Serviceguard package for a highly available cfengine master.

The cfengine master server is being configured as a HA Serviceguard Package on this cluster.

Please provide the following information for the package:
Enter the Volume group? []: vgcsync
You need to enter a fully qualified Logical Volume, for example: /dev/vgname/lvol1
Enter the fully qualified Logical Volume? []: /dev/vgcsync/lvol1
Enter the Filesystem (Mount Point)? []: /csync
Enter the Mount Options? [-o rw,largefiles]:<INVIO>
Enter the Filesystem Type? [vxfs]: <INVIO>
Enter the IP address? []: 12.345.6.78
Enter the Subnet? []: 12.345.7.8

La procedura guidata chiederà ora se si desidera gestire anche dei client amministrati remoti, sistemi cioè che si trovano all’esterno del cluster. La procedura guidata configurerà automaticamente i membri correnti del cluster. Per questo motivo tutti i membri devono essere in funzione ed accessibili quando si esegue la procedura guidata. Nell’esempio mostrato in basso, l’amministratore ha scelto “no”, per cui inizialmente saranno configurati solo i membri del cluster.

I client remoti potranno essere facilmente aggiunti in seguito con la procedura guidata. Non è necessario utilizzare la procedura guidata per l’aggiunta i nuovi client quando si aggiungono altri membri al cluster. Per i dettagli, consultare la sezione sulle funzionalità d’automazione di Serviceguard.

You can optionally specify additional remote clients to manage at this time. If you are running in an HA environment, you do not need to specify the cluster members.

Would you like to manage clients? [N]: <INVIO>

La procedura guidata ora dispone di tutti i dati necessari per configurare il cluster e procede a farlo:

******* WARNING!!!! ******** To protect against possible corruption of sensitive configuration files, control-c has been disabled for the remainder of this configuration.

Configuring the ‘csync’ Serviceguard package.
Applying the ‘csync’ Serviceguard package configuration file, this will take a moment.
Starting the ‘csync’ Serviceguard package, this will take a few moments...
The ‘csync’ Serviceguard package has been started on <nome host locale>.
Configuration of the cfengine master server is starting.
Verifying the master has an entry in the /etc/hosts file on each client...
Keys are being created...
Keys have been created, now distributing....
Starting cfengine on the master and any pertinent client machines.
This may take a few minutes....

Terminata la configurazione, la procedura guidata presenterà la seguente schermata di riepilogo, che indirizzerà l’amministratore al file principale dei criteri, punto_montaggio/cfengine_master/inputs/cf.main, ed al file delle risposte registrate per questa esecuzione della procedura guidata. Il file dei criteri si trova nel filesystem appena configurato associato con il pacchetto. In questo esempio, l’amministratore ha scelto di montare il filesystem per il pacchetto come /csync.Nel caso che l’amministratore in precedenza abbia configurato cfengine, prima di sovrascrivere dei file di configurazione esistenti, la procedura guidata creerà dei backup nella directory:

/var/opt/dsau/cfengine/backups

I file nel livello superiore di questa directory sono i backup più recenti. Qualsiasi configurazione anteriore sarà salvata in sottodirectory di nome v_data_ora.

The Configuration Synchronization Wizard has completed the configuration of cfengine:

- The master configuration description template is here:
</csync/dsau/cfengine_master/inputs/cf.main>

This default template has examples of typical configuration synchronization actions performed in a cluster. For example, synchronizing critical files such as /etc/hosts, package scripts, etc.

All the actions in the template are disabled by default (commented out). Uncomment the lines corresponding to the desired synchronization actions for this cluster. See the cfengine reference documentation for a description of additional cfengine features: /opt/dsau/doc/cfengine/

Press ‘Return’ to continue...

The cfengine environment has been created with Master Host: <nome host pacchetto>
and members: <membro 1 del cluster>, <membro 2 del cluster>, ...
A file recording the answers for this run of the Configuration Synchronization Wizard is stored here...

/var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt

This configuration can be reestablished by issuing the command:
/opt/dsau/sbin/csync_wizard \
-f /var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt

Note sulla configurazione del cluster

Questa sezione descrive in dettaglio la configurazione ad alta disponibilità di cfengine in un cluster Serviceguard. Per ulteriori informazioni sui ruoli dei vari comandi e daemon di cfengine, consultare “Comandi e daemon di cfengine”. Il pacchetto Serviceguard garantisce che il daemon cfservd di cfengine rimanga ad alta disponibilità. I file di configurazione di cfengine, update.conf e cfagent.conf, definiscono il server master di sincronizzazione della configurazione in modo che sia il nome DNS registrato per l’indirizzo IP riallocabile del pacchetto. Quando i client amministrati eseguono cfagent (vedere cfagent(8)), cfagent si connette a cfservd nel nodo adottivo del pacchetto. I membri del cluster stessi sono perciò sono tutti client amministrati. Il membro che ospita il pacchetto agisce inoltre come server master per i file dei criteri.

All’avvio del cluster, ogni membro avvierà un daemon cfservd client. Si tratta del daemon cfservd che risponde alle richieste di cfrun. Quando è avviato il pacchetto in un membro, quel daemon cfservd avrà l’accesso al filesystem del pacchetto e diventerà il daemon cfservd principale, che servirà i file dei criteri a tutti i client amministrati. Questo daemon cfservd è controllato dal pacchetto. In caso di errore di cfservd, il pacchetto tenterà riavviarlo in un altro membro. Il daemon cfservd di quel membro diventerà il daemon cfservd principale.

Arrestando il pacchetto non si provocherà l’arresto del daemon cfservd nel membro adottivo, dato che ci si attende che esso sia presente per rispondere a future richieste di cfrun. Inoltre, diversamente da altri servizi ad alta disponibilità, se il pacchetto csync non è in esecuzione o non è disponibile, non ci saranno conseguenze negative per i client remoti. I client continueranno a funzionare con la propria configurazione correntemente definita. Per distribuire le nuove istruzioni di configurazione ai client amministrati, l’amministratore dovrebbe accertarsi che il pacchetto sia in esecuzione ed operativo.

La procedura guidata automatizza la distribuzione delle chiavi di cfengine in tutti i membri del cluster. Per la descrizione dettagliata della procedura di distribuzione delle chiavi, consultare “Note sulla sicurezza”.

Funzionalità d’automazione di Serviceguard

Distributed Systems Administration Utilities richiede Serviceguard 11.17 o successiva. Con Serviceguard 11.17 o successiva, gli strumenti di sincronizzazione della configurazione eseguiranno automaticamente le opportune azioni di configurazione quando si aggiungono o rimuovono membri dal cluster. In particolare:

  • Quando si aggiunge un membro al cluster, il nuovo membro sarà configurato automaticamente per partecipare alla sincronizzazione della configurazione. Nel nuovo membro avverranno automaticamente le azioni di configurazione seguenti:

    1. Sarà modificato etc/rc.config.d/cfservd per impostare ad 1 il valore di CSYNC_CONFIGURED.

    2. Saranno create le chiavi pubblica e privata di cfengine per il nuovo membro e queste saranno collocate nella directory /var/opt/dsau/cfengine/ppkeys del membro. Le nuove chiavi di questo membro saranno inoltre distribuite nella directory /var/opt/dsau/cfengine/ppkeys degli altri membri del cluster.

    3. Sarà riempita la directory /var/opt/dsau/cfengine/inputs del nuovo membro.

    4. Nel nuovo membro sarà eseguito cfservd.

    5. I file del pacchetto saranno copiati nella directory /etc/cmcluster/csync/ del nuovo membro.

    6. Sarà eseguita una sincronizzazione di cfagent nel sistema principale per riempire la sua directory /var/opt/dsau/cfengine/inputs.

    7. Sarà eseguita la sincronizzazione con cfagent nel client remoto.

  • Eliminando un membro dal cluster, la chiave pubblica del membro eliminato sarà rimossa dalla directory /var/opt/dsau/cfengine/ppkeys in tutto il cluster.

L’amministratore è in grado di definire gruppi o classi di cfengine che enumerano tutti i membri di un dato cluster Serviceguard. Queste definizioni di classi non saranno aggiornate automaticamente e, per le modifiche dell’appartenenza al cluster, l’amministratore dovrà aggiornare manualmente il file cfagent.conf e quelli correlati.

Configurazione di un client di sincronizzazione

È possibile utilizzare Configuration Synchronization Wizard per aggiungere dei client amministrati alla configurazione esistente di cfengine. Eseguire la procedura guidata nel server master, non nel sistema client. Quando un cluster Serviceguard è il server master, eseguire la procedura guidata nel nodo adottivo del pacchetto csync. L’aggiunta alla configurazione ad alta disponibilità di un nuovo membro del cluster sarà eseguita automaticamente. Per ulteriori informazioni, consultare “Funzionalità d’automazione di Serviceguard”.

Inoltre, per distribuire in sicurezza le chiavi di cfengine, il client deve essere configurato per l’accesso ssh non interattivo da parte dell’account di root del server master. Lo strumento csshsetup (vedere csshsetup(1)) facilita la configurazione dell’accesso ssh ad un sistema remoto. Questo strumento è utilizzato negli esempi in basso.

Quando i client si trovano nel medesimo dominio DNS del server master, la procedura guidata al momento è in grado di gestire solamente dei client. Per le istruzioni su come aggiungere manualmente dei client nelle configurazioni a domini multipli, consultare “Configurazione manuale ”.

In caso di aggiunta di un cluster Serviceguard come client amministrato, ogni membro del cluster dovrà essere aggiunto individualmente.

Cominciare eseguendo l’accesso come root al server master e configurare l’accesso ssh al sistema remoto:

# csshsetup <nome host del client amministrato>

Per prima cosa, csshsetup prova l’accesso ssh al sistema remoto. Nel caso non sia configurato, ssh richiederà la password del client amministrato.

Eseguire Configuration Synchronization Wizard e scegliere l’opzione 2 per aggiungere un nuovo client:

Configuration Synchronization Wizard Menu

=========================================
(1) Set up a cfengine master server
(2) Add a client
(3) Remove a client
(4) Key management for cfengine users
(9) Exit
Enter choice: 2

Alla richiesta, digitare il nome del client da aggiungere:

This option will configure additional clients to the cfengine domain.

Enter the name of the client to add: <nuovo client>

La procedura guidata proseguirà quindi a configurare il client e segnalerà il procedere dell’operazione:

Verifying the master has an entry in the /etc/hosts file on each client...

Keys are being created...
Keys have been created, now distributing....
The client <nuovo client> has been added to the cfengine domain

La procedura guidata configura ogni nuovo client in modo da eseguire cfservd, affinché sia in grado di rispondere alle richieste di cfrun ed aggiunge i client al file cfrun.hosts del server master.

Configurazione manuale

La sezione seguente descrive le operazioni necessarie per configurare manualmente cfengine nei server principali di sincronizzazione della configurazione o nei client amministrati. È in genere più semplice cominciare usando csync_wizard (vedere csync_wizard(1m)) e modificare quindi la configurazione risultante, invece che partire da zero. Questo vale particolarmente per i cluster Serviceguard, in cui procedura guidata è utile per configurare il pacchetto e si fa carico di distribuire i file di configurazione corretti in tutti i membri del cluster.

Eseguendo la configurazione manuale, è possibile creare configurazioni che non potranno essere gestite successivamente da csync_wizard. Ad esempio, la procedura guidata supporta solamente configurazioni a singolo dominio DNS. Eseguendo manualmente una configurazione a domini multipli, non sarà possibile utilizzare la procedura guidata per aggiungere e rimuovere client.

NOTA: È possibile utilizzare csshsetup per configurare una relazione di fiducia tra il server master ed i client amministrati. Questo consentirà di utilizzare i comandi per la distribuzione dei comandi come cexec e ccp (vedere cexec(1) e ccp(1)). L’uso di questi comandi può semplificare le operazioni di configurazione descritte oltre, quando sarà necessario distribuire i file nei client amministrati.
Configurazione manuale di un server di sincronizzazione indipendente

Per configurare un sistema indipendente come server master per cfengine, eseguire una sola volta le seguenti operazioni:

  1. Cominciare creando le copie principali dei file di configurazione di cfengine. Questi file si trovano in una directory nota, e sono distribuiti in ogni client amministrato. La directory predefinita è /var/opt/dsau/cfengine_master/inputs, riportata nei modelli predefiniti. Cominciare creando la directory:

    # mkdir -p /var/opt/dsau/cfengine_master/inputs

  2. Copiare i file dei modelli predefiniti nelle directory seguenti:

    # cd /var/opt/dsau/cfengine_master/inputs 
    # cp /opt/dsau/share/cfengine/templates/cf.main.template cf.main
    # cp /opt/dsau/share/cfengine/templates/update.conf.template update.conf
    # cp /opt/dsau/share/cfengine/templates/cfagent.conf.template cfagent.conf
    # cp /opt/dsau/share/cfengine/templates/cfrun.hosts.template cfrun.hosts
    # cp /opt/dsau/share/cfengine/templates/cfservd.conf.template cfservd.conf
  3. Quindi, modificare update.conf. Questo file è in un formato simile al principale file di configurazione di cfengine, cfagent.conf. È utilizzato per trasferire ed aggiornare nei client amministrati i file binari di cfengine e qualsiasi file di definizione della configurazione, ad esempio, cfagent.conf. È molto importante evitare errori e semplificare al massimo questo file. Gli eventuali errori in questo file richiederanno di copiare manualmente una nuova versione in ogni client amministrato.

    Il file contiene dei token, nella forma <%nome_token%>, che saranno sostituiti da csync_wizard con le risposte date dall’amministratore alle domande. Sostituire i token nel modo seguente:

    1. Sostituire <%HOST_NAMER%> con il nome host non qualificato del server master.

    2. Sostituire <%DOMAIN_NAMER%> con il nome di dominio del server master. Ad esempio:

      host_name = ( “nome_server_principale” ) 
      domain_name = ( “abc.xyz.com” )

      Questo modello update.conf presume che il server master ed i suoi client si trovino tutti in un singolo dominio DNS. Nel caso il proprio server master dovesse avere dei client amministrati in domini DNS multipli, modificare update.conf nel modo seguente:

    3. Sostituire <%HOST_NAMER%> con il nome host qualificato completo del server master.

    4. Eliminare la variabile <domain_name>.

    5. Sostituire la riga “domain = ( “${nome_dominio}” )” con:

      domain = ( ExecResult(/sbin/awk ‘/domain/ {print $2}’ /etc/resolv.conf) )

      Questo imposta in modo adeguato la variabile domain nel lato client. Questa tecnica presume che in ogni client amministrato /etc/resolv.conf sia stato correttamente configurato.

      Questa medesima modifica alla variabile domain dovrà anche essere eseguita in cf.main ed in cfservd.conf. Vedere le operazioni successive. Utilizzare il flag cfagent -p (oppure --parse-only) per controllare la sintassi di update.conf.

  4. Distribuire la copia principale di update.conf in ogni client amministrato. Questa operazione è descritta in “Configurazione di un client amministrato di sincronizzazione”.

  5. Creare le chiavi di protezione del server master. Per autenticare i client remoti, cfengine utilizza lo scambio delle chiavi pubblica e privata. Nel server master, ed in tutti i client amministrati, sarà creata una coppia di chiavi pubblica e privata. La chiave pubblica di ogni client amministrato sarà copiata nel server master e da questo nei client amministrati. È importante scambiare le chiavi in modo sicuro, utilizzando uno strumento come secure copy (vedere scp(1)), oppure utilizzando un nastro o un CD-ROM. Iniziare creando le chiavi per il server master:

    # /opt/dsau/sbin/cfkey
    # cd /var/opt/cfengine/ppkeys

    Ciò creerà i file localhost.pub e localhost.priv.

    Copiare la chiave pubblica in root-indirizzo_IP_server_principale.pub. Ad esempio, se l’indirizzo IP del sistema è 10.0.0.5, utilizzare questo comando:

    # cp localhost.pub root-10.0.0.5.pub

    Per i dettagli su come copiare le chiavi dei client in questo server master, vedere “Configurazione di un client amministrato di sincronizzazione”.

  6. Nel server master, configurare il daemon cfservd per l’avvio assieme al sistema. Modificare /etc/rc.config.d/cfservd e cambiare la riga CSYNC_CONFIGURED=0 in CSYNC_CONFIGURED=1. Facoltativamente, nel caso si desideri “spingere” le modifiche nei client amministrati utilizzando cfrun, ripetere questa modifica in tutti i client amministrati.

  7. cfrun richiede che i client amministrati siano elencati nel file cfrun.hosts. Nella configurazione predefinita, questo file si trova in /var/opt/dsau/cfengine_master/inputs. Modificarlo ed aggiungere il nome host di ogni client amministrato, uno per riga. Conviene fare in modo che tutti i i nomi host siano completamente qualificati. Utilizzando i nomi host completamente qualificati, “domain = riga” non è necessaria e può essere eliminata. Nel caso si usino nomi host non qualificati, cercare la riga “domain = <%DOMAIN_NAMER%>” e sostituire il token con il dominio DNS dei sistemi client. In questo modo, i client saranno solamente i membri di tale singolo dominio.

  8. Il file /var/opt/dsau/cfengine_master/inputs/cfagent.conf è quello principale dei criteri. Il file predefinito cfagent.conf comprende il modello predefinito cf.main, che è un file modello con commenti contenente esempi di azioni comuni di sincronizzazione, sia per sistemi indipendenti sia per cluster Serviceguard. Il file cf.main contiene i medesimi token <%HOST_NAMER%> e <%DOMAIN_NAMER%> di update.conf. Eseguire le medesime modifiche descritte prima al punto 3.

    Questo file predefinito cf.main non esegue azioni di amministrazione. Tutte le righe relative alle azioni sono dei commenti. Si tratta di un punto di partenza per la creazione di un gruppo personalizzato di criteri per cfengine e di azioni per i propri client amministrati. Il manuale di cfengine, che documenta la sintassi e tutte le azioni di amministrazione definite in questo file, si trova in /opt/dsau/doc/cfengine. Altri esempi di file di configurazione per cfengine, che sono presenti nella distribuzione open source di cfengine, si trovano in /opt/dsau/share/cfengine/examples.

  9. Il file /var/opt/dsau/cfengine_master/inputs/cfservd.conf controlla quali client amministrati avranno accesso ai file gestiti da cfservd nel server master. Eseguire le seguenti modifiche a cfservd.conf.

    • Eliminare interamente la riga seguente:

      domain_name        = ( “<%DOMAIN_NAMER%>” )

    • Modificare la riga

      domain             = ( “${domain_name}” )

      nel modo seguente:

      domain = ( ExecResult(/sbin/awk ‘/domain/ {print $2}’ /etc/resolv.conf)  )

    • La definizione “admit:” controlla quali client remoti avranno accesso ai file nel server. Modificare ogni occorrenza di “*.${domain_name}” con l’elenco di domini DNS dei client amministrati, separati da un spazio. Ad esempio:

      /var/opt/dsau/cfengine_master/master_files
      *.abc.xyz.com *.cde.xyz.com

      Questo esempio consente a tutti gli host nei domini elencati di accedere ai file nel server master. È inoltre possibile specificare elenchi di determinati host, intervalli di indirizzi IP, ecc. Per ulteriori informazioni, consultare il manuale di cfengine.

  10. Nel server master, eseguire cfservd:

    # /sbin/init.d/cfservd start

    Ciò dovrà essere ripetuto per ogni client amministrato.

  11. Provare la configurazione eseguendo le operazioni seguenti:

    1. In un client amministrato, utilizzare il comando:

      # cfagent --no-lock --verbose --no-splay

      L’output dettagliato mostrerà il client mentre controlla la presenza di copie aggiornate dei file principali dei criteri, mentre li copia in /var/opt/cfengine/inputs, se necessario, e mentre esegue il contenuto di cfagent.conf/cf.main.

    2. Nel server master, provare il comando cfrun:

      # cfrun -- --inform

      La sintassi --inform indica a cfagent eseguito remotamente di utilizzare il flag --inform, che darà origine a dei messaggi per tutte le modifiche eseguite da cfengine nel sistema. Per ulteriori informazioni, può essere utile --verbose:

      # cfrun -v -- --verbose

      L’opzione -v indica a cfrun stesso di essere più dettagliato e l’opzione --verbose sarà passata a cfagent eseguito remotamente.

    Per ulteriori informazioni sulla risoluzione dei problemi, consultare “Risoluzione dei problemi di cfengine”.

Configurazione manuale di un cluster Serviceguard come server di sincronizzazione

La configurazione di cfengine per l’alta disponibilità in un cluster Serviceguard è analoga a quella di una macchina indipendente, descritta nella sezione “Uso della procedura guidata per la configurazione di un server di sincronizzazione indipendente”. Le differenze principali sono la creazione del pacchetto di Serviceguard ed il meccanismo utilizzato per la distribuzione delle chiavi di protezione di cfengine. Seguire tutte le operazioni descritte oltre.

  • Preparazione iniziale del pacchetto di Serviceguard

    1. Iniziare ottenendo un indirizzo IP per il pacchetto. Questo indirizzo è in genere registrato in un DNS, per semplificare la gestione di client remoti. Utilizzando cfengine solamente all’interno di un cluster, sarà sufficiente assicurarsi che l’indirizzo sia aggiunto al file /etc/hosts di ogni membro.

    2. Quindi, creare l’infrastruttura d’archiviazione necessaria per il nuovo pacchetto. Le istruzioni per fare ciò sono documentate nel volume Managing Serviceguard, in “Building an HA Cluster Configuration”, “Creating a Storage Infrastructure.” Ad esempio, utilizzando l’infrastruttura d’archiviazione LVM, saranno necessarie le operazioni seguenti:

      1. Creare il gruppo di volumi (VG) LVM ed i volumi logici (LV), ad esempio, /dev/vgcsync/lvol1.

      2. Esportazione ed importazione dei gruppi di volumi in tutto il cluster.

      3. Configurazione dei filesystem nei volumi logici.

      4. Creare il punto di montaggio del filesystem, ad esempio, /csync, in tutto il cluster.

      I modelli predefiniti presumono che si utilizzi un’archiviazione LVM. Per utilizzare VxVM o altre archiviazioni o filesystem in tutto il cluster, eseguire le opportune modifiche ai modelli del pacchetto descritte oltre.

    3. Assicurarsi che nel membro corrente il filesystem per il pacchetto sia montato. Ad esempio, utilizzando LVM eseguire:

      # vgchange -a e /dev/vgcsync
      # mount -o rw,largefiles /dev/vgcsync/lvol1 /csync

  • Personalizzazione iniziale del file dei criteri

    1. Creare una sottodirectory per il file principale dei criteri e per i file di riferimento. Ad esempio:

      # mkdir -p /csync/dsau/cfengine_master/master_files

      Queste directory di esempio sono quelle utilizzate da csync_wizard.

    2. Copiare i file dei modelli predefiniti nella directory principale per gli input:

      # cd /csync/dsau/cfengine_master/inputs
      # cp /opt/dsau/share/cfengine/templates/cf.main.template cf.main 
      # cp /opt/dsau/share/cfengine/templates/update.conf.template update.conf
      # cp /opt/dsau/share/cfengine/templates/cfagent.conf.template cfagent.conf 
      # cp /opt/dsau/share/cfengine/templates/cfrun.hosts.template cfrun.hosts 
      # cp /opt/dsau/share/cfengine/templates/cfservd.conf.template cfservd.conf 
    3. Modificare update.conf. Questo file è in un formato simile al principale file di configurazione di cfengine, cfagent.conf. È utilizzato per trasferire ed aggiornare nei client amministrati i file binari di cfengine e qualsiasi file di definizione della configurazione, ad esempio, cfagent.conf. È molto importante evitare errori e semplificare al massimo questo file. Gli eventuali errori in questo file richiederanno di copiare manualmente una nuova versione in ogni client amministrato.

      Il file contiene dei token, nella forma <%nome_token%>, che saranno sostituiti da csync_wizard con le risposte date dall’amministratore alle domande. Sostituire i token nel modo seguente:

      • Sostituire <%HOST_NAMER%> con il nome host non qualificato del pacchetto Serviceguard.

      • Sostituire <%DOMAIN_NAMER%> con il nome di dominio DNS del pacchetto. Ad esempio:

        host_name = ( “nome-host-pacchetto”) 
        domain_name = ( “abc.xyz.com”)

      Questo update.conf modello presume che il server master ed i suoi client si trovino tutti in un singolo dominio DNS. Nel caso il proprio server master dovesse avere dei client amministrati in domini DNS multipli, modificare update.conf nel modo seguente:

      • Sostituire <%HOST_NAMER%> con il nome host qualificato completamente del pacchetto Serviceguard.

      • Eliminare la variabile “domain_name”.

      • Sostituire la riga domain = ( “${nome_dominio}” ) con:

        domain = ( ExecResult(/sbin/awk ‘/domain/ {print $2}’ /etc/resolv.conf) )

        Questo imposta in modo adeguato la variabile domain nel lato client.

      Questa medesima modifica alla variabile domain dovrà anche essere eseguita in cf.main ed in cfservd.conf. Vedere oltre. Utilizzare il flag -p (--parse-only) di cfagent per controllare la sintassi di update.conf.

  • Elenco dei client amministrati in cfrun.hosts

    cfrun richiede che tutti i client amministrati siano elencati nel file cfrun.hosts. Dato che ogni membro del cluster è considerato un client, assicurarsi che ognuno di essi sia elencato in /csync/dsau/cfengine_master/inputs/cfrun.hosts.

    Modificarlo ed aggiungere il nome host di ogni membro, uno per riga. Conviene fare in modo che tutti i i nomi host siano completamente qualificati. Utilizzando i nomi host completamente qualificati, la riga “domain =” non è necessaria e può essere eliminata. Nel caso si usino nomi host non qualificati, cercare la riga ““domain = <%DOMAIN_NAMER%>”” e sostituire il token con il dominio DNS dei membri del cluster. In questo modo, i client saranno solamente i membri di tale singolo dominio.

  • Modifica del file principale dei criteri

    Il file /var/opt/dsau/cfengine_master/inputs/cfagent.conf è quello principale dei criteri. Il file predefinito cfagent.conf comprende il modello predefinito cf.main, un file modello con caratteri di commento, contenente esempi di azioni comuni di sincronizzazione, sia per sistemi indipendenti sia per cluster Serviceguard. Modificare cf.main per sostituire i token seguenti: cf.main contiene gli stessi token <%HOST_NAMER%> e <%DOMAIN_NAMER%> di update.conf. Eseguire le medesime modifiche descritte al punto 3 del precedente elenco puntato, “Personalizzazione iniziale del file dei criteri”.

    Questo modello predefinito non esegue azioni di amministrazione. Tutte le righe relative alle azioni sono dei commenti. Contiene molti esempi specifici per la sincronizzazione dei file un cluster Serviceguard. Si tratta di un punto di partenza per la creazione di un gruppo personalizzato di criteri per cfengine e di azioni per il proprio cluster ed altri client amministrati.

    Il manuale di cfengine, che documenta la sintassi e tutte le azioni di amministrazione definite in questo file, si trova in /opt/dsau/doc/cfengine.

    Altri esempi di file di configurazione per cfengine, che sono presenti nella sua distribuzione open source, si trovano in /opt/dsau/share/cfengine/examples.

  • Modificare il file cfservd.conf

    Il file /var/opt/dsau/cfengine_master/inputs/cfservd.conf controlla quali client amministrati avranno accesso ai file gestiti da cfservd nel server master. Eseguire le seguenti modifiche a cfservd.conf.

    • Eliminare interamente la riga seguente:

      domain_name        = ( “<%DOMAIN_NAMER%>” )

    • Modificare la riga

      domain             = ( “${domain_name}” )

      nel modo seguente:

      domain = ( ExecResult(/sbin/awk ‘/domain/ {print $2}’ /etc/resolv.conf)  )

    • La definizione “admit:” controlla quali client remoti avranno accesso ai file nel server. Modificare ogni occorrenza di “*.${domain_name}” con l’elenco di domini DNS dei client amministrati, separati da un spazio. Ad esempio:

      /var/opt/dsau/cfengine_master/master_files
      *.abc.xyz.com *.cde.xyz.com

      Questo esempio consente a tutti gli host nei domini elencati di accedere ai file nel server master. È inoltre possibile specificare elenchi di determinati host, intervalli di indirizzi IP, ecc. Per ulteriori informazioni, consultare il manuale di cfengine.

  • Distribuire il file principale update.conf in ogni membro del cluster

    Usare i comandi seguenti:

    # cd /var/opt/dsau/cfengine/master_files/inputs

    # ccp update.conf /var/opt/dsau/cfengine/inputs/

    cfengine stesso si occuperà di distribuire in tutto il cluster ed a tutti i client amministrati i file rimanenti.

  • Distribuire le chiavi di protezione di cfengine

    Dato che cfengine utilizza un modello di scambio di chiavi pubblica e privata per la convalida dell’autenticità dei client amministrati, deve essere configurata una chiave che sia associata all’indirizzo IP riallocabile del pacchetto. Tale indirizzo sarà quello che i client remoti vedranno come server master. Poiché ogni membro del cluster può diventare il nodo adottivo, questa chiave deve essere identica per tutti i membri del cluster. Il comando cfkey per cfengine crea una coppia di chiavi pubblica e privata per il sistema corrente. cfkey crea i file localhost.priv e localhost.pub.

    cfengine prevede che i nomi delle chiavi utilizzino la convenzione seguente:

    nome_utente-indirizzo_IP.pub

    Ad esempio:

    root-10.0.0.3.pub

    L’amministratore copierà la chiave localhost.pub con il mone corretto in base all’indirizzo IP del sistema. Nel caso di un cluster, per la creazione delle chiavi per tutto il cluster saranno utilizzate quelle del membro corrente, con le operazioni seguenti:

    1. Usare cfkey per creare la coppia di chiavi pubblica e privata per questo membro del cluster:

      # mkdir -p /var/opt/dsau/cfengine/ppkeys 
      # cd /var/opt/dsau/cfengine/ppkeys
      # /opt/dsau/sbin/cfkey

      Ciò creerà le chiavi di nome localhost.priv e localhost.pub.

    2. La chiave pubblica, localhost.pub sarà quindi copiata in root-indirizzo_IP_pacchetto.pub. Ad esempio,

      # cp localhost.pub root-10.116.9.74.pub 

      dove 10.116.9.74 è l’indirizzo IP riallocabile del pacchetto csync.

    3. Il file localhost.pub di questo membro è sovente utilizzato per la creazione di chiavi specifiche per ogni membro:

      # cp localhost.pub root-<indirizzo_IP_membro>.pub 
      # cp localhost.pub root-<indirizzo_IP_membro2>.pub
      # cp localhost.pub root-<indirizzo_IP_membro3>.pub
      ...
      # cp localhost.pub root-<indirizzo_IP_membroN>.pub
    4. Infine, tutte le chiavi saranno copiate in ogni membro.

      # ccp * /var/opt/dsau/cfengine/ppkeys

      Nota: ccp, un comando distribuito, esegue la copia nel cluster, copiando un comando in tutti i membri del cluster.

  • Configurazione ed avvio di cfservd

    1. Configurare il daemon cfservd per l’avvio assieme al sistema. Modificare /etc/rc.config.d/cfservd e cambiare la riga CSYNC_CONFIGURED=0 in CSYNC_CONFIGURED=1.

    2. Distribuire questa modifica nel cluster:

      # ccp /etc/rc.config.d/cfservd /etc/rc.config.d/cfservd
    3. Nel server master, eseguire cfservd:

      # /sbin/init.d/cfservd start 
    4. Ripetere l’operazione per i membri rimanenti del cluster. Nel caso che il cluster sia stato configurato per l’utilizzo degli strumenti per la distribuzione dei comandi di DSAU, utilizzare il seguente comando per avviare il daemon in tutto il cluster:

      # cexec /sbin/init.d/cfservd start 
  • Creazione del pacchetto csync

    Per creare il pacchetto di sincronizzazione della configurazione, modificare i file modello predefiniti del pacchetto secondo il caso per il proprio ambiente Serviceguard. È obbligatorio che il nome del pacchetto sia csync. In caso contrario, non saranno possibili le operazioni automatiche di Serviceguard. Per maggiori informazioni, consultare la sezione “Funzionalità d’automazione di Serviceguard”

    Cominciare eseguendo le modifiche descritte oltre.

    1. Creare nel cluster la directory per il pacchetto:

      # cexec mkdir /etc/cmcluster/csync
    2. Copiare il file ASCII modello e lo script di controllo del pacchetto nella directory /etc/cmcluster/cysnc del membro corrente:

      # cd /etc/cmcluster/csync 
      # cp /opt/dsau/share/serviceguard/templates/csync.conf.template csync.conf
      # cp /dsau/share/serviceguard/templates/csync.script.template csync
      # chmod +x csync
    3. Modificare il file ASCII di configurazione del pacchetto, csync.conf, per sostituire i token segnaposto con i valori opportuni. I token sono nella forma <%nome_token%>. Cercare la riga “SUBNET <%SG_PKG_SUBNET%>” e sostituire il token con il valore di sottorete del pacchetto csync. Per identificare la sottorete, utilizzare netstat -i.

    4. Modificare lo script di controllo del pacchetto e sostituire i token segnaposto con i valori opportuni.

      Nota: il modello predefinito dello script presume che si utilizzi una configurazione d’archiviazione LVM. Nel caso che si usi VxVM e/o CFS, consultare la documentazione Managing Serviceguard per ulteriori informazioni sulla configurazione dei pacchetti utilizzando queste tecnologie. Sarà necessario rimuovere i commenti dalle sezioni LVM del modello descritte oltre, e sostituire le opportune definizioni per VxVM o per CFS.

      1. Cercare la riga “VG[0]=“<%SG_PKG_VOL_GRP%>”” e sostituire il token con il nome del gruppo di volumi LVM del pacchetto. Ad esempio, VG[0]“vgcsync”.

      2. Cercare la riga “LV[0]=“<%SG_PKG_LOG_VOL%>”” e sostituire il token con il nome completo del volume logico. Ad esempio, LV[0]=“/dev/vgcsync/lvol1”.

      3. Cercare la riga “FS[0]=“<%SG_PKG_FS%>”” e sostituire il token con il nome del punto di montaggio del filesystem creato per questo pacchetto. Ad esempio, FS[0]=“/csync”.

        Questo punto di montaggio deve essere stato creato in ogni membro del cluster come parte della configurazione d’archiviazione descritta prima.

      4. Cercare la riga “FS_MOUNT_OPT[0]=“<%SG_PKG_MNT_OPT%>”” e sostituire il token con le opzioni di montaggio del filesystem. Ad esempio, FS_MOUNT_OPT[0]=“-o rw,largefiles”.

      5. Cercare la riga “FS_TYPE[0]=“<%SG_PKG_FS_TYPE%>”” e sostituire il token con il tipo di filesystem. Ad esempio, FS_TYPE[0]=“vxfs”.

      6. Cercare la riga “FS_UMOUNT_OPT[0]=“<%SG_PKG_FS_UMOUNT_OPT%>”” e sostituire il token con le opzioni di umount per il filesystem. Questo token può essere rimosso e questa opzione lasciata in bianco nel caso non vi siano particolari opzioni per umount. Ad esempio, FS_UMOUNT_OPT[0]=“”.

      7. Cercare la riga “FS_FSCK_OPT[0]=“<%SG_PKG_FS_FSCK_OPT%>”” e sostituire il token con le opzioni di fsck specifiche per il filesystem. come prima, è possibile eliminare il token e lasciare questa opzione in bianco. Ad esempio, FS_FSCK_OPT[0]=“”.

      8. Cercare la riga “IP[0]=“<%SG_PKG_IP%>””e sostituire il token con l’indirizzo IP del pacchetto csync. Ad esempio, IP[0]= 123.456.789.3.

      9. Cercare la riga “SUBNET[0]=“<%SG_PKG_SUBNET%>”” e sostituire il token con la sottorete dell’indirizzo IP del pacchetto. Per identificare la sottorete, utilizzare netstat -i. Ad esempio, SUBNET[0]= 123.456.789.0.

    5. Distribuire nel cluster lo script di controllo ed i file ASCII di configurazione del pacchetto:

      # ccp csync csync.conf /etc/cmcluster/csync/

    6. Applicare il pacchetto ed avviarlo:

      # cmapplyconf -P csync.conf
      # cmmodpkg -e csync

  • Provare la configurazione del pacchetto csync

    Provare la configurazione eseguendo le operazioni seguenti:

    1. In un client amministrato, utilizzare il comando:

      # cfagent --no-lock --verbose --no-splay

      L’output dettagliato mostrerà il client mentre controlla la presenza di copie aggiornate dei file principali dei criteri, mentre li copia in /var/opt/cfengine/inputs, se necessario, e mentre esegue il contenuto di cfagent.conf/cf.main.

    2. Nel server master, provare il comando cfrun:

      # cfrun -- --inform

      La sintassi --inform indica a cfagent eseguito remotamente di utilizzare il flag --inform, che darà origine a dei messaggi per tutte le modifiche eseguite da cfengine nel sistema. Per ulteriori informazioni, può essere utile --verbose:

      # cfrun -v -- --verbose

      L’opzione -v indica a cfrun stesso di essere più dettagliato e l’opzione --verbose sarà passata a cfagent eseguito remotamente.

      Per ulteriori informazioni sulla risoluzione dei problemi, consultare “Risoluzione dei problemi di cfengine”.

Configurazione di un client amministrato di sincronizzazione

Quando si configurano manualmente i client amministrati, le operazioni base sono:

  • Scambio delle chiavi di protezione. Questo istituirà una relazione di fiducia tra il client amministrato ed il server master.

  • Copia di update.conf dal server master al client amministrato.

  • Impostazione di una pianificazione grazie alla quale cfagent eseguirà le operazioni di sincronizzazione.

Per configurare un cluster Serviceguard come client di un server master cfengine, ogni membro del cluster è trattato come se fosse un sistema indipendente e configurato individualmente. Aggiungendo nuovi membri al cluster, ognuno di essi dovrà essere configurato adeguatamente.Nel caso dell’aggiunta di un nuovo membro ad un cluster Serviceguard che esegue il pacchetto csync, i membri del cluster saranno configurati automaticamente come client amministrati da cfengine. In questo scenario, il pacchetto csync agisce da server master. I nuovi membri saranno configurati automaticamente come client amministrati e saranno inoltre in grado di gestire il controllo degli errori per il pacchetto. L’infrastruttura d’archiviazione ed il filesystem del pacchetto dovrebbero essere configurati prima dell’aggiunta del nuovo membro al cluster. Per aggiungere un nuovo client amministrato, iniziare configurando la relazione di fiducia tra il client ed il server master. I due sistemi si scambiano le chiavi di protezione per autenticarsi l’uno con l’altro. La chiave pubblica del server master deve essere copiata nel client e quella del client nel server master:

  1. Come root, creare le chiavi di protezione del client usando cfkey:

    # mkdir -p /var/opt/cfengine/ppkeys
    # cd /var/opt/cfengine/ppkeys
    # /opt/dsau/sbin/cfkey

    Ciò creerà i file localhost.pub e localhost.priv di questo client.

  2. Copiare la chiave del client nel server master. Per il nome delle chiavi dei client, il server master utilizza la seguente convenzione: <nome_utente>-<indirizzo_IP_client>.pub.

  3. Inviare la chiave pubblica del client nella directory ppkeys del server master, osservando la convenzione seguente:

    # scp localhost.pub server_principale:\ 
      /var/opt/cfengine/ppkeys/root-indirizzo_IP_client.pub

    Quando si trasferisce la chiave, per proteggerne l’integrità è importante utilizzare un’utility come secure copy (vedere scp(1)).

  4. Infine, copiare in questo client amministrato la chiave del server master:

    # scp server_principale:/var/opt/cfengine_master/ppkeys/localhost.pub \
      root-indirizzo_IP_server_principale.pub
  5. Quindi, copiare il file update.conf dal server master al client amministrato.

    # mkdir -p /var/opt/dsau/cfengine/inputs
    # cd /var/opt/dsau/cfengine/master_files/inputs
    # cd /var/opt/dsau/cfengine/inputs
    # scp server_principale:/var/opt/dsau/cfengine/inputs/update.conf ./update.conf

Per consentire a questo client di accettare le richieste di cfrun, compiere le operazioni seguenti:

  1. Modificare /etc/rc.config.d/cfservd ed impostare la variabile CSYNC_CONFIGURED al valore “1” - questo avvierà cfservd assieme al sistema.

  2. Avviare cfservd:

    # /sbin/init.d/cfservd start

  3. Provare la configurazione con cfagent (vedere cfagent(8)):

    # cfagent --no-lock --verbose --no-splay

    L’output dettagliato mostrerà il client mentre controlla la presenza di copie aggiornate dei file principali dei criteri, mentre li copia in /var/opt/cfengine/inputs, se necessario, e quindi mentre esegue il contenuto di cfagent.conf/cf.main.

Per ulteriori informazioni sulla risoluzione dei problemi, consultare la sezione “Risoluzione dei problemi di cfengine”.

Scelta del metodo di richiesta della sincronizzazione

Come amministratori, è possibile “spingere” le modifiche nei client amministrati utilizzando il comando cfrun (vedere cfrun(8)). cfrun contatta il daemon cfservd in ogni client amministrato e cfservd esegue cfagent affinché questo compia l’effettiva operazione di sincronizzazione. È inoltre possibile scegliere che cfagent sia eseguito ad intervalli regolari nel client. Esistono due approcci:

  • Eseguire cfagent con una pianificazione di cron.

    Quando si esegue cfagent da cron, farlo utilizzando cfexecd -F. Come esempio, in basso è mostrata la voce per crontab:

    0 * * * * /var/opt/dsau/cfengine/bin/cfexecd -F

    Questa voce di crontab farà sì che cfagent sia eseguito ogni ora.

    In questo esempio, cfexecd (vedere cfexecd(8)) agisce come wrapper per cfagent e raccoglie gli output e li colloca in /var/opt/dsau/cfengine/outputs. cfexecd è anche in grado di inviare all’amministratore dei messaggi email, se specificato nel file cfagent.conf. Per i dettagli, consultare il manuale di cfengine, in /opt/dsau/doc/cfengine.

    Il file cf.main predefinito contiene un esempio su come aggiungere automaticamente la riga mostrata sopra al file di crontab di ogni client amministrato.

  • Eseguire cfexecd in modalità daemon.

    cfexecd ha funzionalità analoghe a quelle di cron, basate sulle classi temporali di cfengine, e può essere utilizzato al posto di cron per eseguire cfagent. L’impostazione predefinita di cfexecd è di eseguire cfengine ogni ora. Quando si comincia ad utilizzare cfengine, è probabilmente più semplice usare cron per pianificare la sincronizzazione nel lato client. Per i dettagli sull’uso di cfexecd in modalità daemon, consultare il tutorial cfengine presente in /opt/dsau/doc/cfengine/.

Note sulla sicurezza

cfengine dispone di molte funzionalità di protezione, che vanno dai parametri per controllare gli attacchi negazione del servizio - DoS - fino alle liste di controllo dell’accesso, che impediscono ai client amministrati di accedere alle directory dei file di riferimento nel server. Per i dettagli sulle funzionalità di sicurezza di cfengine, consultare il suo manuale, situato in /opt/dsau/doc/cfengine/. I temi relativi alla sicurezza qui trattati comprendono:

  • Scambio delle chiavi

  • Uso delle porte di rete

  • Crittografia

  • Allarmi di tipo checksum

Scambio delle chiavi

Tutti gli esempi di scambio di chiavi mostrati finora hanno utilizzato scp per il trasferimento protetto della chiave pubblica del server master nel client amministrato e di quella del client amministrato nel server master. Uno schema come questo offre il maggiore livello di protezione, ma in alcune situazioni può essere problematico. Altre possibilità di distribuzione delle chiavi comprendono:

  • Alla connessione con un nuovo client, cfrun dispone di una modalità interattiva simile a ssh, nella quale all’amministratore sarà chiesto di accettare la chiave del sistema remoto. Ad esempio:

    cfrun(0): .......... [ Hailing remote-host.abc.xyz.com ] ..........
    WARNING - You do not have a public key from host remote-host.abc.xyz.com = 12.345.678.90
    Do you want to accept one on trust? (yes/no)
    -> yes
    cfrun:<nome server master>: Trusting server identity and willing to accept key from remote-host.abc.xyz.com=12.345.678.90

  • Questa modalità interattiva può rivelarsi inefficiente con un gran numero di client. cfrun supporta l’opzione -T, che indica a cfengine di dare fiducia a tutte le nuove chiavi degli host elencati in cfrun.hosts.

  • cfservd.conf supporta la clausola di controllo TrustKeysFrom. Ad esempio:

    control:
    TrustKeysFrom = ( 128.39.89.76 ) # Host fidato
    TrustKeysFrom = ( 128.39.89.76/24 ) # Sottorete fidata

    Gli host o gli indirizzi di sottorete elencati saranno implicitamente fidati e le loro chiavi saranno accettate automaticamente.

Tutte queste alternative di scambio delle chiavi devono essere utilizzate con estrema attenzione e solamente in ambienti sicuri, in cui la LAN è fidata, così come lo sono gli host remoti. Una volta che è stata accettata, la chiave pubblica non sarà aggiornata, a meno che sia eliminata manualmente dalla directory /var/opt/dsau/cfengine/ppkeys del server master, oppure sostituita manualmente da una nuova chiave.