Configurer un cache de paquets local avec Yum et NFS

Paquets RPMJe 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.

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *