C.3. Herança, os Blocos de <recursos< e Reusando Recursos
Alguns recursos se beneficiam herdando valores de um recurso pai; que é comumente o caso de um serviço NFS. O Exemplo C.5, “Configuração do Serviço NFS para Reuso e Herança do Recurso” mostra uma configuração de serviço NFS típica, configure para herança e reuso do recurso.
Exemplo C.5. Configuração do Serviço NFS para Reuso e Herança do Recurso
<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>
Se o serviço fosse horizontal (que é, sem relacionamentos pai/filho), ele precisaria ser configurado como a seguir:
- O serviço precisaria de quatro recursos nfsclient — um por sistema de arquivo (um total de dois por sistema de arquivo) e um por máquina alvo (um total de dois por máquina alvo).
- O serviço precisaria especificar o caminho de exportação e o ID do sistema de arquivo para cada nfsclient, que apresenta chances de erros na configuração.
No Exemplo C.5, “Configuração do Serviço NFS para Reuso e Herança do Recurso” entretanto, os recursos de cliente NFS nfsclient:bob e nfsclient:jim são definidos uma vez; da mesma maneira, o recurso de exportação do NFS nfsexport:exports é definido uma vez. Todos os atributos necessários pelos recursos são herdados dos recursos pais. Por causa que os atributos herdados são dinâmicos (e não entram em conflito entre si), é possível reusar aqueles recursos — que é porque eles são definidos no bloco de recursos. Pode não ser prático para configurar alguns recursos em múltiplos lugares. Por exemplo, configurar um recurso de sistema de arquivo em múltiplos lugares pode resultar em montar um sistema de arquivos em dois nós causando problemas.