« Apt-mirror » : différence entre les versions

De Wiki doc

Aucun résumé des modifications
Configuration d'Apt-miror : Ajout des droits d'exécution + mise en gras des sous-titres + aération du code.
Ligne 10 : Ligne 10 :
=Configuration=
=Configuration=
==Configuration d'Apt-miror==
==Configuration d'Apt-miror==
Dépôts à synchroniser
'''Dépôts à synchroniser'''
  vim /var/spool/apt-mirror/mirror.list
  vim /var/spool/apt-mirror/mirror.list
<source lang="bash">
<source lang="bash">
############# Paramètres ##################
############# Paramètres ##################
Ligne 59 : Ligne 60 :
</source>
</source>


Script de synchronisation
'''Script de synchronisation'''
  vim /var/spool/apt-mirror/sync_mirror.sh
  vim /var/spool/apt-mirror/sync_mirror.sh
<source lang="bash">
<source lang="bash">
#!/bin/bash
#!/bin/bash
Ligne 78 : Ligne 80 :
date >> $nomLog
date >> $nomLog
</source>
</source>
'''Don des droits d'exécution'''
chmod +x /var/spool/apt-mirror/sync_mirror.sh


'''Création du répertoire d'accueil des journaux'''
'''Création du répertoire d'accueil des journaux'''

Version du 23 mars 2019 à 09:15


Apt mirror est un outil qui permet de cloner des miroirs de dépôt . L’intérêt de cette solution est que cela met à disposition au sein de notre réseau local, l'ensemble des paquets des dépôts clonés. On se retrouve donc avec la bande passante de ce réseau pour nos installations (ce qui est fortement agréable si comme moi vous êtes encore à de l'ADSL...). De plus, en cas de coupure Internet, on ne se rendra compte de rien du tout puisque tout ce fait en local. L’inconvénient principal est la place qu'aucune un dépôt sur les disques durs de nos serveurs et le temps que la réplication occupe (environ 26h dans mon cas pour le dépôt Debian stretch ftp.fr.debian.org en amd64 sans les sources).

Je le couple à une RPZ DNS sous Bind9 afin de ne pas me faire chier à spécifier l'adresse de mon serveur à chaque machines voulant utiliser mon miroir. De ce fait, c'est totalement transparent.

Installation

apt install apt-mirror cron apache2

Configuration

Configuration d'Apt-miror

Dépôts à synchroniser

vim /var/spool/apt-mirror/mirror.list

<source lang="bash">

                          1. Paramètres ##################

set base_path /var/spool/apt-mirror

set mirror_path $base_path/mirror set skel_path $base_path/skel set var_path $base_path/var set cleanscript $var_path/clean.sh set defaultarch amd64

  1. set defaultarch <architecture à définir par défaut>
  2. set postmirror_script $var_path/postmirror.sh
  3. 1 → lancement du script postmirror.sh ; 0 → pas de lancement

set run_postmirror 0 set nthreads 20 set _tilde 0

                          1. fin paramètres ###############
                      1. Dépôts à synchroniser ###########
  1. Dépôts Debian Jessie 8.0

deb http://ftp.fr.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.fr.debian.org/debian/ jessie main contrib

deb http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib

  1. Dépôts Debian Stretch 9.0

deb http://ftp.fr.debian.org/debian/ stretch main contrib non-free deb http://ftp.fr.debian.org/debian/ stretch main main/debian-installer contrib non-free deb-i386 http://ftp.fr.debian.org/debian/ stretch main contrib non-free deb-i386 http://ftp.fr.debian.org/debian/ stretch main main/debian-installer contrib non-free deb-src http://ftp.fr.debian.org/debian/ stretch main contrib

deb http://security.debian.org/ stretch/updates main contrib non-free

  1. deb-i386 http://security.debian.org/ stretch/updates main contrib non-free
  2. deb-src http://security.debian.org/ stretch/updates main contrib

deb http://ftp.fr.debian.org/debian/ stretch-updates main

  1. dépôts à nettoyer → suppression des paquets obsolètes

clean http://ftp.fr.debian.org clean http://security.debian.org

                      1. fin synchronisation ###########

</source>

Script de synchronisation

vim /var/spool/apt-mirror/sync_mirror.sh

<source lang="bash">

  1. !/bin/bash

jourSemaine=$(date +%u) repTravail="/var/spool/apt-mirror" repLog="$repTravail/log/" prefixeNomLog="apt-mirror.log." nomLog=$repLog$prefixeNomLog$jourSemaine nbLogs=$(ls -t $repLog | wc -l)

date > $nomLog echo -e "\n--------------------------------------\n\nExecution de la syncronisation du miroir de dépot...\n\n" >> $nomLog apt-mirror $repTravail/mirror.list >> $nomLog

  1. Nettoyage des dépots après synchronisation

bash $repTravail/var/clean.sh >> $nomLog echo -e "\n\n--------------------------------------\n\nOpération terminé le" >> $nomLog date >> $nomLog </source>

Don des droits d'exécution

