Projet

Général

Profil

MiroirDebian » Historique » Version 2

Version 1 (Fabien Dupont, 11/05/2013 14:33) → Version 2/6 (Baptiste Jonglez, 31/10/2014 12:58)

h1. Mise en place d'un miroir debian de type « « pull » » avec ftpsync

{{>toc}}

h2. Présentation Présentation

Un miroir de type « « push » » est un miroir pour lequel c'est l'upstream (debian) qui pousse les mises à à jour lorsqu'elles sont disponibles. Celà Celà permet d'avoir un miroir mis à à jour très très très très souvent mais c'est plutôt compliqué à plutôt compliqué à mettre en place et, pour un miroir non-public ou à à public limité, ça limité, ça ne présente présente pas un grand intérêt. intérêt.

Un miroir de type « pull » « pull » est un miroir qui va vérifier vérifier puis piocher les mises à à jours dans un autre miroir s'il y en a de disponibles. Cette vérification vérification est exécutée régulièrement, généralement exécutée régulièrement, généralement plusieurs fois par jour, à à la convenance de son administrateur.

Ftpsync ("repo git":https://ftp-master.debian.org/git/archvsync.git/) est "recommandé "recommandé par debian":http://www.debian.org/mirror/ftpmirror pour la mise en place de miroir partiels ou complets en push ou pull. C'est basiquement une série série de scripts permettant d'exécuter d'exécuter rsync avec les bons paramètres paramètres pour répondre répondre aux besoins décrits décrits dans des fichiers de configuration.

Ici, on va voir comment installer un miroir « pull » « pull » avec ftpsync.

h2. Utilisation

Une fois la mise en place effectuée, l'utilisation se fait via le fichier +/etc/apt/sources.list+.

h3. Debian stable (wheezy)

+/etc/apt/sources.list+
<pre>
deb http://apt.tetaneutral.net/debian/ wheezy main contrib
deb http://apt.tetaneutral.net/debian-security/ wheezy/updates main contrib
# wheezy-updates, previously known as 'volatile'
deb http://apt.tetaneutral.net/debian/ wheezy-updates main contrib
# Backports, à décommenter si besoin
#deb http://apt.tetaneutral.net/debian/ wheezy-backports main contrib
</pre>

h3. Debian oldstable (squeeze)

+/etc/apt/sources.list+
<pre>
deb http://apt.tetaneutral.net/debian/ squeeze main contrib
deb http://apt.tetaneutral.net/debian-security/ squeeze/updates main contrib
# squeeze-updates, previously known as 'volatile'
deb http://apt.tetaneutral.net/debian/ squeeze-updates main contrib
# Long-term support (mises à jour de sécurité)
deb http://apt.tetaneutral.net/debian/ squeeze-lts main contrib
</pre>

h3. Debian testing (jessie)

+/etc/apt/sources.list+
<pre>
deb http://apt.tetaneutral.net/debian/ jessie main contrib
deb http://apt.tetaneutral.net/debian-security/ jessie/updates main contrib
# jessie-updates, previously known as 'volatile'
deb http://apt.tetaneutral.net/debian/ jessie-updates main contrib
# Backports, à décommenter si besoin
#deb http://apt.tetaneutral.net/debian/ jessie-backports main contrib
</pre>

h2.
Installation

Afin de sécuriser sécuriser un poil l'installation, ftpsync doit être exécuté être exécuté en tant qu'utilisateur sans privilèges. privilèges. Ici, l'utilisateur s'appelera _mirror_ et son home directory sera dans /pub/mirror. Il faut prévoir prévoir quelques centaines de Go d'espace libre pour un miroir complet.

<pre>
# adduser --home=/pub/mirror --no-create-home --disabled-password mirror
</pre>

L'installation de ftpsync se fait bêtement bêtement en clonant le répostitory répostitory git dans le home de l'utilisateur mirror.

<pre>
# git clone https://ftp-master.debian.org/git/archvsync.git/ /pub/mirror
# chown -R mirror: mirror /pub/mirror
# ls -l /pub/mirror
total 36
drwxr-xr-x 2 mirror mirror 4096 May 2 07:42 bin
drwxr-xr-x 3 mirror mirror 4096 May 5 19:12 etc
drwxr-xr-x 2 mirror mirror 12288 May 11 13:30 log
drwxr-xr-x 4 mirror mirror 4096 Mar 14 11:49 mirrorcheck
-rw-r--r-- 1 mirror mirror 10882 Mar 14 11:49 README
</pre>

h2. Configuration

La configuration se passe dans ~mirror/etc. Ce répertoire répertoire contient plusieurs fichiers, certains pour les miroirs en mode « « pull » » (ftpsync*.conf), d'autres pour les miroirs en mode « « push » » (le reste). On ne va donc éditer éditer que ftpsync*.conf.

Un fichier d'exemple (ftpsync.conf.sample) est fourni pour détailler détailler tous les paramètres paramètres possibles. Voilà déjà Voilà déjà un fichier de configuration minimaliste mais « « qui juste marche » » pour cloner un miroir debian :

<pre>
# cat ~mirror/etc/ftpsync-debian.conf
MIRRORNAME="apt.tetaneutral.net"
TO="/pub/mirror/debian"
RSYNC_HOST="ftp.nl.debian.org"
RSYNC_PATH="debian"
RSYNC_EXTRA="-6"
RSYNC_OPTIONS2="--max-delete=40000 --delay-updates --delete --delete-after --delete-excluded"
MAILTO="sysadmin@wtf.net"
ERRORSONLY="true"
ARCH_EXCLUDE="alpha arm armhf hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 s390x sh sparc"
LOGROTATE=14
LOCK="${TO}/Archive-Update-in-Progress-debian-${MIRRORNAME}"
</pre>

Les paramètres paramètres sont les suivants :

* MIRRORNAME: le nom du miroir (interne à à ftpsync, sans importance donc).
* TO: le chemin vers le répertoire où répertoire où sera cloné cloné le miroir.
* RSYNC_HOST: l'adresse du serveur rsync depuis lequel on va cloner le miroir.
* RSYNC_PATH: le chemin que l'on va cloner sur le serveur rsync.
* RSYNC_EXTRA: des options qui seront passées à passées à rsync lors des deux passes du clonage (ici, on va utiliser IPv6).
* RSYNC_OPTIONS1: des options qui seront passées à passées à rsync lors de la première première passe du clonage (ici, y'en a pas).
* RSYNC_OPTIONS2: des options qui seront passées à passées à rsync lors de la deuxième deuxième passe du clonage (ici, on supprime ce qui ne sert plus).
* MAILTO: l'adresse mail à à laquelle envoyer le log du clonage.
* ERRORSONLY: si « « true », », le log du clonage ne sera envoyé envoyé qu'en cas d'erreur.
* ARCH_EXCLUDE: les architectures que l'on veut exclure (ici, il ne restera que i686, amd64 et armel).
* LOGROTATE: le nombre de fichiers de log que l'on veut garder dans ~mirror/log/.
* LOCK: le chemin vers un fichier de lock pour éviter éviter que deux clonages soient exécutés exécutés en simultané. simultané.

Pour les autres paramètres, paramètres, se référer à référer à ~mirror/etc/ftpsync.conf.sample.

Un autre exemple minimal pour le clonage du miroir « « debian-security » » (mises à à jour de sécurité) sécurité) :

<pre>
# cat ~mirror/etc/ftpsync-security.conf
MIRRORNAME="apt.tetaneutral.net"
TO="/pub/mirror/debian-security"
RSYNC_HOST="ftp.nl.debian.org"
RSYNC_PATH="debian-security"
RSYNC_EXTRA="-6"
RSYNC_OPTIONS2="--max-delete=40000 --delay-updates --delete --delete-after --delete-excluded"
MAILTO="sysadmin@kafe-in.net"
ERRORSONLY="true"
ARCH_EXCLUDE="alpha arm armhf hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 s390x sh sparc"
LOGROTATE=14
LOCK="${TO}/Archive-Update-in-Progress-security-${MIRRORNAME}"
</pre>

h2. Exécution périodique Exécution périodique

L'exécution L'exécution du clonage d'un miroir se fait avec la commande ~mirror/bin/ftpsync. Sans paramètres, paramètres, le fichier de configuration ~mirror/etc/ftpsync.conf est utilisé. utilisé. Il est toutefois possible de spécifier spécifier le fichier de configuration utilisé utilisé en ajoutant un paramètre « sync:archive:nomfichier ». paramètre « sync:archive:nomfichier ». Dans ce cas, le fichier de configuration ~mirror/etc/ftpsync-nomfichier.conf sera utilisé. utilisé.

Ici, nous avons deux fichiers de configuration (ftpsync-debian.conf et ftpsync-security.conf) pour deux miroirs à à cloner. Le miroir debian sera cloné cloné toutes les 4 heures (en différentiel, différentiel, bien sûr) sûr) et le miroir security toutes les heures.

