Répliquer un dépôt

Lorsque WAPT est utilisé sur plusieurs sites distants avec des liens Internet à faible débit, il devient pertinent de mettre en place un système de réplication pour alléger la charge réseau liée aux déploiement des mises à jour WAPT sur les machines de votre parc.

Ainsi, WAPT reste une solution à faible coût d’exploitation car vous n’aurez pas à passer à la fibre pour bénéficier des avantages de WAPT.

Réplication de dépôts WAPT

Le principe est le suivant :

  • un petit boîtier avec le rôle de dépôt WAPT est déployé sur le réseau local de chacun des sites distants ;
  • le dépôt distant réplique les paquets depuis le dépôt principal WAPT et les éventuels dépôts secondaires ;
  • les clients WAPT consultent en priorité le dépôt le plus proche ;

Indice

Pour mettre en place facilement une réplication de dépôt sur vos sites distants, nous proposons des appliances pré-configurés et de différentes taille de stockage (16/32/64Go).

Les boîtiers sont disponibles dans notre boutique en ligne : https://www.tranquil.it/shop.

Présentation de Syncthing

Syncthing est un logiciel open-source multiplateforme de synchronisation de fichiers pair à pair.

Il permet de synchroniser des répertoires sur plusieurs machines en garantissant la sécurité et l’intégrité des fichiers.

La documentation officielle de Syncthing est disponible sur : https://docs.syncthing.net/

Mettre en place de la réplication

Indice

La documentation suivante concerne des dépôts et serveurs WAPT basés sur Linux Debian ou CentOS.

Installer le dépôt WAPT distant

Linux Debian

echo  "deb  http://wapt.tranquil.it/debian/  ./  "  > /etc/apt/sources.list.d/wapt.list
apt-get update
apt-get upgrade
apt-get install tis-waptrepo

Linux CentOS

Le dépôt WAPT distant est installé, on doit mettre en place la réplication Syncthing.

Configurer le service web Apache

a2enmod ssl
a2ensite default-ssl.conf
  • modifier ensuite les fichiers de configuration Apache afin d’indiquer les racines correcte aux VirtualHosts :
/etc/apache2/sites-available/default-ssl.conf
/etc/apache2/sites-available/000-default.conf
  • modifier la valeur de DocumentRoot dans chaque fichier de configuration :
- DocumentRoot /var/www/html
+ DocumentRoot /var/www
  • redémarrer Apache afin de prendre en compte la configuration :
/etc/init.d/apache2 restart

Note

Il est préférable d’indiquer dans la configuration Apache des certificats SSL valides pour les dépôts distants.

  • vider le contenu des dossiers /var/www/wapt et /var/www/wapt-host, Syncthing ira peupler ces dossiers avec les données du dépôt principal.
