Je suis en train de migrer le réseau informatique de notre lycée – serveurs et postes clients – vers CentOS. Ici dans les Cévennes, le débit ADSL n’est pas faramineux, et toute opération d’installation ou de mise à jour via le réseau devient vite assez fastidieuse lorsqu’on doit l’effectuer sur une vingtaine de machines.
Les utilisateurs de Debian et Ubuntu disposent d’un outil fort pratique pour ce genre de situation, c’est Apt-Cacher. Je l’ai moi-même utilisé à une époque, et je dois dire que suis un peu surpris de ne pas trouver d’outil équivalent pour les distributions de la famille Red Hat Enterprise Linux. J’ai donc expérimenté un peu avec les machines de notre réseau, et j’ai trouvé une solution “fait maison” qui fonctionne tout aussi bien.
En temps normal, Yum garde les paquets téléchargés dans un cache local /var/cache/yum
. Or, ce cache est régulièrement vidé dans la configuration définie par défaut dans /etc/yum.conf
.
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0
Dans un premier temps, j’ai configuré le serveur principal du réseau – celui qui partage les répertoires utilisateurs via NFS – de manière à ce qu’il garde tous les paquets téléchargés dans le cache, en éditant /etc/yum.conf
comme ceci.
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=1
Ensuite, j’ai ajouté le cache de paquets aux partages NFS.
# /etc/exports /home 192.168.10.0/24(rw,async,no_subtree_check) \ *.scholae.lan(rw,async,no_subtree_check) /var/cache/yum 192.168.10.0/24(... ,no_root_squash) \ *.scholae.lan(... ,no_root_squash)
L’option no_root_squash
est nécessaire pour permettre à root
d’accéder au partage.
Sur les postes clients, il faut tout d’abord définir la persistance du cache dans /etc/yum.conf
pour éviter de le purger.
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=1
Je supprime le contenu du cache local.
# rm -rf /var/cache/yum/x86_64
Le répertoire vide /var/cache/yum
servira comme point de montage pour NFS. Voici à quoi cela ressemble dans /etc/fstab
.
serveur:/var/cache/yum /var/cache/yum nfs defaults,_netdev 0 0
À partir de là, il suffit d’effectuer une installation ou une mise à jour sur une seule des machines du réseau. Les autres machines se serviront automatiquement dans le cache, ce qui accélère les opérations de manière significative.
Il faudra veiller à bien définir la persistance du cache (keepcache=1
) sur tous les clients qui se servent dans le cache partagé, faute de quoi il suffit d’un seul client pour supprimer tous les précieux téléchargements.