<pre>
# crontab -u mirror -l
30 * * * * /pub/mirror/bin/ftpsync sync:archive:security
0 */4 * * * /pub/mirror/bin/ftpsync sync:archive:debian
</pre>

La bonne exécution exécution de ftpsync peut être contrôlée être contrôlée par le code d'erreur du script (0 = tout va bien) ou en regardant les fichiers de logs dans ~mirror/log.

h2. Rendre le miroir accessible en HTTP

Pour rendre le miroir accessible en HTTP, il suffit de configurer un serveur web en incluant /pub/mirror/debian et /pub/mirror/debian-security dans sa racine.

Par exemple, pour lighttpd :

<pre>
# cat /etc/lighttpd/lighttpd.conf
*snip*
$HTTP["host"] =~ "apt.tetaneutral.net" {
alias.url += (
"/debian/" => "/pub/mirror/debian/",
"/debian-security/" => "/pub/mirror/debian-security/",
)
}
*snip*
</pre>

Les deux miroirs seront donc utilisables en configurant apt de la façon façon suivante :

<pre>
# cat /etc/apt/sources.list.d/debian.list
deb http://apt.tetaneutral.net/debian/ wheezy main contrib
# cat /etc/apt/sources.list.d/debian-security.list
deb http://apt.tetaneutral.net/debian-security/ wheezy/updates main contrib
</pre>

h2. Quelques conseils

Pour finir, quelques petits conseils concernant la mise en place d'un miroir debian :

* Il faut prévoir prévoir pas mal de stockage pour un miroir complet. Sur http://apt.tetaneutral.net/ qui contient les versions stable, testing et unstable pour les architectures i686, amd64 et armel, les deux miroirs (debian et security) occupent environ 350Go d'espace disque.
* Le téléchargement téléchargement de ces 350Go coûte coûte cher à à votre FAI ! Si c'est Free, Orange ou SFR, on s'en fout. Mais si c'est tetaneutral.net, il faut privilégier privilégier le clonage d'un miroir accessible en IPv6. Le transit IPv6 est gratuit.
* Cloner un miroir trop souvent ne sert pas à à grand chose...autant faire du push. C'est toutefois assez utile pour le miroir des mises à à jour de sécurité. sécurité.
* Cloner un miroir trop peu souvent ne sert pas à à grand chose non plus. Ça Ça ne rendra l'exécution l'exécution de ftpsync que plus longue. Autant lisser la bande passante utilisée. utilisée.