Accéder au contenu France-Français
Accueil HP.com France Produits et Services Support et Pilotes Espaces Comment Acheter
» Contacter HP
Plus d'options
Accueil HP.com France
Gestion des systèmes et des groupes de travail : Guide pour les administrateurs système HP-UX > Chapitre 3 Configuration d’un système

Utilisation des utilitaires d’administration de systèmes distribués

» 

Documentation technique

Manuel complet en PDF
» Commentaires
Début du contenu

 » Table des matières

 » Index

Vous pouvez utiliser les utilitaires d’administration de systèmes distribués (DSAU) afin d’envoyer des fichiers et des commandes vers des systèmes sélectionnés sur une grappe ou un réseau. Les outils DSAU sont les suivants :

  • Configuration synchronization

  • Consolidated logging

  • Command fanout

L’outil Configuration Synchronization (synchronisation de configuration) vous permet d’avoir la certitude que les systèmes de la grappe ou du réseau sont gérés au niveau choisi. Lorsque vous effectuez des modifications sur le système maître de configuration, celles-ci sont répercutées sur tous les systèmes clients.

L’outil Consolidated Logging (consolidation de consignation) vous permet de consulter un seul fichier de consignation contenant les entrées de tous les systèmes de la configuration, dans l’ordre chronologique, et donc de retrouver facilement une entrée spécifique.

L’outil Command Fanout (déploiement de commande) vous permet d’envoyer la même commande à partir d’un système sélectionné vers tous les systèmes de la configuration. Cette fonction évite de devoir consulter tous les systèmes de la configuration et de nombreuses opérations manuelles.

Présentation de l’outil Configuration Synchronization

La gestion de la configuration et des variations de configuration sur un ensemble de systèmes distribués constitue un défi permanent pour les administrateurs système. Il existe de nombreux outils permettant de traiter différents aspects de la gestion de configuration multi-système. Par exemple, pour la gestion des comptes, les solutions standard comprennent NIS (Network Information System) et LDAP (Lightweight Directory Access Protocol). Pour la synchronisation au niveau fichiers, il existe des outils tels que rdist (voir la page de manuel rdist(1)) et rsync. HP System Insight Manager permet de visualiser, de contrôler et de gérer des groupes de systèmes.

Cette boîte à outils offre un nouvel outil : le moteur de configuration (cfengine). cfengine est un outil Open Source déjà connu de synchronisation de configuration. Il permet de définir une politique ou des objectifs de gestion de configuration grâce à laquelle l’administrateur peut définir les actions de gestion qui seront appliquées à des groupes de systèmes en vue d’obtenir l’état désiré.

cfengine est un outil de type client/serveur. Un système maître de configuration centralisé, ou serveur de règles, héberge un fichier de politique de configuration qui définit les actions de gestion devant être effectuées sur chaque client géré. Le système maître de configuration héberge également les fichiers « d’images parfaites », ou les copies de référence des fichiers devant être distribués aux clients. L’administrateur peut utiliser cfengine pour effectuer, par exemple, les tâches suivantes :

  • Vérifier que les systèmes clients utilisent les bons fichiers de configuration, en copiant les fichiers ou les répertoires de référence.

  • Désactiver les fichiers mal configurés sur le client.

  • Vérifier les autorisations de fichiers, les propriétaires et contrôler les modifications de somme de contrôle.

  • Modifier des fichiers.

  • Exécuter des commandes de shell spécifiées sur chaque client.

  • Vérifier les processus ou les traitements de signaux.

  • Vérifier les montages de systèmes de fichiers spécifiques.

Un assistant de synchronisation de configuration (csync_wizard) permet à l’administrateur de configurer rapidement l’outil cfengine en vue de gérer un ensemble de systèmes distribués ou de le configurer comme service à haute disponibilité dans une grappe ServiceGuard.

Présentation de l’outil cfengine

L’administrateur doit tout d’abord définir un système central ou une grappe Serviceguard qui fera office de serveur maître de configuration ou de serveur de règles. L’assistant de synchronisation de configuration (csync_wizard) est une fenêtre conviviale du processus de configuration initiale. Ce système central hébergera les fichiers maîtres de politique (par exemple, cfagent.conf) définissant les règles de configuration souhaitées, ainsi que les copies de référence ou les copies originales des fichiers devant être distribués aux clients gérés.

Chaque client géré récupère les copies originales des fichiers de politique à partir du serveur central de configuration et évalue l’état actuel par rapport à celui souhaité, tel que défini par le fichier de politique. Toute différence entraîne l’exécution des règles de configuration en vue de resynchroniser le client. L’administrateur peut lancer les opérations de synchronisation sur les clients gérés de deux manières, à l’aide d’une opération de diffusion ou d’extraction.

  • À l’aide de la commande cfrun (voir la page de manuel cfrun(1) pour plus de détails) exécutée sur le serveur maître de configuration, l’administrateur peut diffuser les modifications. cfrun lit le fichier cfrun.hosts afin de définir la liste des clients gérés. L’opération appelle ensuite la commande cfagent sur chaque client géré pour effectuer une synchronisation. Donc, les opérations de diffusion correspondent réellement à des demandes envoyées aux clients gérés afin qu’ils effectuent une extraction immédiate.

  • Les opérations d’extraction sont effectuées à l’aide de la commande cron ou du démon cfexecd (similaire à cron) de cfengine. Les deux techniques appellent la commande cfagent à intervalles fixes, afin d’effectuer la synchronisation de configuration lancée par le client. L’administrateur définit les intervalles adaptés à chaque groupe de clients gérés. Par exemple, toutes les cinq minutes, toutes les heures ou une fois par jour. L’administrateur peut également appeler cfagent directement afin d’effectuer des synchronisations à la demande.

Démons et commandes de cfengine

cfengine utilise différents démons et commandes pour effectuer les opérations de synchronisation de configuration. La liste suivante décrit les composants principaux de cfengine.

  • cfagent -- La commande cfagent est l’élément moteur de cfengine. Elle est exécutée sur chaque client géré et s’amorce elle-même à l’aide du fichier update.conf, qui décrit l’ensemble de fichiers à transférer du serveur maître vers le client local géré. Les fichiers trasférés comprennent le fichier principal de politique, cfagent.conf, et tous les fichiers liés à cette politique. Dans la mise en œuvre des DSAU, cfagent.conf importe le fichier cf.main qui comporte des exemples de nombreuses fonctionnalités de cfengine.

    Après le transfert des fichiers de configuration, cfagent évalue les instructions de configuration contenues dans ceux-ci. Si la configuration actuelle du système client est différente de la configuration souhaitée, cfagent exécute les actions définies afin de restaurer l’état correct du client.

  • cfservd -- Le démon cfservd joue deux rôles :

    • cfservd est exécuté sur le serveur maître de configuration et constitue le centre d’échange des demandes de transfert de fichiers émanant des clients gérés. cfagent sur les clients gérés contacte le démon cfservd du serveur maître et demande des copies des fichiers maîtres de politique, ainsi que des copies de tous les fichiers de référence requis dans le cadre des opérations de synchronisation de configuration définies. Le démon cfservd maître est chargé de l’authentification des clients distants, à l’aide d’un mécanisme d’échange de clés privées et publiques avec cryptage optionnel des fichiers transférés vers les clients gérés.

    • cfservd peut être éventuellement exécuté sur chaque client géré afin de traiter les demandes de cfrun. cfrun permet à l’administrateur de diffuser les modifications aux clients gérés au lieu d’attendre que ceux-ci se synchronisent selon un intervalle de temps défini par le client. La commande cfrun doit être lancée à partir du serveur maître de configuration. Elle contacte chaque client géré figurant dans les fichiers cfrun.hosts et se connecte au démon cfservd du client géré pour lui demander d’appeler cfagent afin d’effectuer la synchronisation.

      cfservd est configuré à l’aide de cfservd.conf et démarre à l’aide de /sbin/init.d/cfservd.

  • cfexecd -- cfexecd est un outil de programmation et de rapport. Si l’administrateur utilise cron pour effectuer des sessions de synchronisation à intervalles fixes, cfexecd est la commande placée dans le fichier crontab en vue de conditionner l’appel de cfagent. Elle stocke le résultat de l’exécution de cfagent dans le répertoire de sortie (voir cfagent.conf pour plus de détails) et envoie éventuellement un e-mail.

    cfexecd possède ses propres fonctionnalités de type cron basées sur les classes temporelles de cfengine. L’administrateur peut exécuter cfexecd en mode démon et l’utiliser pour appeler cfagent à intervalles définis à la place de cron. Le réglage par défaut est un appel de cfagent toutes les heures. Pour vous familiariser avec cfengine, il est plus simple de démarrer à l’aide de cron.

  • cfrun -- La commande cfrun contacte les clients gérés et demande à chacun d’effectuer une synchronisation immédiate. Plus particulièrement, elle se connecte au démon cfservd de chaque client géré qui, à son tour, lance cfagent.

La Figure 3-1, « Présentation de cfengine » illustre la relation entre les commandes et les démons de cfengine et donne un exemple d’utilisation de cfrun par l’administrateur. Les lignes en pointillés sur le schéma indiquent les séquences d’appel (par exemple, A appelle B). Les lignes pleines indiquent la lecture des données des fichiers de configuration.

Figure 3-1 Présentation de cfengine

Présentation de cfengine
  1. L’administrateur est connecté au serveur maître de synchronisation de configuration et effectue une modification qui doit être diffusée aux clients gérés, à l’aide de la commande cfrun.

  2. cfrun vérifie la liste des clients gérés dans le fichier cfrun.hosts. Notez que le serveur maître peut être son propre client. Sur ce schéma, il existe deux clients : le serveur maître et un client distant.

  3. cfrun contacte cfservd sur chaque client géré, qui à son tour appelle cfagent.

  4. cfagent vérifie tout d’abord s’il existe une copie mise à jour du fichier update.conf sur le serveur maître et transfère éventuellement celle-ci sur le client.

    Si un système autonome est utilisé comme serveur maître, la copie originale du fichier update.conf est stockée dans /var/opt/dsau/cfengine_master/inputs/ par défaut. Les copies originales des autres fichiers de configuration, par exemple cfagent.conf, cfservd.conf et cfrun.hosts figurent également dans ce répertoire. Si le serveur maître est une grappe Serviceguard, les fichiers maîtres de configuration sont situés au niveau de point de montage associé à l’ensemble logiciel. Par exemple, si le point de montage est nommé csync, le chemin sera /csync/dsau/cfengine_master/inputs.

  5. Lors de la copie des fichiers de configuration sur le système local, cfagent stocke ceux-ci dans /var/opt/dsau/cfengine/inputs qu’il s’agisse de systèmes autonomes ou de grappes. cfagent analyse tout d’abord le contenu de update.conf afin de mettre à jour les données binaires modifiées de cfengine (le cas échéant) et d’obtenir la version la plus récente des fichiers de politique (cfagent.conf) et des fichiers associés.

    cfagent analyse ensuite cfagent.conf afin de savoir si le client se trouve dans l’état souhaité. En cas de différences, cfagent effectue les actions définies afin de corriger la configuration du client.

Modèles de déploiement du serveur maître cfengine

Le serveur maître cfengine peut être un système HP-UX autonome desservant des groupes de clients distribués. Les clients peuvent eux-mêmes être des systèmes autonomes ou appartenir à une grappe Serviceguard. Si vous utilisez déjà un serveur central de gestion Systems Insight Manager, celui-ci peut être idéal pour constituer un serveur maître cfengine. Les serveurs maîtres peuvent également fonctionner en tant que clients et les tâches de synchronisation de configuration peuvent être effectuées sur ces systèmes ainsi que sur les clients distants.

Si vous gérez des grappes Serviceguard, il est possible de déployer cfengine uniquement pour une utilisation intra grappe en vue de synchroniser les membres d’une même grappe. Dans cette configuration, cfservd est configuré comme un ensemble logiciel à haute disponibilité, mais les seuls clients de cfengine sont les membres de la grappe. Le nom DNS/adresse IP de l’ensemble logiciel est le nom du serveur maître cfengine.

Outre le service de synchronisation de configuration intra grappe, une autre configuration de Serviceguard permet à la grappe d’assurer un service de synchronisation de configuration à haute disponibilité pour des groupes de système clients distants. Ces clients peuvent être des systèmes autonomes ou des grappes Serviceguard. La grappe assurant le service cfengine peut être un client ou elle-même et bénéficie également des fonctionnalités de synchronisation de configuration de cfengine. Une configuration possible, bien qu’inhabituelle, consiste à utiliser un membre fixe d’une grappe Serviceguard comme serveur maître mais sans configurer d’ensemble logiciel et donc à ne pas utiliser cfservd en haute disponibilité. Cette configuration est acceptée mais n’est pas recommandée.

Configuration de cfengine

Les sections suivantes décrivent en détail le paramétrage d’un serveur maître de synchronisation de configuration et de ses clients. La méthode la plus rapide consiste à utiliser l’assistant de synchronisation de configuration (csync_wizard), décrit ci-après. Vous trouverez également la description de configurations totalement manuelles.

Utilisation de l’assistant de synchronisation de configuration

L’assistant csync_wizard (voir csync_wizard(1)) permet d’automatiser le paramétrage du serveur maître de synchronisation de configuration et de ses clients gérés. Il permet de paramétrer un système autonome ou une grappe Serviceguard comme serveur maître. L’assistant configure tous les clients gérés afin qu’ils exécutent cfservd de manière à pouvoir utiliser cfrun (voir cfrun(8)) sur le serveur maître.

Pour plus d’informations, reportez-vous aux sections correspondantes.

Utilisation de l’assistant pour configurer un serveur de synchronisation autonome

Pour configurer un serveur de synchronisation sur un système autonome, exécutez la commande csync_wizard(1) sur le système autonome que vous souhaitez configurer comme serveur maître de synchronisation :

# /opt/dsau/sbin/csync_wizard

L’assistant affiche l’écran d’accueil suivant :

Querying the system <nom d’hôte local> 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...

Appuyez sur Retour pour continuer et sélectionnez l’option 1 dans le menu suivant pour configurer un serveur maître :

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:
<nom d’hôte local>

L’assistant vous demande ensuite si vous désirez également configurer les clients gérés immédiatement après avoir configuré le serveur. Dans cet exemple, répondez non. Les clients gérés seront ajoutés ultérieurement.

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

L’assistant configure le système comme serveur maître :

******* 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....

