subdomain.md 2.6 KB

Gestion des sous domaines

Opérations de mise à jour

La route /api/subdomains permet les opérations suivantes :

  • Get : Récupère les sous-domaines existants
  • Post : Créé un nouveau sous domaine, et l'active éventuellement (selon que la prop active soit true ou non)
  • Put : Permet l'activation d'un sous-domaine en passant la propriété active=true

Une organisation est limitée à 3 sous-domaines. Un sous-domaine ne peut être modifié une fois créé, à l'exception de son statut (actif / inactif)

Quand un sous domaine est ajouté, il est ajouté au fichier bind des serveurs prod-back et vpn (cf. plus bas).

Quand un sous domaine est activé, les opérations suivantes sont réalisées :

  • les autres sous-domaines de l'organisation sont désactivés, de manière à ne conserver qu'un seul sous-domaine actif à la fois
  • une commande de mise à jour est envoyée à typo3 via l'API Http
  • le nom de l'admin de l'organisation est mis à jour pour être de la forme 'admin'
  • un email de confirmation est envoyé à la structure
  • CLI

    On peut ajouter et activer un nouveau sous-domaine au moyen de la commande :

    php bin/console ot:subdomain:add <organization-id> <subdomain>
    

    Fichier Bind

    Le fichier bind

    Le fichier "bind" rend possible la résolution des sous-domaines au niveau du serveur DNS (situé sur prod-back). Chaque fois qu'un nouveau sous-domaine est enregistré, ce fichier doit être mis à jour. Cependant, pour des questions de droits, c'est l'utilisateur root qui doit procéder à cette mise à jour.

    La mise à jour des deux fichiers bind est nécessaire, pour permettre la prise en compte des sous-domaines depuis l'intérieur ou l'extérieur du VPN.

    Comment ça marche

    Voilà ce qu'il se passe lorsqu'une structure enregistre un nouveau sous-domaine depuis prod-back ou prod-v2 :

    1. Le logiciel ajoute le sous-domaine en question dans une nouvelle ligne du fichier tampon /env/subdomain.txt
    2. Un cron tourne toutes les 5 minutes et exécute le script /env/rsync-subdomain. Celui-ci :
      • consomme le contenu du fichier /env/subdomain.txt
      • l'ajoute aux fichiers /env/subdomain.txt présents sur prod-front et vpn
      • puis vide le fichier /env/subdomain.txt qu'il vient de consommer.
    3. Un nouveau cron tourne ensuite toutes les 5 minutes sur prod-front et vpn, et exécute le script /env/add-subdomain. Celui ci :
      • consomme le contenu du fichier /env/subdomain.txt
      • met à jour le fichier bind /etc/bind/zones/opentalent.fr.db
      • puis vide le fichier /env/subdomain.txt qu'il vient de consommer.

    diagram