apt-cacher-ng
est un service de proxy APT. En clair, lors de
la mise à jour d'un client Linux, au lieu de récupérer les
nouvelles versions des packages directement via les dépôts
Debian, celui-ci va interroger le service apt-cacher-ng qui
à son tour va se charger de récupérer les mises à jours et
de les stocker en local. La prochaine fois qu'un autre
client Linux voudra effectuer la même mise à jour, il pourra
la récupérer directement via le serveur apt-cacher-ng ce qui
évitera de solliciter à nouveau la connexion Internet.
apt-cacher-ng
est donc une sorte de miroir local qui se
remplit au fur et à mesure et qui évite la gestion d'un miroir local complet, d'autant plus que la pluaprt des paquest seront non utilisés.
Le module clients-linux
du se3 met en œuvre cette solution apt-cacher-ng
et le miroir local est stocké directement dans un répertoire du serveur se3. Ce qui peut poser des problèmes de place lorsqu'on a des disques durs de petites tailles (par exemple, 2 disques de 160 Go).
La solution présentée ici est d'utiliser un serveur supplémentaire qui stockera le miroir géré par apt-cacher-ng
: le répertoire du serveur complémentaire contenant les données est monté dans le répertoire du se3 dédié à cette fonction.
On pourra s'inspirer de cette solution pour stocker sur le même serveur supplémentaire des données de volume important
, données utilisées par vos collègues de langues ou de techno avec des vidéos par exemple : on peut leur créer un répertoire dédié accessible via le raccourci sur le Bureau "Docs sur le réseau", à renommer bien sûr en "Ressources sur le réseau" (c'est plus clair pour tous les utilisateurs). Ce répertoire dédié aura des droits particuliers pour que seul notre collègue puisse le voir et l'utiliser ;-) → cela se fait via l'interface web du se3.
Cette machine sera un serveur distant (alice/192.168.1.4) et un
répertoire de cette machine, /var/www/miroir/
, sera utilisé pour les paquets du
miroir apt-cacher-ng
géré par le se3.
- Installer les paquets
apache2
etnfs-kernel-server
, ainsi quemc
(midnight-commander) :
aptitude install apache2 mc nfs-kernel-server
- Créer un répertoire
/var/www/miroir/
:
mkdir /var/www/miroir
- Pour partager
/var/www/miroir/
avec lese3/192.168.1.3
, écrire la ligne suivante dans/etc/exports
:
/var/www/miroir 192.168.1.3(rw,no_root_squash)
- Relancer le service
nfs-kernel-server
:
service nfs-kernel-server restart
ou bien, plus bavard :
/etc/init.d/nfs-kernel-server restart
- Vérifications que les services sont bien en place :
showmount -e
rpcinfo -p | grep nfs
cat /proc/filesystems | grep nfs
rpcinfo -p | grep portmap
- voir les partages distants disponibles :
showmount -e 192.168.1.4
- droit root pour
/var/se3/apt-cacher-ng
avant le montage :
chown -R root:root /var/se3/apt-cacher-ng
- monter le répertoire distant :
mount -t nfs 192.168.1.4:/var/www/miroir /var/se3/apt-cacher-ng
- droits apt-cacher-ng après le montage :
chown -R apt-cacher-ng:apt-cacher-ng /var/se3/apt-cacher-ng
- relancer le service apt-cacher-ng :
service apt-cacher-ng restart
- vérifications du montage :
mount
- vérifications des droits : les droits en cas de montage (apt-cacher-ng) ou démontage (root) :
ls -l /var/se3/apt-cacher-ng/ | grep apt-cacher-ng
- vérification que le service est opérationnel:
- sur un client, changer le
/etc/apt/sources.list
pour mettre192.168.1.3:9999
- sur ce client, lancer un
aptitude update
puis unaptitude safe-upgrade
- le répertoire
/var/www/miroir
dealice/192.168.1.4
doit se remplir.
- sur un client, changer le
- Sur le se3
se3/192.168.1.3
, ajouter dans le fichier/etc/fstab
la ligne suivante :
192.168.1.4:/var/www/miroir /var/se3/apt-cacher-ng nfs _netdev,noatime,defaults 0 0
- Test des montages et alertes par courriel si nécessaire.
Un script à mettre dans
/root
du se3 :espion_montage_alice.sh
(le script est donné à la fin de cet article).
À mettre dans le crontab pour un lancement tous les jours à 8h02 :
crontab -e
ajouter la ligne :
02 08 * * * bash espion_montage_alice.sh
- Autre solution, non testée :
Sur le
se3/192.168.1.3
, tâche cron au démarrage (pour mémoire), rajouter la ligne suivante à la cron-table :
@reboot mount -t nfs 192.168.1.4:/var/www/miroir /var/se3/apt-cacher-ng
- Autre option : utiliser autofs ? → non testée
-
Dans l'interface du se3, décocher l'option de l'IP du miroir APT et supprimer les contenus des deux champs
-
modifier les fichier preseed.
- sur les clients-linux, il faudra modifier les
/etc/apt/sources.list
en remplaçant, si on avait un miroir local,IP_miroir/miroir
parIP_serveur_se3:9999
(par exemple en passant par un script unefois).
- Arrêt du service sur le
se3/192.168.1.3
:
service apt-cacher-ng stop
- Pour démonter le partage sur le
se3/192.168.1.3
:
umount /var/se3/apt-cacher-ng
Annexe
#!/bin/bash
##### ##### #####
#
# test du montage du répertoire distant du miroir apt-cacher-ng
# envoie d'un courriel si non monté
#
#
# version 20150609
#
#
##### ##### #####
#####
# quelques variables
MAIL_ADMIN=$(cat /etc/ssmtp/ssmtp.conf | grep root | cut -d "=" -f 2)
IP_alice="192.168.1.4"
rep_apt_cacher_ng="/var/se3/apt-cacher-ng"
COURRIEL="Le répertoire distant $IP_alice:/var/www/miroir n'est pas monté sur $rep_apt_cacher_ng"
test_montage()
{
# Le répertoire distant IP_alice:/var/www/miroir devrait être monté sur le répertoire rep_apt_cacher_ng du se3
montage=`mount | grep $IP_alice`
if [ -z "$montage" ]
then
# le répertoire IP_alice:/var/www/miroir n'étant pas monté , on envoie un message d'alerte
echo $COURRIEL | mail $MAIL_ADMIN -s "apt-caher-ng Se3 : répertoire non monté" -a "Content-type: text/plain; charset=UTF-8"
fi
}
#####
# début du programme
#
test_montage
exit 0
#
# fin du programme
#####