Une fois la configuration terminée, l’assistant affiche les écrans récapitulatifs suivants, qui dirigent l’administrateur sur le fichier principal de politique, /var/opt/dsau/cfengine_master/inputs/cf.main, et le fichier de réponse enregistré pour cette session de l’assistant.

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: <nom d’hôte local>
and members:

Notez que si vous configurez un serveur maître sans ajouter de clients gérés durant la configuration du serveur, la zone membres (liste des clients gérés) sera vide, comme l’indique l’exemple précédent.

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

Utilisation de l’assistant pour configurer un serveur de synchronisation de grappe Serviceguard

Pour configurer un serveur de synchronisation sur une grappe Serviceguard, deux choix de configuration sont possibles :

  • Création d’un ensemble logiciel Serviceguard afin d’assurer un service de configuration à haute disponibilité.

  • Configuration d’un seul membre de la grappe comme s’il s’agissait d’un système autonome. Le service de synchronisation de configuration ne sera pas un service à haute disponibilité et cette configuration ne fonctionnera pas correctement avec les fonctions d’automatisation de Serviceguard décrites à la section relative à l’automatisation de Serviceguard ; c’est pourquoi elle n’est pas recommandée.

Cette section traite plus particulièrement de l’utilisation de l’assistant afin de configurer un service de synchronisation de configuration à haute disponibilité.

REMARQUE : Assurez-vous que la valeur MAX_CONFIGURED_PACKAGES de cette grappe peut accepter l’ensemble logiciel supplémentaire. Pour plus d’informations sur cette option, reportez-vous au manuel Managing Serviceguard fourni avec la documentation de Serviceguard. En outre, avant de lancer l’assistant, assurez-vous que les membres de la grappe sont activés et fonctionnent.

Tout d’abord, exécutez l’assistant de synchronisation de configuration, csync_wizard(1) :

# /opt/dsau/sbin/csync_wizard
Querying the system <nom d’hôte local> 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...

Appuyez sur Retour pour continuer et sélectionnez l’option 1 dans le menu suivant pour configurer un serveur maître :

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

Sélectionnez 1 et appuyez sur Retour ; l’assistant affiche le texte suivant :

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]:

L’assistant nomme l’ensemble logiciel « csync » pour la synchronisation de configuration. Ce nom spécifique est requis. Il est nécessaire de paramétrer la configuration de stockage LVM et la configuration réseau de l’ensemble logiciel avant de continuer ou d’exécuter l’assistant. En outre, tous les membres de la grappe doivent être activés et disponibles. Pour plus de détails, reportez-vous au manuel Managing Serviceguard, sections « Building an HA Cluster Configuration », « Creating a Storage Infrastructure with LVM ».

REMARQUE : L’assistant prend en charge uniquement la création d’ensembles logiciels basés sur des groupes de volumes LVM. Si vous utilisez CFS ou VxVM, vous devez effectuer une configuration manuelle. Pour plus de détail sur la configuration manuelle de l’ensemble logiciel csync, reportez-vous à la section relative à la configuration manuelle d’une grappe Serviceguard.

L’assistant demande les éléments suivants, qui doivent tous avoir été configurés au préalable :

  • Le nom du groupe de volumes LVM (par exemple, vgcsync)

  • Le volume logique du groupe de volumes (par exemple, /dev/vgcsync/lvol1)

  • Le point de montage du système de fichiers (par exemple, /csync)

  • Les options de montage du système de fichiers (par exemple, -o rw,largefiles). Les options de montage sont utilisées textuellement dans le champ du script de contrôle de l’ensemble logiciel Service FS_MOUNT_OPT[0]. Notez que les options de montage doivent correspondre au système de fichiers créé sur le volume logique. Par exemple, si le système de fichiers a été créé avec la prise en charge des grands fichiers, l’option de montage «  largefiles » doit être sélectionnée.

  • Le type de système de fichiers (par exemple, VxFS)

  • L’adresse IP de l’ensemble logiciel. Celle-ci doit également être un nom DNS enregistré afin de faciliter la synchronisation de configuration sur les systèmes clients.

  • Le sous-réseau de l’ensemble logiciel. Utilisez netstat -i pour définir le sous-réseau.

Après avoir configuré l’infrastructure de stockage et obtenu l’adresse IP, appuyez sur Retour pour accéder à la réponse « oui » par défaut et lancer la création de l’ensemble logiciel. L’assistant demande alors les informations relatives à l’ensemble logiciel :

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]:<retour>
Enter the Filesystem Type? [vxfs]: <retour>
Enter the IP address? []: 12.345.6.78
Enter the Subnet? []: 12.345.7.8

L’assistant vous demande alors si vous souhaitez gérer d’autres clients distants, en d’autres termes, des systèmes extérieurs à la grappe. L’assistant configure automatiquement les membres existants de la grappe. C’est pourquoi ceux-ci doivent être activés et accessibles lors de l’exécution de l’assistant. Dans l’exemple suivant, l’administrateur sélectionne « non » de manière à ce que seuls les membres de la grappe soient configurés initialement en tant que clients.

Notez que d’autres clients distants peuvent être facilement ajoutés ultérieurement à l’aide de l’assistant. Il n’est pas nécessaire d’utiliser l’assistant pour ajouter de nouveaux clients lorsque vous ajoutez des membres à la grappe.. Pour plus de détails, reportez-vous à la section relative aux fonctions d’automatisation de 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]: <retour>

L’assistant dispose désormais de toutes les données requises pour configurer la grappe et peut donc lancer l’opération :

******* 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 <nom d’hôte local>.
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....

Une fois la configuration terminée, l’assistant affiche les écrans récapitulatifs suivants, qui dirigent l’administrateur sur le fichier principal de politique, point_de_montage/cfengine_master/inputs/cf.main, et le fichier de réponse enregistré pour cette session de l’assistant. Notez que le fichier de politique figure dans le système de fichiers associé à l’ensemble logiciel et qui vient d’être configuré. Dans notre exemple, l’administrateur a choisi de monter le système de fichiers de l’ensemble logiciel en tant que /csync.Si l’administrateur a préalablement configuré cfengine, avant d’écraser les fichiers de configuration existants, l’assistant crée des sauvegardes dans le répertoire :

/var/opt/dsau/cfengine/backups

Les fichiers figurant en tête du répertoire correspondent aux fichiers de sauvegarde les plus récents. Toutes les configurations antérieures sont enregistrées dans des sous-répertoires horodatés, nommés v_horodatage.

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:
<nom d’hôte de l’ensemble logiciel> and members: <membre1 grappe>,
<membre2 grappe>, ...
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

Remarques relatives à la configuration des grappes.

Cette section décrit en détail une configuration à haute disponibilité de cfengine dans une grappe Serviceguard. Pour plus d’informations sur les démons et les commandes de cfengine, voir « Démons et commandes de cfengine ». L’ensemble logiciel Serviceguard garantit la haute disponibilité du démon cfservd de cfengine. Les fichiers de configuration de cfengine update.conf et cfagent.conf définissent le serveur maître de synchronisation de configuration qui sera le nom DNS enregistré de l’adresse IP relocalisable de l’ensemble logiciel. Lorsque les clients gérés exécutent cfagent (voir cfagent(8)), cfagent se connecte à cfservd sur le nœud adoptif de l’ensemble logiciel. Par conséquent, les membres de la grappe sont tous des clients gérés. Le membre qui héberge l’ensemble logiciel fonctionne également comme serveur maître pour les fichiers de politique.

