MiroirDebian » Historique » Version 2
Baptiste Jonglez, 31/10/2014 12:58
1 | 2 | Baptiste Jonglez | h1. Mise en place d'un miroir debian de type « pull » avec ftpsync |
---|---|---|---|
2 | 1 | Fabien Dupont | |
3 | 1 | Fabien Dupont | {{>toc}} |
4 | 1 | Fabien Dupont | |
5 | 2 | Baptiste Jonglez | h2. Présentation |
6 | 1 | Fabien Dupont | |
7 | 2 | Baptiste Jonglez | 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à permet d'avoir un miroir mis à jour très très souvent mais c'est plutôt compliqué à mettre en place et, pour un miroir non-public ou à public limité, ça ne présente pas un grand intérêt. |
8 | 1 | Fabien Dupont | |
9 | 2 | Baptiste Jonglez | Un miroir de type « pull » est un miroir qui va vérifier puis piocher les mises à jours dans un autre miroir s'il y en a de disponibles. Cette vérification est exécutée régulièrement, généralement plusieurs fois par jour, à la convenance de son administrateur. |
10 | 1 | Fabien Dupont | |
11 | 2 | Baptiste Jonglez | Ftpsync ("repo git":https://ftp-master.debian.org/git/archvsync.git/) est "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 de scripts permettant d'exécuter rsync avec les bons paramètres pour répondre aux besoins décrits dans des fichiers de configuration. |
12 | 1 | Fabien Dupont | |
13 | 2 | Baptiste Jonglez | Ici, on va voir comment installer un miroir « pull » avec ftpsync. |
14 | 1 | Fabien Dupont | |
15 | 2 | Baptiste Jonglez | h2. Utilisation |
16 | 2 | Baptiste Jonglez | |
17 | 2 | Baptiste Jonglez | Une fois la mise en place effectuée, l'utilisation se fait via le fichier +/etc/apt/sources.list+. |
18 | 2 | Baptiste Jonglez | |
19 | 2 | Baptiste Jonglez | h3. Debian stable (wheezy) |
20 | 2 | Baptiste Jonglez | |
21 | 2 | Baptiste Jonglez | +/etc/apt/sources.list+ |
22 | 2 | Baptiste Jonglez | <pre> |
23 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian/ wheezy main contrib |
24 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian-security/ wheezy/updates main contrib |
25 | 2 | Baptiste Jonglez | # wheezy-updates, previously known as 'volatile' |
26 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian/ wheezy-updates main contrib |
27 | 2 | Baptiste Jonglez | # Backports, à décommenter si besoin |
28 | 2 | Baptiste Jonglez | #deb http://apt.tetaneutral.net/debian/ wheezy-backports main contrib |
29 | 2 | Baptiste Jonglez | </pre> |
30 | 2 | Baptiste Jonglez | |
31 | 2 | Baptiste Jonglez | h3. Debian oldstable (squeeze) |
32 | 2 | Baptiste Jonglez | |
33 | 2 | Baptiste Jonglez | +/etc/apt/sources.list+ |
34 | 2 | Baptiste Jonglez | <pre> |
35 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian/ squeeze main contrib |
36 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian-security/ squeeze/updates main contrib |
37 | 2 | Baptiste Jonglez | # squeeze-updates, previously known as 'volatile' |
38 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian/ squeeze-updates main contrib |
39 | 2 | Baptiste Jonglez | # Long-term support (mises à jour de sécurité) |
40 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian/ squeeze-lts main contrib |
41 | 2 | Baptiste Jonglez | </pre> |
42 | 2 | Baptiste Jonglez | |
43 | 2 | Baptiste Jonglez | h3. Debian testing (jessie) |
44 | 2 | Baptiste Jonglez | |
45 | 2 | Baptiste Jonglez | +/etc/apt/sources.list+ |
46 | 2 | Baptiste Jonglez | <pre> |
47 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian/ jessie main contrib |
48 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian-security/ jessie/updates main contrib |
49 | 2 | Baptiste Jonglez | # jessie-updates, previously known as 'volatile' |
50 | 2 | Baptiste Jonglez | deb http://apt.tetaneutral.net/debian/ jessie-updates main contrib |
51 | 2 | Baptiste Jonglez | # Backports, à décommenter si besoin |
52 | 2 | Baptiste Jonglez | #deb http://apt.tetaneutral.net/debian/ jessie-backports main contrib |
53 | 2 | Baptiste Jonglez | </pre> |
54 | 2 | Baptiste Jonglez | |
55 | 1 | Fabien Dupont | h2. Installation |
56 | 1 | Fabien Dupont | |
57 | 2 | Baptiste Jonglez | Afin de sécuriser un poil l'installation, ftpsync doit être exécuté en tant qu'utilisateur sans privilèges. Ici, l'utilisateur s'appelera _mirror_ et son home directory sera dans /pub/mirror. Il faut prévoir quelques centaines de Go d'espace libre pour un miroir complet. |
58 | 1 | Fabien Dupont | |
59 | 1 | Fabien Dupont | <pre> |
60 | 1 | Fabien Dupont | # adduser --home=/pub/mirror --no-create-home --disabled-password mirror |
61 | 1 | Fabien Dupont | </pre> |
62 | 1 | Fabien Dupont | |
63 | 2 | Baptiste Jonglez | L'installation de ftpsync se fait bêtement en clonant le répostitory git dans le home de l'utilisateur mirror. |
64 | 1 | Fabien Dupont | |
65 | 1 | Fabien Dupont | <pre> |
66 | 1 | Fabien Dupont | # git clone https://ftp-master.debian.org/git/archvsync.git/ /pub/mirror |
67 | 1 | Fabien Dupont | # chown -R mirror: mirror /pub/mirror |
68 | 1 | Fabien Dupont | # ls -l /pub/mirror |
69 | 1 | Fabien Dupont | total 36 |
70 | 1 | Fabien Dupont | drwxr-xr-x 2 mirror mirror 4096 May 2 07:42 bin |
71 | 1 | Fabien Dupont | drwxr-xr-x 3 mirror mirror 4096 May 5 19:12 etc |
72 | 1 | Fabien Dupont | drwxr-xr-x 2 mirror mirror 12288 May 11 13:30 log |
73 | 1 | Fabien Dupont | drwxr-xr-x 4 mirror mirror 4096 Mar 14 11:49 mirrorcheck |
74 | 1 | Fabien Dupont | -rw-r--r-- 1 mirror mirror 10882 Mar 14 11:49 README |
75 | 1 | Fabien Dupont | </pre> |
76 | 1 | Fabien Dupont | |
77 | 1 | Fabien Dupont | h2. Configuration |
78 | 1 | Fabien Dupont | |
79 | 2 | Baptiste Jonglez | La configuration se passe dans ~mirror/etc. Ce 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 que ftpsync*.conf. |
80 | 1 | Fabien Dupont | |
81 | 2 | Baptiste Jonglez | Un fichier d'exemple (ftpsync.conf.sample) est fourni pour détailler tous les paramètres possibles. Voilà déjà un fichier de configuration minimaliste mais « qui juste marche » pour cloner un miroir debian : |
82 | 1 | Fabien Dupont | |
83 | 1 | Fabien Dupont | <pre> |
84 | 1 | Fabien Dupont | # cat ~mirror/etc/ftpsync-debian.conf |
85 | 1 | Fabien Dupont | MIRRORNAME="apt.tetaneutral.net" |
86 | 1 | Fabien Dupont | TO="/pub/mirror/debian" |
87 | 1 | Fabien Dupont | RSYNC_HOST="ftp.nl.debian.org" |
88 | 1 | Fabien Dupont | RSYNC_PATH="debian" |
89 | 1 | Fabien Dupont | RSYNC_EXTRA="-6" |
90 | 1 | Fabien Dupont | RSYNC_OPTIONS2="--max-delete=40000 --delay-updates --delete --delete-after --delete-excluded" |
91 | 1 | Fabien Dupont | MAILTO="sysadmin@wtf.net" |
92 | 1 | Fabien Dupont | ERRORSONLY="true" |
93 | 1 | Fabien Dupont | ARCH_EXCLUDE="alpha arm armhf hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 s390x sh sparc" |
94 | 1 | Fabien Dupont | LOGROTATE=14 |
95 | 1 | Fabien Dupont | LOCK="${TO}/Archive-Update-in-Progress-debian-${MIRRORNAME}" |
96 | 1 | Fabien Dupont | </pre> |
97 | 1 | Fabien Dupont | |
98 | 2 | Baptiste Jonglez | Les paramètres sont les suivants : |
99 | 1 | Fabien Dupont | |
100 | 2 | Baptiste Jonglez | * MIRRORNAME: le nom du miroir (interne à ftpsync, sans importance donc). |
101 | 2 | Baptiste Jonglez | * TO: le chemin vers le répertoire où sera cloné le miroir. |
102 | 1 | Fabien Dupont | * RSYNC_HOST: l'adresse du serveur rsync depuis lequel on va cloner le miroir. |
103 | 1 | Fabien Dupont | * RSYNC_PATH: le chemin que l'on va cloner sur le serveur rsync. |
104 | 2 | Baptiste Jonglez | * RSYNC_EXTRA: des options qui seront passées à rsync lors des deux passes du clonage (ici, on va utiliser IPv6). |
105 | 2 | Baptiste Jonglez | * RSYNC_OPTIONS1: des options qui seront passées à rsync lors de la première passe du clonage (ici, y'en a pas). |
106 | 2 | Baptiste Jonglez | * RSYNC_OPTIONS2: des options qui seront passées à rsync lors de la deuxième passe du clonage (ici, on supprime ce qui ne sert plus). |
107 | 2 | Baptiste Jonglez | * MAILTO: l'adresse mail à laquelle envoyer le log du clonage. |
108 | 2 | Baptiste Jonglez | * ERRORSONLY: si « true », le log du clonage ne sera envoyé qu'en cas d'erreur. |
109 | 1 | Fabien Dupont | * ARCH_EXCLUDE: les architectures que l'on veut exclure (ici, il ne restera que i686, amd64 et armel). |
110 | 1 | Fabien Dupont | * LOGROTATE: le nombre de fichiers de log que l'on veut garder dans ~mirror/log/. |
111 | 2 | Baptiste Jonglez | * LOCK: le chemin vers un fichier de lock pour éviter que deux clonages soient exécutés en simultané. |
112 | 1 | Fabien Dupont | |
113 | 2 | Baptiste Jonglez | Pour les autres paramètres, se référer à ~mirror/etc/ftpsync.conf.sample. |
114 | 1 | Fabien Dupont | |
115 | 2 | Baptiste Jonglez | Un autre exemple minimal pour le clonage du miroir « debian-security » (mises à jour de sécurité) : |
116 | 1 | Fabien Dupont | |
117 | 1 | Fabien Dupont | <pre> |
118 | 1 | Fabien Dupont | # cat ~mirror/etc/ftpsync-security.conf |
119 | 1 | Fabien Dupont | MIRRORNAME="apt.tetaneutral.net" |
120 | 1 | Fabien Dupont | TO="/pub/mirror/debian-security" |
121 | 1 | Fabien Dupont | RSYNC_HOST="ftp.nl.debian.org" |
122 | 1 | Fabien Dupont | RSYNC_PATH="debian-security" |
123 | 1 | Fabien Dupont | RSYNC_EXTRA="-6" |
124 | 1 | Fabien Dupont | RSYNC_OPTIONS2="--max-delete=40000 --delay-updates --delete --delete-after --delete-excluded" |
125 | 1 | Fabien Dupont | MAILTO="sysadmin@kafe-in.net" |
126 | 1 | Fabien Dupont | ERRORSONLY="true" |
127 | 1 | Fabien Dupont | ARCH_EXCLUDE="alpha arm armhf hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 s390x sh sparc" |
128 | 1 | Fabien Dupont | LOGROTATE=14 |
129 | 1 | Fabien Dupont | LOCK="${TO}/Archive-Update-in-Progress-security-${MIRRORNAME}" |
130 | 1 | Fabien Dupont | </pre> |
131 | 1 | Fabien Dupont | |
132 | 2 | Baptiste Jonglez | h2. Exécution périodique |
133 | 1 | Fabien Dupont | |
134 | 2 | Baptiste Jonglez | L'exécution du clonage d'un miroir se fait avec la commande ~mirror/bin/ftpsync. Sans paramètres, le fichier de configuration ~mirror/etc/ftpsync.conf est utilisé. Il est toutefois possible de spécifier le fichier de configuration utilisé en ajoutant un paramètre « sync:archive:nomfichier ». Dans ce cas, le fichier de configuration ~mirror/etc/ftpsync-nomfichier.conf sera utilisé. |
135 | 1 | Fabien Dupont | |
136 | 2 | Baptiste Jonglez | Ici, nous avons deux fichiers de configuration (ftpsync-debian.conf et ftpsync-security.conf) pour deux miroirs à cloner. Le miroir debian sera cloné toutes les 4 heures (en différentiel, bien sûr) et le miroir security toutes les heures. |
137 | 1 | Fabien Dupont | |
138 | 1 | Fabien Dupont | <pre> |
139 | 1 | Fabien Dupont | # crontab -u mirror -l |
140 | 1 | Fabien Dupont | 30 * * * * /pub/mirror/bin/ftpsync sync:archive:security |
141 | 1 | Fabien Dupont | 0 */4 * * * /pub/mirror/bin/ftpsync sync:archive:debian |
142 | 1 | Fabien Dupont | </pre> |
143 | 1 | Fabien Dupont | |
144 | 2 | Baptiste Jonglez | La bonne exécution de ftpsync peut ê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. |
145 | 1 | Fabien Dupont | |
146 | 1 | Fabien Dupont | h2. Rendre le miroir accessible en HTTP |
147 | 1 | Fabien Dupont | |
148 | 1 | Fabien Dupont | 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. |
149 | 1 | Fabien Dupont | |
150 | 1 | Fabien Dupont | Par exemple, pour lighttpd : |
151 | 1 | Fabien Dupont | |
152 | 1 | Fabien Dupont | <pre> |
153 | 1 | Fabien Dupont | # cat /etc/lighttpd/lighttpd.conf |
154 | 1 | Fabien Dupont | *snip* |
155 | 1 | Fabien Dupont | $HTTP["host"] =~ "apt.tetaneutral.net" { |
156 | 1 | Fabien Dupont | alias.url += ( |
157 | 1 | Fabien Dupont | "/debian/" => "/pub/mirror/debian/", |
158 | 1 | Fabien Dupont | "/debian-security/" => "/pub/mirror/debian-security/", |
159 | 1 | Fabien Dupont | ) |
160 | 1 | Fabien Dupont | } |
161 | 1 | Fabien Dupont | *snip* |
162 | 1 | Fabien Dupont | </pre> |
163 | 1 | Fabien Dupont | |
164 | 2 | Baptiste Jonglez | Les deux miroirs seront donc utilisables en configurant apt de la façon suivante : |
165 | 1 | Fabien Dupont | |
166 | 1 | Fabien Dupont | <pre> |
167 | 1 | Fabien Dupont | # cat /etc/apt/sources.list.d/debian.list |
168 | 1 | Fabien Dupont | deb http://apt.tetaneutral.net/debian/ wheezy main contrib |
169 | 1 | Fabien Dupont | # cat /etc/apt/sources.list.d/debian-security.list |
170 | 1 | Fabien Dupont | deb http://apt.tetaneutral.net/debian-security/ wheezy/updates main contrib |
171 | 1 | Fabien Dupont | </pre> |
172 | 1 | Fabien Dupont | |
173 | 1 | Fabien Dupont | h2. Quelques conseils |
174 | 1 | Fabien Dupont | |
175 | 1 | Fabien Dupont | Pour finir, quelques petits conseils concernant la mise en place d'un miroir debian : |
176 | 1 | Fabien Dupont | |
177 | 2 | Baptiste Jonglez | * Il faut 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. |
178 | 2 | Baptiste Jonglez | * Le téléchargement de ces 350Go 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 le clonage d'un miroir accessible en IPv6. Le transit IPv6 est gratuit. |
179 | 2 | Baptiste Jonglez | * 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é. |
180 | 2 | Baptiste Jonglez | * Cloner un miroir trop peu souvent ne sert pas à grand chose non plus. Ça ne rendra l'exécution de ftpsync que plus longue. Autant lisser la bande passante utilisée. |