rm -rf /var/www/wapt/*
rm -rf /var/www/wapt-host/*

Installer Syncthing sur les dépôts

Note

Cette procédure est à appliquer sur le dépôt principal et les dépôts secondaires.

## Debian
apt-get update
apt-get install sudo curl apt-transport-https
curl -s https://syncthing.net/release-key.txt | apt-key add -
echo "deb https://apt.syncthing.net/ syncthing stable" | tee /etc/apt/sources.list.d/syncthing.list
apt-get update
apt-get install syncthing

## CentOS 7
wget https://github.com/mlazarov/syncthing-centos/releases/download/v0.14.7/syncthing-0.14.7-0.el7.centos.x86_64.rpm --no-check-certificate
yum install syncthing-0.14.7-0.el7.centos.x86_64.rpm

Configurer Syncthing

Opérations à effectuer :

  • ajout du service dans systemd ;
  • modifier le port d’écoute du service sur 0.0.0.0 ;
  • création d’un compte utilisateur administrateur et définition d’un mot de passe fort ;
  • activation du protocole https pour l’accès Web ;
  • créer le fichier de définition du service waptsync :
/etc/systemd/system/waptsync.service

Contenu :

[Unit]
Description=WAPT respository sync with syncthing
Documentation=http://docs.syncthing.net/
After=network.target
;Wants=syncthing-inotify@.service

[Service]
User=wapt
ExecStart=/usr/bin/syncthing -logflags=0 -home=/opt/wapt/.config/syncthing/ -no-restart
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target
  • créer l’arborescence nécessaire au lancement du service :
mkdir /opt/wapt/.config/
mkdir /opt/wapt/.config/syncthing/
  • changer le propriétaire de cette arborescence de fichiers :
chown -R wapt:www-data /opt/wapt/.config/
  • activer le service puis le lancer, les fichiers de configuration vont apparaître dans le dossier /opt/wapt/.config/syncthing/ :
systemctl enable waptsync
systemctl start waptsync
systemctl stop waptsync
  • modifier le port d’écoute dans le fichier /opt/wapt/.config/syncthing/config.xml :
<gui enabled="true" tls="true" debugging="false">
    <address>0.0.0.0:8384</address>
    <apikey>4jvEiL24UbFddsdsAQxqsfixNaLt</apikey>
    <theme>default</theme>
</gui>
  • démarrer le service :
systemctl start waptsync
Configurer le service Web de Syncthing

L’interface Web Syncthing est maintenant accessible à l’adresse http://<ip serveur>:8384.

Opérations à effectuer :

  • modifier le nom de l’appareil ;
  • ajouter un « Utilisateur autorisé GUI » ;
  • ajouter un mot de passe d’authentification GUI ;
  • cocher « utiliser l’HTTPS pour le GUI » ;
  • cliquer sur Enregister ;
  • en ssh sur le serveur, redémarrer le service Syncthing :
systemctl restart waptsync

L’interface Web Syncthing est maintenant uniquement accessible en https à l’adresse : https://<ip serveur>:8384.

  • dans la liste des partages, supprimer le répertoire par défaut : Modifier ‣ Enlever.
  • configurer la réplication :

Note

Ces actions sont à effectuer sur le serveur WAPT.

Dans la liste des dossiers partagés (Partage) :

  • Ajouter un partage ;
  • renseigner le chemin du dossier à partager, ex : /var/www/wapt/ ;
  • dans le menu déroulant Type de partage ‣ Envoyer seulement ;
  • dans le menu déroulant Ordre de récupération des fichiers ‣ Les plus anciens en premier ;
  • recommencer l’opération pour wapt-host: /var/www/wapt-host/ ;
  • ajouter la machine distante :

    Une fois Syncthing installé sur les deux appareils, récupérer l’ID de l’appareil distant (Actions ‣ afficher mon ID).

    Cet identifiant unique est de la forme

    DSINDDC-23ORDNM-PAK6FCL-ZJAKNCH-61GWXAT-77PC3JM-RZ4PPYP-K1QERAV
    

    Sur le serveur maître, dans la liste des appareils (Autres appareils) :

    • Ajouter un appareil ;
    • renseigner l’ID du dépôt distant ;
    • cocher les partages wapt et wapt-host ;

    Sur le dépôt distant effectuer les actions suivantes :

    • l’appareil distant reçoit une notification d’approbation d’ajout par l’appareil maître ;
    • le client reçoit ensuite une popup pour accepter les partage wapt et wapt-host ;

La réplication est maintenant mise en place.

  • sécuriser la réplication :

Par défaut, les paramètres suivant sont activés pour Syncthing :

Options Définition
Activer la translation d’adresses (NAT) Utiliser un mappage de port UPnP pour les connexions de synchronisation entrantes.
Découverte locale Syncthing fonctionnera alors avec un system de broadcast pour s’annoncer auprès des autres Syncthing.
Découverte globale Syncthing s’inscrit sur un serveur mondial, et peut utiliser celui-ci pour rechercher d’autres périphériques.
Relais possible L’utilisation de relais permet d’utiliser des serveurs externes pour relayer la communication. Le relais est activé par défaut mais ne sera utilisé que si deux périphériques ne peuvent pas communiquer directement entre eux.

Ce mode de fonctionnement permet une mise en place facilitée mais ce n’est pas le mode de fonctionnement le plus conseillé pour la sécurité.

  • décocher toutes les cases dans la configuration réseau ;
  • définir le port d’écoute du protocole (par défaut 22000) ;
  • remplacer « default » par « tcp://0.0.0.0:22000 » ;

Se rendre ensuite sur l’interface de dépôts distants, cliquer sur Modifier, puis définir l’adresse de la machine distante :

  • remplacer dynamic par tcp://ip-du-syncthing-distant:22000

Cette configuration permet de limiter les connexions externes du service Synthing.

Configurer les agents WAPT

Les clients des sites distants doivent maintenant être configurés pour pointer vers leurs dépôts les plus proches.

Deux solutions :

  • utiliser la détection automatique via les champs SRV DNS ;
  • modifier le champs repo_url des agents WAPT manuellement ou à l’aide d’un paquet WAPT de configuration ;

Exemple de configuration de l’agent WAPT - dépôt local renseigné :

[global]
waptupdate_task_period=120
waptserver=https://srvwapt.mydomain.lan
repo_url=https://localrepo.domain.lan/wapt/
use_hostpackages=1

Exemple de paquet pour modifier le champ repo_url de wapt-get.ini.

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    print('Modifier la configuration agent pour le site de Colmar')
    inifile_writestring(WAPT.config_filename,'global','repo_url','https://wapt.colmar.domain.lan/wapt/')