Lors de l’amorçage de la grappe, chaque membre lance un cfservd client. Il s’agit du cfservd qui répond aux demandes de cfrun. Lorsque l’ensemble logiciel démarre sur un membre, ce démon cfservd accède alors au système de fichiers cet ensemble logiciel et devient le cfservd maître qui diffuse les fichiers de politique à tous les clients gérés. Ce démon cfservd est contrôlé par l’ensemble logiciel. Si cfservd échoue, l’ensemble logiciel tente de redémarrer sur un autre membre. Le démon cfservd de ce membre devient alors le cfservd maître.

Notez que le fait d’interrompre l’ensemble logiciel n’arrête pas le démon cfservd sur le membre adoptif dans la mesure où ce démon doit être présent pour répondre aux demandes ultérieures de cfrun. En outre, contrairement à certains autres services HA, l’arrêt ou l’indisponibilité de l’ensemble logiciel csync n’entraîne aucun impact négatif sur les clients distants. Ceux-ci continuent à fonctionner dans leurs configurations actuelles. Avant de diffuser de nouvelles instructions de configuration aux clients gérés, l’administrateur doit s’assurer que l’ensemble logiciel est activé et fonctionne.

L’assistant automatise la diffusion des clés de cfengine à tous les membres de la grappe. Pour plus de détails sur la diffusion des clés, voir « Remarques relatives à la sécurité ».

Fonctions d’automatisation de Serviceguard

Les utilitaires d’administration de systèmes distribués exigent Serviceguard 11.17 (ou une version ultérieure). Avec Serviceguard 11.17 ou ultérieur, lors de l’ajout ou de la suppression de membres sur une grappe, les outils de synchronisation de configuration effectuent automatiquement les actions de configuration nécessaires. En particulier :

  • Lors de l’ajout d’un membre à la grappe, le nouveau membre sera automatiquement configuré afin de participer à la synchronisation de configuration. Les actions de configuration suivantes sont automatiquement effectuées sur le nouveau membre :

    1. etc/rc.config.d/cfservd est modifié afin de mettre CSYNC_CONFIGURED à 1.

    2. Les clés publiques et privées correspondantes de cfengine sont créées pour ce membre et stockées dans le répertoire /var/opt/dsau/cfengine/ppkeys des membres. Ces nouvelles clés sont également diffusées aux répertoires /var/opt/dsau/cfengine/ppkeys sur les autres membres de la grappe.

    3. Le répertoire /var/opt/dsau/cfengine/inputs du nouveau membre est renseigné.

    4. cfservd est lancé sur le nouveau membre.

    5. Les fichiers de l’ensemble logiciel sont copiés dans /etc/cmcluster/csync/ sur le nouveau membre.

    6. Une session de synchronisation de cfagent est effectuée sur le système maître en vue de renseigner le répertoire /var/opt/dsau/cfengine/inputs de ce système.

    7. Une session de synchronisation de cfagent est effectuée sur le client distant.

  • Lors de la suppression d’un membre sur une grappe, la clé publique de ce membre est supprimée du répertoire /var/opt/dsau/cfengine/ppkeys à l’échelle de la grappe.

Notez que l’administrateur peut définir des groupes ou des classes cfengine permettant de recenser tous les membres d’une grappe Serviceguard en particulier. Les classes ainsi définies ne seront pas mises à jour automatiquement et il appartient à l’administrateur de mettre à jour manuellement le fichier cfagent.conf et les fichiers associés en fonction des modifications d’appartenance à la grappe.

Configuration d’un client de synchronisation

Vous pouvez utiliser l’assistant de synchronisation de configuration afin d’ajouter des clients gérés à une configuration existante de cfengine. Lancez l’assistant sur le serveur maître, pas sur le système client. Si une grappe Serviceguard se trouve être le serveur maître, lancez l’assistant sur le nœud adoptif de l’ensemble logiciel csync. Notez que l’ajout d’un nouveau membre de la grappe en tant que client dans une configuration à haute disponibilité est automatique. Pour plus d’informations, reportez-vous à la section « Fonctions d’automatisation de Serviceguard ».

En outre, afin de sécuriser la diffusion des clés cfengine, le client doit être configuré pour un accès non-interactif à ssh par le compte root du serveur maître. L’outil csshsetup (voir csshsetup(1)) facilite la configuration de l’accès à ssh sur un système distant. Cet outil est utilisé dans les exemples donnés ci-après.

L’assistant peut être réglé pour gérer uniquement les clients situés dans le même domaine DNS que le serveur maître. Pour les configurations multi-domaine, reportez-vous à la section « Configuration manuelle » qui donne des instructions relatives à l’ajout manuel de clients.

Notez que si vous ajoutez une grappe Serviceguard comme client géré, vous devez ajouter manuellement chaque membre de cette grappe.

Tout d’abord, connectez-vous en tant qu’utilisateur root sur le serveur maître et configurez l’accès à ssh sur le système distant :

# csshsetup <nom d’hôte du client géré>

csshsetup teste tout d’abord l’accès ssh sur le système client. S’il n’est pas configuré, ssh demande le mot de passe du client géré.

Lancez l’assistant de synchronisation de configuration et sélectionnez l’option 2 pour ajouter un nouveau 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

Lorsque le système le demande, entrez le nom du client à ajouter :

This option will configure additional clients to the cfengine domain.

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

L’assistant lance alors la configuration du client et affiche la progression :

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 <nouveau client> has been added to the cfengine domain

L’assistant configure chaque nouveau client afin qu’il execute cfservd, de manière à pouvoir répondre aux demandes de cfrun et ajoute le client au fichier cfrun.hosts du système maître.

Configuration manuelle

Les sections suivantes décrivent les opérations requises pour configurer manuellement les serveurs maîtres de synchronisation de configuration cfengine ou les clients gérés. Notez qu’il est habituellement plus simple d’utiliser csync_wizard (voir csync_wizard(1m)) puis de modifier la configuration ainsi obtenue, plutôt que d’effectuer la totalité des opérations. Cela est particulièrement vrai dans le cas d’une grappe Serviceguard, dans la mesure où l’assistant facilite la configuration de l’ensemble logiciel et se charge de diffuser les bons fichiers de configuration à tous les membres de la grappe.

Lors de configurations manuelles, vous risquez de créer des configurations qui ne pourraient pas être gérées par csync_wizard ultérieurement. Par exemple, l’assistant ne prend en charge que les configurations de domaine DNS unique. Si vous configurez manuellement des configurations multi-domaine, vous ne pourrez pas utiliser l’assistant pour ajouter et supprimer des clients.

REMARQUE : Vous pouvez utiliser csshsetup afin de configurer une relation sécurisée entre le serveur maître et les clients gérés. Vous pourrez ainsi utiliser les commandes de l’outil Command Fanout, telles que cexec et ccp (voir cexec(1) et ccp(1)). L’utilisation de ces commandes peut simplifier les opérations de configuration décrites ci-après, lorsque les fichiers doivent être distribués aux clients gérés.
Configuration manuelle d’un serveur de synchronisation autonome

