Créer un miroir debian local

Lorsque beaucoup de postes clients utilisent la distribution debian, il peut etre intéressant, surtout si la bande passante vers internet est limitée de créer un dépot debian interne.

Le cas d'un dépot partiel devrait être traité dans un autre article.

On peut coupler ce dépots locaux (partiels ou complets) à des redirections transparentes au niveau du proxy Web (sujet traité ultérieurement dans un autre article)

Script de mirroring

Le miroir s'effectue par un script (un par depot répliqué en fait) utilisant une configuration commune.

Ces scripts sont destinés a être appelés régulièrement à l'aide de cron.

Voici par exemple le fichier de réplication du depot debian classique (architectures i386 et amd64, sans les sources, mais avec la section installation “netinst”) :

#!/bin/bash
# /usr/local/bin/maj_debian_mirror
# met a jour le depot debian interne (script appelé via cron)
# jerome drouet - jerome -at- drouet.eu - 2010
 
# inclusion des parametres
. /usr/local/bin/maj_debian_mirrors_inc
 
# Option valable uniquement pour Stable et Unstable (20050615)
export DEB_MIRROR_CONTENTS=" --getcontents "
 
export DEB_MIRROR_OPTS="-v \
                        --nosource \
                        --arch=i386,amd64 \
                        --dist=etch,lenny,squeeze,sid,experimental \
                        --progress \
                        --host=ftp.fr.debian.org \
                        --root=debian \
                        --ignore-release-gpg --method=http \
                        --section=main,contrib,non-free,main/debian-installer"
 
# Fichier log
export LOGF="$LOGDIR/debian_mirror_update.log"
 
   echo "$(date +%Y/%m/%d_%H:%M) : Debut maj Debian" >> $LOGF
   debmirror $DEB_MIRROR_CONTENTS $DEB_MIRROR_OPTS $MIRROR_ROOT/debian --pdiff=none >> $LOGF
   CR=$?
   echo "$(date +%Y/%m/%d_%H:%M) : Fin maj Debian : Code Retour : $CR " >> $LOGF

Fichier de configuration

Ce fichier est inclus par tous les scripts de mise a jour des dépôts debian utilisés :

#!/bin/bash
# /usr/local/bin/maj_debian_mirrors_inc 
# fichier inclus par les script de mise a jour du miroir debian
# jerome drouet - jerome -at- drouet.eu - 2010
 
# Repertoire des fichiers de log
LOGDIR="/var/log/debian-mirror/"
 
# repertoire racine des miroirs
MIRROR_ROOT="/export/mirror/"

Tache cron de MAJ automatique

Pour appeler l'ensemble des scripts on utilise donc une tache cron qui appelle ces scripts avec l'utilisateur “debmirror” créé pour cet usage.

Comme on peut le voir sur le fichier suivant les mises a jour sont effectuées à une fréquence fonction de l'activité sur les miroirs source, et de préférence la nuit pour les miroirs a faible activité pour préserver la bande passante la journée.

Les scripts de mise a jour des autres depots (security, archive, …) sont obtenus par modification du script de mise à jour précédent. Penser à dé-commenter les lignes correspondantes dans la tache cron et adapter les chemins au besoin

Voici le fichier de taches cron :

# fichier /etc/cron.d/debian_mirrors_update 
# Synchronisation des miroirs debian vers les depots Debian locaux
#
MAILTO=root

# miroir global Debian toutes les 2h
0 */2   * * * debmirror test -x /usr/local/bin/maj_debian_mirror && /usr/local/bin/maj_debian_mirror > /dev/null 2>&1

# miroir de backports toutes les 2h
#42 */2 * * * debmirror test -x /usr/local/bin/maj_debian_backports_mirror && /usr/local/bin/maj_debian_backports_mirror > /dev/null 2>&1

# Depot securite : toutes les 2h aussi
#55 */2 * * * debmirror test -x /usr/local/bin/maj_debian-security_mirror && /usr/local/bin/maj_debian-security_mirror > /dev/null 2>&1

# miroir d'archive Debian une fois par jour : a priori pas de changements
#30 21   * * * debmirror test -x /usr/local/bin/maj_debian-archive_mirror && /usr/local/bin/maj_debian-archive_mirror  > /dev/null 2>&1

# miroir debian multimedia - une fois par jour sera suffisant
#22 20 * * * debmirror test -x /usr/local/bin/maj_debian-multimedia_mirror  && /usr/local/bin/maj_debian-multimedia_mirror > /dev/null 2>&1
sysadmin/debian_mirror.txt · Dernière modification: 2012/09/21 17:33 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0