NetInfo

Voici une petite explication de NetInfo sur un système NeXTSTEP.

Pourquoi NetInfo

Un système unix est un système multiutilisateur et est orienté réseau. Pour gérer un tel système, unix doit utiliser de nombreuses informations, comme les noms des utilisateurs, les mots de passe, les noms des autres machines, leurs adresses...

Toutes ces informations sont stockées dans différents fichiers comme /etc/passwd, /etc/hosts... Chaque fichier a une structure différente des autres et il n'y a pas vraiment de logique dans tout cela. C'est juste qu'historiquement il y a eu de plus en plus de programmes et que chacun d'eux a utilisé ses propres fichiers de configuration.

Quand des machines sont connectées entre-elles sur un réseau, cela devient vite très dur de faire une gestion propre de toutes les informations à dupliquer sur chaque machine. Sun a alors développé NIS ("Network Information System", dont l'ancien nom est "Yellow Pages"), une base de données orientée réseau pour gérer une partie de ce problème. La gestion de NIS n'est pas des plus simple et cette base de données n'est pas extensible facilement et n'est pas trés performante.

La société australienne Xedoc a alors créé NetInfo. NeXT a licencié NetInfo à Xedoc pour l'intégrer à NeXTSTEP. La documentation originale de NetInfo de Xedoc peut être trouvée ici (format pdf).

Qu'est-ce que NetInfo

NetInfo est une base de données regroupant toutes les informations administratives de toutes les machines d'un réseau. Cette base de donnée remplace ainsi tous les fichiers unix disparates d'une machine, mais cette base remplace aussi tous les fichiers de toutes les machines d'un réseau. NetInfo remplace ainsi NIS.

NetInfo est utile pour une machine seule (il remplace tous les fichiers "standard" unix), mais il tire sa puissance dès qu'il est utilisé sur un réseau.

La gestion de NetInfo peut être faite par des commandes unix sur la ligne de commande (du type niutil), ou par un programme graphique appelé NetInfo Manager.

Tous les programmes du système utilisent les API traditionnelles unix pour récupérer les informations administratives qui se trouvent dans la base de données NetInfo. Ceci est fait de façon transparente. Des API plus génériques sont aussi disponibles pour gérer tous les fonctionnalités de NetInfo.

Dans l'exemple ci-dessous de NetInfoManager, est affiché la base locale d'une machine (le nom de la machine n'est pas affiché dans le titre de la fenêtre car son adresse IP est attribuée dynamiquement par DHCP).

Le contenu de la base NetInfo est organisée de façon hiérarchique. On peut ajouter des entrés à tous les niveaux. Certains noms sont réservés. Ainsi le chemin "/machines" contient les machines du réseau, et "/machines/tasha" contient les informations de la machine "tasha".

Lorsque l'on regarde les informations d'une machine donnée ont obtient par exemple :

Pour une utilisation simple d'une machine, il n'est pas nécessaire de modifier directement la base de données NetInfo, ceci se fait par des programmes spécifiques comme User Manager, Print Manager, Host Manager...

Base de données NetInfo

La base de données NetInfo peut être locale, mais elle peut être sur une machine distante.

En fait NetInfo est une base de données hiérarchisée en domaines. Ainsi dans une entreprise ayant un serveur NetInfo global centralisé, chaque division de l'entreprise est représenté par une branche. Chaque service a sa sous-branche... et chaque ordinateur est une feuille.

Il peut y avoir un seul serveur NetInfo sur un réseau ou plusieurs. Par exemple on peut avoir un serveur global contenant tous les informations de l'entreprise, puis un serveur par division contenant des informations plus précises, puis un serveur par service dans lequel chaque machine et chaque utilisateur est connu.

Quand un programme demande une information au système, celui-ci regarde d'abord dans sa base de données NetInfo locale. S'il ne trouve pas les informations, il demande alors au serveur NetInfo de premier niveau, s'il ne trouve pas cette information, il demande au deuxième niveau... Tout cela est bien sûr fait de façon transparente.

Toutes les informations du système se trouvent dans la base NetInfo, par exemple le type de clavier de la machine se trouve dans "/localconfig/keyboard" :

Autre exemple : l'imprimante appelée "Laser" a différentes propriétés dont celle-ci :

Il est possible de rechercher une valeur dans la base NetInfo, comme par exemple :

Avantages de NetInfo

NetInfo dispose de nombreux avantages. En voici certains :

  • Administration : NeXTSTEP utilise le programme NetInfo Manager pour gérer les bases de données NetInfo qui peuvent être locale ou distante. Et donc de n'importe quelle machine du réseau on peut administrer tout le réseau, toutes les machines, tous les utilisateurs.

    En plus de l'interface graphique, il est possible de géer la base de données à partir de commandes unix qui peuvent se faire à travers une connexion du type telnet :

  • Fiabilité : une base de données c'est bien, mais il n'en existe qu'une copie. Pour fiabiliser ce point il est possible d'avoir une base Maître et plusieurs bases Clones. Il est possible de mettre ces Clones sur n'importe quelle machine du réseau. La collection de la base Maître et des bases Clones est appelée un Domaine.

    Une machine donnée peut héberger plusieurs bases NetInfo, par exemple une base locale, une base Maître, et plusieurs Clones (d'autres domaines). La base de données NetInfo se trouve dans le répertoire "/etc/netinfo", la base locale y a pour nom "local.nibd".

  • Mise à jour : lorsque l'on fait une modification sur une information de la base, le système répercute cette modification sur la base Maître, qui, lui-même la répercute sur les bases Clones.

  • Autoconfiguration : le système NetInfo permet, juste en branchant une nouvelle machine sur un réseau, de la rajouter au système. Il est aussi simple de déplacer une machine dans le réseau ou d'en supprimer une.

  • Flexibilié : la base de données NetInfo a une structure très simple (clé / valeur). On peut ainsi ajouter de nouvelles structures et de nouveaux champs à la base, sans avoir à modifier le système.

  • Coexistence : NetInfo est un système complet qui se suffit à lui-même, mais il peut aussi coexister avec d'autres systèmes voisins, comme NIS, ou BIND. Lorsque le système cherche une information, il le fait d'abord dans la base NetInfo, s'il ne trouve rien, il cherche avec NIS, puis avec BIND.

NetInfo existe sur NeXTSTEP et tous ses successeurs, mais il existe aussi sur d'autres systèmes. Xedoc a réalisé des portages sur Irix, Solaris, HP/UX, AIX... De plus, Apple a mis en OpenSource le code de base de NetInfo dans le projet Darwin.