Effectuez les opérations suivantes pour configurer un système autonome en tant que serveur maître cfengine :

  1. Tout d’abord, créez les copies originales des fichiers de configuration de cfengine. Ces fichiers sont placés dans un répertoire connu et sont distribués à chaque client géré. Le répertoire par défaut est /var/opt/dsau/cfengine_master/inputs, référencé dans les modèles par défaut. Commencez par créer le répertoire :

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

  2. Copiez les fichiers de modèles par défaut dans les répertoires suivants :

    # 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. Puis, éditez update.conf. Le format de ce fichier est similaire à celui du fichier de configuration principal de cfengine cfagent.conf. Il est utilisé pour transférer et mettre à jour les données binaires de cfengine ainsi que les fichiers de définition de configuration mis à jour (par exemple, cfagent.conf) sur les clients gérés. Afin d’éviter toute erreur, il est important que ce fichier soit très simple. Si ce fichier contient des erreurs, il sera nécessaire d’effectuer une copie manuelle de la nouvelle version sur chaque client géré.

    Ce fichier contient des entités lexicales du type <%nom entité%> que csync_wizard remplacera par les réponses de l’administrateur aux questions posées. Remplacez les entités lexicales comme indiqué ci-après :

    1. Remplacez <%HOST_NAMER%> par le nom d’hôte non qualifié du serveur maître.

    2. Remplacez <%DOMAIN_NAMER%> par le nom de domaine du serveur maître. Par exemple :

      host_name = ( “master-server-name” ) 
      domain_name = ( “abc.xyz.com” )

      Notez que ce modèle de update.conf suppose que le serveur maître et ses clients appartiennent tous à un même domaine DNS. Si votre serveur maître comporte des clients gérés dans plusieurs domaines DNS, modifiez update.conf comme suit :

    3. Remplacez <%HOST_NAMER%> par le nom d’hôte complet du serveur maître.

    4. Supprimez la variable <domain_name>.

    5. Remplacez la ligne « domain = ( “${domain_name}” ) » par la ligne suivante :

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

      Cela permet de définir correctement la variable de domaine du côté client. Notez que cette technique suppose que /etc/resolv.conf est correctement configuré sur chaque client géré.

      Ces modifications de domaine doivent également être effectuées dans cf.main et cfservd.conf. Reportez-vous aux étapes suivantes. Utilisez l’indicateur -p de cfagent (ou --parse-only) pour vérifier la syntaxe de update.conf.

  4. Distribuez le fichier update.conf maître à chaque client géré. Cette étape est décrite à la section « Configuration d’un client géré de synchronisation ».

  5. Créez les clés de sécurité du serveur maître. cfengine utilise une clé publique/privée en vue d’authentifier les clients distants. Une paire de clés publiques/privées est générée sur le serveur maître et sur tous les clients gérés. La clé publique de chaque client géré est copiée sur le serveur maître et à partir du serveur maître sur les clients gérés. Il est important de sécuriser l’échange des clés à l’aide d’un outil du type copie sécurisée (voir scp(1)) ou à l’aide d’une bande ou d’un CD-ROM. Tout d’abord, générez les clés du serveur maître :

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

    Cette opération permet de créer les fichiers localhost.pub et localhost.priv.

    Copiez la clé publique dans root-adresse IP du serveur maître.pub. Par exemple, en supposant que l’adresse IP du système est 10.0.0.5, utilisez la commande suivante :

    # cp localhost.pub root-10.0.0.5.pub

    Pour plus de détails sur la copie des clés des clients sur ce serveur maître, reportez-vous à la section « Configuration d’un client géré de synchronisation ».

  6. Sur le serveur maître, configurez le démon cfservd de manière à ce qu’il soit lancé au démarrage du système. Éditez /etc/rc.config.d/cfservd et modifiez la ligne CSYNC_CONFIGURED=0 en CSYNC_CONFIGURED=1. Éventuellement, si vous souhaitez pouvoir diffuser les modifications sur les clients gérés à l’aide de cfrun, répliquez cette modification sur tous les clients gérés.

  7. cfrun exige que les clients gérés figurent dans le fichier cfrun.hosts. Dans la configuration par défaut, se fichier se trouve dans /var/opt/dsau/cfengine_master/inputs. Éditez-le et ajoutez les noms d’hôtes de chaque client géré (un par ligne). Il s’agit de la méthode la plus simple de vous assurer que tous les noms d’hôtes sont complets. Si vous utilisez des noms d’hôtes complets, la ligne « domain = » n’est pas requise et peut être supprimée. Si vous utilisez des noms d’hôtes non qualifiés, recherchez la ligne «  domain = <%DOMAIN_NAMER%> » et remplacez l’entité lexicale par le domaine DNS des systèmes clients. Cela implique que tous les clients appartienne au même domaine.

  8. Le fichier /var/opt/dsau/cfengine_master/inputs/cfagent.conf est le fichier principal de politique. Le fichier cfagent.conf par défaut contient le modèle par défaut cf.main qui est un fichier modèle commenté comportant des exemples d’actions de synchronisation communes pour les systèmes autonomes et les grappes Serviceguard. cf.main contient les mêmes entités lexicales <%HOST_NAMER%> et <%DOMAIN_NAMER%> que update.conf. Effectuez les mêmes modifications qu’à l’étape 3 ci-dessus.

    Notez que ce fichier cf.main par défaut n’effectue aucune action de gestion. Toutes les lignes d’actions sont mises en commentaire. Il s’agit d’un point de départ pour la création d’un ensemble personnalisé de règles et d’actions de cfengine pour les clients gérés. Le manuel de référence de cfengine décrivant la syntaxe et toutes les actions de gestion définies dans ce fichier figure dans le répertoire /opt/dsau/doc/cfengine. D’autres exemples de fichiers de configuration de cfengine fournis avec la distribution ouverte de cfengine figurent dans le répertoire /opt/dsau/share/cfengine/examples.

  9. Le fichier /var/opt/dsau/cfengine_master/inputs/cfservd.conf contrôle les clients gérés qui peuvent accéder aux fichiers gérés par cfservd sur le serveur maître. Effectuez les modifications suivantes dans cfservd.conf.

    • Supprimez totalement la ligne suivante :

      domain_name        = ( “<%DOMAIN_NAMER%>” )

    • Modifiez l’affichage de la ligne

      domain             = ( “${domain_name}” )

      en :

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

    • La strophe « admit: » définit les clients pouvant accéder aux fichiers sur le serveur. Remplacez chaque « *.${domain_name} » par une liste des domaines DNS des clients gérés, séparés par un espace. Par exemple :

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

      Cet exemple permet à tous les hôtes figurant dans les domaines repertoriés d'accéder aux fichiers du serveur maître. Vous pouvez également spécifier des listes d'hôtes spécifiques, des plages d'adresses IP, etc. Pour plus d'informations, reportez-vous au manuel de reférence de cfengine.

  10. Sur le serveur maître, lancez cfservd :

    # /sbin/init.d/cfservd start

    Cette opération se répète pour chaque client géré.

  11. Effectuez les opérations suivantes pour tester la configuration :

    1. Sur un client géré, utilisez la commande :

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

      Le mode prolixe affiche le client et recherche les copies mises à jour des fichiers maîtres de politique, les copie dans /var/opt/cfengine/inputs le cas échéant, puis exécute le contenu de cfagent.conf/cf.main.

    2. Sur le serveur maître, testez la commande cfrun :

      # cfrun -- --inform

      La syntaxe --inform demande au cfagent distant d’utiliser l’indicateur --inform afin de générer des messages pour toutes les modifications effectuées par cfengine sur le système. Pour plus d’informations, l’option --verbose peut également s’avérer utile :

      # cfrun -v -- --verbose

      L’option -v demande à cfrun d’être plus prolixe et l’option --verbose est transmise au cfagent distant.

    Pour plus d’informations sur le dépannage, reportez-vous à la section « Dépannage de cfengine ».

