C.3. Héritage, le bloc , et la réutilisation des ressources

Certaines ressources bénéficient de l'héritage des valeurs depuis une ressource parente. Ceci est communément le case pour un service NFS. L'Exemple C.5, « Paramétrage du service NFS pour une réutilisation des ressources et un héritage » montre une configuration de service NFS typique, paramétrée pour une réutilisation des ressources et un héritage.

Exemple C.5. Paramétrage du service NFS pour une réutilisation des ressources et un héritage


    <resources>
        <nfsclient name="bob" target="bob.example.com" options="rw,no_root_squash"/>
        <nfsclient name="jim" target="jim.example.com" options="rw,no_root_squash"/>
        <nfsexport name="exports"/>
    </resources>
    <service name="foo">
        <fs name="1" mountpoint="/mnt/foo" device="/dev/sdb1" fsid="12344">
            <nfsexport ref="exports">  <!-- nfsexport's path and fsid attributes
                                            are inherited from the mountpoint &
                                            fsid attribute of the parent fs 
                                            resource -->
                <nfsclient ref="bob"/> <!-- nfsclient's path is inherited from the
                                            mountpoint and the fsid is added to the
                                            options string during export -->
                <nfsclient ref="jim"/>
            </nfsexport>
        </fs>
        <fs name="2" mountpoint="/mnt/bar" device="/dev/sdb2" fsid="12345">
            <nfsexport ref="exports">
                <nfsclient ref="bob"/> <!-- Because all of the critical data for this
                                            resource is either defined in the 
                                            resources block or inherited, we can
                                            reference it again! -->
                <nfsclient ref="jim"/>
            </nfsexport>
        </fs>
        <ip address="10.2.13.20"/>
    </service>

Si le service était plat (c'est-à-dire sans relations de type parent/enfant), il devrait alors être configuré comme suit :
  • Le service nécessiterait quatre ressources nfsclient — une par fichier (soit un total de deux pour les systèmes de fichiers), et une par machine-cible (soit un total de deux pour les machines-cibles).
  • Le service devrait spécifier le chemin d'exportation et l'ID du système de fichiers à chaque nfsclient, ce qui induit la possibilité d'erreurs dans la configuration.
Cependant, dans l'Exemple C.5, « Paramétrage du service NFS pour une réutilisation des ressources et un héritage » , les ressources client NFS nfsclient:bob et nfsclient:jim ne sont définies qu'une seule fois. De même, la ressource d'exportation NFS nfsexport:exports n'est définie qu'une seule fois. Tous les attributs nécessités par les ressources sont hérités de ressources parentes. Comme les attributs hérités sont dynamiques (et ne rentrent pas en conflit les uns avec les autres), il est possible de réutiliser ces ressources — c'est pourquoi ils sont définit dans le bloc des ressources, même si ce n'est pas pratique pour la configuration de certaines ressources se trouvant dans de multiples emplacements. Par exemple, la configuration d'une ressource de système de fichiers dans de multiples emplacements peut résulter en le montage d'un système de fichiers sur deux nœuds, et ainsi provoquer des problèmes.