chmod +x /var/spool/apt-mirror/sync_mirror.sh

Création du répertoire d'accueil des journaux

mkdir /var/spool/apt-mirror/log

Configuration de Cron

Nous allons exécuter le script de synchronisation tout les jours à 4h00 du matin

conrtab -e
0 4 * * * /var/spool/apt-mirror/sync_mirror.sh

Configuration d'Apache2

Par défaut, Apache2 n'autorise que le répertoire <source lang="bash" inline>/var/www/</source> à contenir des sites WEB. Dans notre cas, Apt-mirror utilise <source lang="bash" inline>/var/spool/apt-mirror/</source> comme dossier de travail. Deux choix s'offrent à nous. Soit nous créons un deuxième répertoire de travail dans <source lang="bash" inline>/var/www/apt-mirror</source> et nous faisons un <source lang="bash" inline>mount --bind</source> du répertoire originel vers le nouveau afin que le tout n'y voit que du feux ou soit nous configurons Apache2 pour qu'il autorise le dossier d'Apt-mirror.

Les deux méthode ont exactement la même finalité. Utilisez l'une ou l'autre selon vos préférences.

Première méthode

La méthode du <source lang="bash" inline>mount --bind</source>.

Création du point de montage

mkdir /var/www/apt-mirror

Montage du répertoire

mount --bind /var/spool/apt-mirror/ /var/www/apt-mirror/

Ajout d'une entrée dans le fstab

echo '/var/spool/apt-mirror/ /var/www/apt-mirror/ none bind 0 0' >> /etc/fstab

Un <source lang="bash" inline>mount -a</source> permet de monter le répertoire si vous voulez tester votre entrée (pensez à démonter le répertoire que vous avez monté avec la commande <source lang="bash" inline>mount --bind</source> d'avant).

Création du vHost Apache

vim /etc/apache2/sites-available/apt-mirror.conf

<source lang="apache"> <VirtualHost *:80>

       ServerAdmin toto@foo.bar
       # --- Alias principal Debian ---
       Alias /debian /var/www/apt-mirror/mirror/ftp.fr.debian.org/debian
       # --- Alias Security pour stretch (Jessie n'en a pas besoin) ---
       Alias /debian-security /var/www/apt-mirror/mirror/security.debian.org/
       # --- Alias Security pour Jessie ---
       Alias / /var/www/apt-mirror/mirror/security.debian.org/
       DocumentRoot /var/www/apt-mirror/mirror
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost> </source>

Désactivation du vHost par défaut

a2dissite 000-default.conf

Activation du vHost d'Apt-mirror

a2ensite apt-mirror.conf

Rechargement de la configuration d'Apache

systemctl reload apache2

Deuxième méthode

La méthode ACL Apache

Modifier le fichier de configuration d'Apache2

vim /etc/apache2/apache2.conf

Ajouter cette section dans le fichier: <source lang="apache"> <Directory /var/spool/apt-mirror>

       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted

</Directory> </source>

Création du vHost Apache

vim /etc/apache2/sites-available/apt-mirror.conf

<source lang="apache"> <VirtualHost *:80>

       ServerAdmin toto@foo.bar
       # --- Alias principal Debian ---
       Alias /debian /var/spool/apt-mirror/mirror/ftp.fr.debian.org/debian
       # --- Alias Security pour stretch (Jessie n'en a pas besoin) ---
       Alias /debian-security /var/spool/apt-mirror/mirror/security.debian.org/
       # --- Alias Security pour Jessie ---
       Alias / /var/spool/apt-mirror/mirror/security.debian.org/
       DocumentRoot /var/spool/apt-mirror/mirror
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost> </source>

Désactivation du vHost par défaut

a2dissite 000-default.conf

Activation du vHost d'Apt-mirror

a2ensite apt-mirror.conf

Rechargement de la configuration d'Apache

systemctl reload apache2

Synchronisation

Si vous n'avez rien oublié, vous pouvez commencer la synchronisation.

ATTENTION

{{{1}}}

Lancer la synchronisation

/var/spool/apt-mirror/sync_mirror.sh

Vous trouverez l'état de la duplication dans le répertoire de log définit plus haut

ASTUCE

Au vu du temps que met la réplication à d’effectuer, je vous conseil de réaliser une seconde synchronisation à la fin de la première afin d'être vraiment à jour.

Exploitation

À ce stade, notre miroir de dépôt est fonctionnel. Comme énoncé au début de ce document, vous avez deux possibilités pour exploiter votre serveur. Soit vous renseigné l'adresse de celui-ci dans toute vos machines et lors de l'installation des nouvelles (ce qui peut vite être chiant sur une bécane nomade quand vous ne serez plus dans votre réseau local), soit comme moi, vous utiliser un DNS menteur au sein de votre réseau via la fonctionnalité RPZ de Bind9. L'idée va être de faire répondre votre DNS aux requêtes à destination de ftp.fr.debian.org sur l'adresse IP de votre miroir et non le vrai (comme le DNS de la Chine quoi).