Configuration manuelle d’un serveur de synchronisation de grappe Serviceguard

La configuration de cfengine en haute disponibilité sur une grappe Serviceguard est similaire à celle d’une machine autonome, décrite à la section « Utilisation de l’assistant pour configurer un serveur de synchronisation autonome ». Les principales différences résident dans la création de l’ensemble logiciel Serviceguard et dans le mécanisme utilisé pour la distribution des clés de sécurité de cfengine. Effectuez toutes les opérations décrites ci-après.

  • Préparation initiale de l’ensemble logiciel Serviceguard

    1. Tout d’abord, procurez-vous une adresse IP pour l’ensemble logiciel. Cette adresse est habituellement enregistrée dans DNS afin de simplifier la gestion des clients distants. Si vous utilisez cfengine en mode intra grappe uniquement, il suffit de vérifier que l’adresse est ajoutée au fichier /etc/hosts de chaque membre.

    2. Puis, créez l’infrastructure de stockage requise pour un nouvel ensemble logiciel. Les instructions relatives à cette opération sont décrites dans le manuel Managing Serviceguard, dans les sections « Building an HA Cluster Configuration », « Creating a Storage Infrastructure. » Par exemple, si vous utilisez une infrastructure de stockage LVM, les opérations suivantes sont requises :

      1. Création du groupe de volumes (VG) et des volumes logiques (LV) LVM (par exemple, /dev/vgcsync/lvol1).

      2. Exportation/importation du VG à l’échelle de la grappe.

      3. Définition d’un système de fichiers sur le LV.

      4. Création du point de montage du système de fichiers (par exemple, /csync) à l’échelle de la grappe.

      Les modèles par défaut supposent que vous utilisez un stockage de type LVM. Pour utiliser VxVM ou un autre stockage et des systèmes de fichiers à l’échelle de la grappe, effectuez les modifications appropriées aux modèles d’ensemble logiciel décrits ci-après.

    3. Vérifiez que le système de fichier de l’ensemble logiciel est monté sur le membre actuel. Par exemple, si vous utilisez LVM procédez comme suit :

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

  • Personnalisation initiale du fichier de politique

    1. Créez un sous-répertoire pour les fichiers maîtres de politique et les fichiers de référence. Par exemple :

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

      Ces exemples de répertoires sont ceux utilisés par csync_wizard.

    2. Copiez les modèles par défaut dans le répertoire des entrées du système maître :

      # 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. Éditez update.conf. Le format de ce fichier est similaire à celui du fichier de configuration principal de cfengine, cfagent.conf. Il est utilisé pour transférer et mettre à jour les données binaires de cfengine ainsi que les fichiers de définition de configuration mis à jour (par exemple, cfagent.conf) sur les clients gérés. Afin d’éviter toute erreur, il est important que ce fichier soit très simple. Si ce fichier contient des erreurs, il sera nécessaire d’effectuer une copie manuelle de la nouvelle version sur chaque client géré.

      Ce fichier contient des entités lexicales du type <%nom entité%> que csync_wizard remplacera par les réponses de l’administrateur aux questions posées. Remplacez les entités lexicales comme indiqué ci-après :

      • Remplacez <%HOST_NAMER%> par le nom d’hôte non qualifié de l’ensemble logiciel Serviceguard.

      • Remplacez <%DOMAIN_NAMER%> par le nom de domaine DNS de l’ensemble logiciel. Par exemple :

        host_name = ( “package-hostname”) 
        domain_name = ( “abc.xyz.com”)

      Notez que ce modèle de update.conf suppose que le serveur maître et ses clients appartiennent tous à un même domaine DNS. Si votre serveur maître comporte des clients gérés dans plusieurs domaines DNS, modifiez update.conf comme suit :

      • Remplacez <%HOST_NAMER%> par le nom d’hôte complet de l’ensemble logiciel Serviceguard.

      • Supprimez la variable « domain_name ».

      • Remplacez la ligne domain = ( “${domain_name}” ) par la ligne suivante :

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

        Cela permet de définir correctement la variable de domaine du côté client.

      Ces modifications de domaine doivent également être effectuées dans cf.main et cfservd.conf. Reportez-vous aux sections suivantes. Utilisez l’indicateur -p (--parse-only) de cfagent pour vérifier la syntaxe de update.conf.

  • Répertoriez les clients gérés dans cfrun.hosts

    cfrun exige que tous les clients gérés figurent dans le fichier cfrun.hosts. Étant donné que chaque membre de la grappe est considéré comme un client, vérifiez qu’ils figurent tous dans /csync/dsau/cfengine_master/inputs/cfrun.hosts.

    Éditez-le et ajoutez les noms d’hôtes de chaque membre (un par ligne). Il s’agit de la méthode la plus simple de vous assurer que tous les noms d’hôtes sont complets. Si vous utilisez des noms d’hôtes complets, la ligne “domain =” n’est pas requise et peut être supprimée. Si vous utilisez des noms d’hôtes non qualifiés, recherchez la ligne “domain = <%DOMAIN_NAMER%>” et remplacez l’entité lexicale par le domaine DNS des membres de la grappe. Cela implique que tous les clients appartienne au même domaine.

  • Modifiez le fichier maître de politique

    Le fichier /var/opt/dsau/cfengine_master/inputs/cfagent.conf est le fichier principal de politique. Le fichier cfagent.conf par défaut contient le modèle par défaut cf.main qui est un fichier modèle commenté comportant des exemples d’actions de synchronisation communes pour les systèmes autonomes et les grappes Serviceguard. Modifiez cf.main afin de remplacer les entités lexicales suivantes : cf.main contient les mêmes entités lexicales <%HOST_NAMER%> et <%DOMAIN_NAMER%> que update.conf. Effectuez les mêmes modifications que celles décrites à l’étape 3 de la liste précédente, « Personnalisation initiale du fichier de politique ».

    Notez que ce modèle par défaut n’effectue aucune action de gestion. Toutes les lignes d’actions sont mises en commentaire. Ce modèle contient de nombreux exemples spécifiques à la synchronisation des fichiers dans une grappe Serviceguard. Il s’agit d’un point de départ pour la création d’un ensemble personnalisé de règles et d’actions de cfengine pour la grappe et les autres clients gérés.

    Le manuel de référence de cfengine décrivant la syntaxe et toutes les actions de gestion possibles définies dans ce fichier figure dans le répertoire /opt/dsau/doc/cfengine.

    D’autres exemples de fichiers de configuration de cfengine fournis avec la distribution ouverte de cfengine figurent dans le répertoire /opt/dsau/share/cfengine/examples.

  • Modifiez le fichier cfservd.conf

    Le fichier /var/opt/dsau/cfengine_master/inputs/cfservd.conf contrôle les clients gérés qui peuvent accéder aux fichiers gérés par cfservd sur le serveur maître. Effectuez les modifications suivantes dans cfservd.conf.

    • Supprimez totalement la ligne suivante :

      domain_name        = ( “<%DOMAIN_NAMER%>” )

    • Modifiez l’affichage de la ligne

      domain             = ( “${domain_name}” )

      en :

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

    • La strophe « admit: » définit les clients pouvant accéder aux fichiers sur le serveur. Remplacez chaque « *.${domain_name} » par une liste des domaines DNS des clients gérés, séparés par un espace. Par exemple :

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

      Cet exemple permet à tous les hôtes figurant dans les domaines repertoriés d'accéder aux fichiers du serveur maître. Vous pouvez également spécifier des listes d'hôtes spécifiques, des plages d'adresses IP, etc. Pour plus d'informations, reportez-vous au manuel de reférence de cfengine.

  • Distribuez le fichier update.conf maître à chaque membre de la grappe

    Utilisez les commandes suivantes :

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

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

    cfengine se chargera de distribuer les fichiers restants à l’échelle de la grappe et à tous les clients gérés.

  • Distribuez les clés de sécurité de cfengine

    Étant donné que cfengine utilise un modèle d’échange de clés publiques/privées pour authentifier les clients gérés, il est nécessaire de configurer une clé associée à l’adresse IP relocalisable de l’ensemble logiciel. Cette adresse est celle vue comme serveur maître par les clients distants. Étant donné que tout membre de la grappe peut devenir le nœud adoptif, cette clé doit être identique sur tous les membres de la grappe. La commande cfkey de cfengine génère une paire de clés publiques/privées pour le système actuel. cfkey crée les fichiers localhost.priv et localhost.pub.

    cfengine exige que les clés soient nommées selon la convention suivante :

    nom_utilisateur-adresse IP.pub

    Par exemple :

    root-10.0.0.3.pub

    L’administrateur copie la clé localhost.pub sur le nom correct en fonction de l’adresse IP du système. Dans le cas d’une grappe, les clés du membre actuel sont utilisées pour générer les clés à l’échelle de la grappe selon la procédure suivante :

    1. Utilisez cfkey pour créer la paire de clés publiques et privées du membre de la grappe :

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

      Cette commande permet de créer les clés localhost.priv et localhost.pub.

    2. La clé publique, localhost.pub, est ensuite copiée sur root-adresse IP de l’ensemble logiciel.pub. Par exemple,

      # cp localhost.pub root-10.116.9.74.pub 

      où 10.116.9.74 correspond à l’adresse IP relocalisable de l’ensemble logiciel csync.

    3. La clé localhost.pub de ce membre est ensuite utilisée pour créer les clés spécifiques de chaque membre :

      # cp localhost.pub root-adresse IP membre1.pub 
      # cp localhost.pub root-adresse IP membre2.pub
      # cp localhost.pub root-adresse IP membre3.pub
      ...
      # cp localhost.pub root-adresse IP membreN.pub
    4. Enfin, toutes les clés sont copiées sur chaque membre.

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

      Remarque : ccp, qui est une commande de l’utilitaire Command Fanout, effectue une copie de la grappe, en copiant une commande sur tous les membres de cette grappe.

  • Configurez et lancez cfservd

    1. Configurez le démon cfservd de manière à le lancer au démarrage du système. Éditez /etc/rc.config.d/cfservd et modifiez la ligne CSYNC_CONFIGURED=0 en CSYNC_CONFIGURED=1.

    2. Répercutez cette modification à l’échelle de la grappe :

      # ccp /etc/rc.config.d/cfservd /etc/rc.config.d/cfservd
    3. Sur le serveur maître, lancez cfservd :

      # /sbin/init.d/cfservd start 
    4. Recommencez l’opération sur les autres membres de la grappe. Si vous avez configuré la grappe pour une utilisation avec les outils de déploiement de commande DSAU, utilisez la commande suivante pour lancer les démons à l’échelle de la grappe :

      # cexec /sbin/init.d/cfservd start 
  • Créez l’ensemble logiciel csync

    Pour créer l’ensemble logiciel de synchronisation de configuration, modifiez les fichiers modèles par défaut en fonction de votre environnement Serviceguard. Notez que l’ensemble logiciel doit impérativement s’appeller csync. Dans le cas contraire, les opérations automatisées de Serviceguard échoueront. Pour plus de détails, reportez-vous à la section « Fonctions d’automatisation de Serviceguard ».

    Tout d’abord, effectuez les modifications décrites ci-après.

    1. Créez le répertoire de l’ensemble logiciel à l’échelle de la grappe :

      # cexec mkdir /etc/cmcluster/csync
    2. Copiez le fichier modèle ASCII de l’ensemble logiciel et le script de contrôle correspondant dans le répertoire /etc/cmcluster/cysnc du membre actuel :

      # 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. Éditez le fichier de configuration ASCII de l’ensemble logiciel csync.conf afin de remplacer les entités lexicales de paramètres fictifs par les valeurs correspondantes. Les entités lexicales sont du type <%nom entité%>. Recherchez la ligne « SUBNET <%SG_PKG_SUBNET%> » et remplacez l’entité lexicale par le sous-réseau de l’ensemble logiciel csync. Utilisez netstat -i pour identifier le sous-réseau.

    4. Éditez le script de contrôle de l’ensemble logiciel et remplacez les paramètres fictifs par les valeurs correspondantes.

      Remarque : Le modèle de script par défaut suppose que vous utilisez une configuration de stockage de type LVM. Si vous utilisez VxVM et/ou CFS, reportez-vous à la documentation Managing Serviceguard pour plus de détails sur la configuration des ensembles logiciels à l’aide de ces technologies. Vous devrez mettre les éléments LVM du modèle décrit ci-après en commentaire et indiquer les strophes VxVM ou CFS correspondantes.

      1. Recherchez la ligne « VG[0]=“<%SG_PKG_VOL_GRP%>” » et remplacez l’entité lexicale par le nom du groupe de volumes LVM de l’ensemble logiciel. Par exemple, VG[0]“vgcsync”.

      2. Recherchez la ligne « LV[0]=“<%SG_PKG_LOG_VOL%>” » et remplacez l’entité lexicale par le nom complet du volume logique. Par exemple, LV[0]=“/dev/vgcsync/lvol1”.

      3. Recherchez la ligne « FS[0]=“<%SG_PKG_FS%>” » et remplacez l’entité lexicale par le nom du point de montage du système de fichiers créé pour cet ensemble logiciel. Par exemple, FS[0]=“/csync”.

        Notez que ce point de montage doit avoir été créé sur chaque membre de la grappe dans le cadre de la configuration de stockage décrite plus haut.

      4. Recherchez la ligne « FS_MOUNT_OPT[0]=“<%SG_PKG_MNT_OPT%>” » et remplacez l’entité lexicale par les options de montage du système de fichiers. Par exemple, FS_MOUNT_OPT[0]=“-o rw,largefiles”.

      5. Recherchez la ligne « FS_TYPE[0]=“<%SG_PKG_FS_TYPE%>” »et remplacez l’entité lexicale par le type de système de fichiers. Par exemple, FS_TYPE[0]=“vxfs”.

      6. Recherchez la ligne « FS_UMOUNT_OPT[0]=“<%SG_PKG_FS_UMOUNT_OPT%>” » et remplacez l’entité lexicale par les options umount éventuelles du système de fichiers. S’il n’existe aucune option umount spéciale, l’entité lexicale peut être supprimée et l’option peut rester vide. Par exemple, FS_UMOUNT_OPT[0]=“”.

      7. Recherchez la ligne « FS_FSCK_OPT[0]=“<%SG_PKG_FS_FSCK_OPT%>” » et remplacez l’entité lexicale par les options fsck éventuelles spécifiques au système de fichiers. Comme ci-dessus, vous pouvez supprimer l’entité lexicale et laisser cette option vide. Par exemple, FS_FSCK_OPT[0]=“”.

      8. Recherchez la ligne « IP[0]=“<%SG_PKG_IP%>” »et remplacez l’entité lexicale par l’adresse IP de l’ensemble logiciel csync. Par exemple, IP[0]= 123.456.789.3.

      9. Recherchez la ligne « SUBNET[0]=“<%SG_PKG_SUBNET%>” »et remplacez l’entité lexicale par le sous-réseau de l’adresse IP de l’ensemble logiciel. Utilisez netstat -i pour définir le sous-réseau. Par exemple, SUBNET[0]= 123.456.789.0.

    5. Distribuez le script de contrôle de l’ensemble logiciel et les fichiers de configuration ASCII correspondants à l’échelle de la grappe :

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

    6. Appliquez l’ensemble logiciel et lancez-le :

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

  • Testez la configuration de l’ensemble logiciel csync

    Pour tester la configuration, procédez comme suit :

    1. Sur un client géré, exécutez la commande suivante :

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

      Le mode prolixe affiche le client et recherche les copies mises à jour des fichiers maîtres de politique, les copie dans /var/opt/cfengine/inputs le cas échéant, puis exécute le contenu de cfagent.conf/cf.main.

    2. Sur le serveur maître, testez la commande cfrun :

      # cfrun -- --inform

      --inform demande au cfagent distant d’utiliser l’indicateur --inform afin de générer des messages pour toutes les modifications effectuées par cfengine sur le système. Pour plus d’informations, la commande --verbose peut également s’avérer utile :

      # cfrun -v -- --verbose

      L’option -v demande à cfrun d’être plus prolixe et la commande --verbose est transmise au cfagent distant.

      Pour plus d’informations sur le dépannage, reportez-vous à la section « Dépannage de cfengine ».

Configuration d’un client géré de synchronisation

Les principales étapes de configuration manuelle des clients gérés sont les suivantes :

  • Échange des clés de sécurité. Cette opération établit une relation sécurisée entre le client géré et le serveur maître.

  • Copie de update.conf du serveur maître vers le client géré.

  • Définition d’un planning d’exécution des opérations de synchronisation par cfagent.

Afin de configurer une grappe Serviceguard en tant que client d’un serveur maître cfengine existant, puis de traiter chaque membre de la grappe comme s’il s’agissait d’un système autonome configuré individuellement. Si vous ajoutez de nouveaux membres à la grappe, vous devez configurer chacun d’entre eux en conséquence.Si vous ajoutez un nouveau membre à une grappe Serviceguard et si cette grappe exécute l’ensemble logiciel csync, les membres de la grappe sont automatiquement configurés comme clients gérés par cfengine. Dans ce scénario, l’ensemble logiciel csync fonctionne comme serveur maître. Les nouveaux membres seront automatiquement configurés comme clients gérés et pourront traiter la reprise automatique de l’ensemble logiciel. Avant d’ajouter le membre à la grappe, vous devez configurer l’infrastructure de stockage et le système de fichiers de l’ensemble logiciel. Pour ajouter un nouveau client géré, vous devez tout d’abord configurer la relation sécurisée entre le client et le serveur maître. Les deux systèmes échangent des clés de sécurité qui leur permettent de s’authentifier. La clé publique du serveur maître doit être copiée sur le client et la clé publique du client est copiée sur le serveur maître :

  1. En tant qu’utilisateur root, créez la clé de sécurité du client à l’aide de cfkey :

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

    Cette opération permet de créer les fichiers localhost.pub et localhost.priv du client.

  2. Copiez la clé du client sur le serveur maître. Le serveur maître utilise la convention de dénomination suivante pour les clés des clients : <nom_utilisateur>-<adresse_IP_client>.pub.

  3. Installez la clé publique du client dans le répertoire ppkeys du serveur maître, conformément à la convention de dénomination suivante :

    # scp localhost.pub serveur_maître:\ 
      /var/opt/cfengine/ppkeys/root-adresse_IP_client.pub

    Remarquez qu’il est important d’utiliser un utilitaire du type copie sécurisée (voir scp(1)) pour le transfert de la clé, afin de protéger son intégrité.

  4. Enfin, copiez la clé du serveur maître sur le client géré :

    # scp serveur_maître:/var/opt/cfengine_master/ppkeys/localhost.pub \
      root-adresse_IP_maître.pub
  5. Puis, copiez le fichier update.conf du serveur maître sur le client géré :

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

Pour permettre à ce client d’accepter les demandes de cfrun, procédez comme suit :

  1. Éditez /etc/rc.config.d/cfservd et appliquez la valeur « 1 » à la variable CSYNC_CONFIGURED ; cette option permettra de lancer cfservd lors de l’amorçage du système.

  2. Lancez cfservd :

    # /sbin/init.d/cfservd start

  3. Testez la configuration à l’aide de cfagent (voir cfagent(8)):

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

    Le mode prolixe affiche le client et recherche les copies mises à jour des fichiers maîtres de politique, les copie dans /var/opt/cfengine/inputs le cas échéant, puis exécute le contenu de cfagent.conf/cf.main.

Pour plus d’informations sur le dépannage, reportez-vous à la section « Dépannage de cfengine ».

Choix d’une méthode d’appel de synchronisation

En tant qu’administrateur, vous pouvez diffuser les modifications aux clients gérés à l’aide de la commande cfrun (voir cfrun(8)). cfrun contacte le démon cfservd sur chaque client géré et cfservd appelle cfagent pour effectuer le travail de synchronisation. Vous pouvez également choisir d’exécuter cfagent à intervalles réguliers sur le client. Deux méthodes sont possibles :

  • Exécution de cfagent à partir d’une tâche cron.

    Pour exécuter cfagent à partir de cron, vous devez l’appeler à l’aide de cfexecd -F. Un exemple d’entrée crontab est donné ci-après :

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

    Cette entrée crontab entraîne l’exécution de cfagent toutes les heures.

    Dans cet exemple, cfexecd (voir cfexecd(8)) permet de conditionner cfagent et recueille tous les résultats pour les enregistrer dans /var/opt/dsau/cfengine/outputs. cfexecd peut également envoyer un e-mail à l’administrateur si cette option est sélectionnée dans le fichier cfagent.conf. Pour plus de détails, reportez-vous au manuel de référence de cfengine dans le répertoire /opt/dsau/doc/cfengine.

    Notez que le fichier cf.main par défaut contient un exemple d’ajout automatique de la ligne précédente au fichier crontab de chaque client géré.

  • Exécution de cfexecd en mode démon.

    cfexecd offre des fonctionnalités de type cron basées sur les classes temporelles de cfengine et peut être utilisé à la place de cron afin d’exécuter cfagent. Par défaut, cfexecd exécute cfengine toutes les heures. Si vous êtes novice dans l’utilisation de