Docker Swarm

Installation du serveur Reemo Infra sous Docker Swarm à l’aide d’un role Ansible

Prérequis

Système d’exploitation

Ubuntu/Redhat/RockyLinux

Hardware

Minimum requis

Environnement

INFRA

PORTAL

API

CPU

4

2

4

RAM

6

4

6

DD

30G

30G

30G

L’installation s’effectue à l’aide du role Ansible reemo-infra qui a besoin de dépendances pour fonctionner:

yum install ansible-core
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.crypto

Pour l’installation vers un environnement RockyLinux 9, il faut avoir une version du module community.docker >= 3.10.2

ansible-galaxy collection install community.docker --upgrade

Fichier Inventaire

L’installation se base sur des groupes dans l’inventaire Ansible

  • infra_manager: groupe permettant d’installer un environnement complet

  • portal_manager: groupe permettant d’installer la partie frontal : les services portal/signal

  • api_manager: groupe permettant d’installer la partie api: les services api/apicronlog/apicronldap/apicron/proapi/prorelayapi/mysql

Créer un fichier inventaire pour le role Ansible contenant la licence du serveur et déclarer les différents groupes en fonction de l’architecture que vous souhaitez

Voici quelques exemples:

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="

    infra_manager:
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"

Warning

Il est très important de respecter la localisation des variables dans le fichier inventaire et une option qui est spécifiée pour un groupe ne doit pas être renseignée dans all et inversement.

Installation Docker

L’installation et l’initialisation de Docker Swarm peuvent être manuelles ou automatisées par le role Ansible reemo-infra

Manuel

apt install docker.io python3-docker -y

Une documentation sur le site de Docker permet d’avoir l’ensemble des options disponibles: Docker.

Warning

Le cluster doit être constitué uniquement de Node Manager

Auto

Le role Ansible reemo-infra embarque la possibilité d’installer et de configurer automatiquement un Docker Swarm, plusieurs options sont disponibles:

Par défaut le role Ansible effectue aucune opération sur l’installation ou l’initialisation de Docker Swarm. Pour l’activer vous pouvez ajouter cette option dans la ligne de commande:

ansible-playbook -i inventory.yml playbooks/reemo-infra-images.yml --extra-vars "INSTALL_DOCKER=true"

Warning

Il faut que les différents noeuds du cluster puissent joindre un repositorie pour installer Docker

Warning

Une fois que Docker Swarm a été initialisé, il ne faut plus modifier les options de sa configuration.

Load Image Docker

Avant de lancer l’installation vous devez avoir les images accessibles par l’ensemble des machines de votre architecture, vous avez 4 modes possibles

Toutes les machines doivent pouvoir joindre l’url registry.reemo.io sur le port 443. Il faut récupérer au niveau du support reemo vos identifiants pour vous authentifiez

Il faut ensuite renseigner ces informations dans votre fichier inventaire

REGISTRY_URL: l'url du registre
REGISTRY_ENV: le préfix des images docker pour constituer des noms d'images **REGISTRY_URL/REGISTRY_ENV**api
REGISTRY_USERNAME: "l'utilisateur pour le registre"
REGISTRY_PASSWORD: "le mot de passe pour le registre"

Exemple:

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        REGISTRY_URL: "registry.reemo.io"
        REGISTRY_ENV: "reemoinfra"
        REGISTRY_USERNAME: "user"
        REGISTRY_PASSWORD: "password"

    infra_manager:
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"
            infra_manager2:
                ansible_host: "10.0.0.2"
            infra_manager3:
                ansible_host: "10.0.0.3"

Installation du serveur Infra

Créer un playbook Ansible

reemo-infra.yml

- name: Installation Reemo Infra Server
  hosts: infra_manager
  gather_facts: yes

  roles:
      - reemo-infra

Lancer l’installation du serveur Infra avec la commande

ansible-playbook -i inventory.yml playbooks/reemo-infra.yml --extra-vars "INIT_DB=true"

Warning

Cette commande est à executer qu’une seule fois, elle permet l’initialisation de la base de données.

Mise à jour

Pour prendre en compte une mise à jour complète, il faut executer la commande suivante:

ansible-playbook -i inventory.yml playbooks/reemo-infra.yml

Ou utiliser les tags suivants pour cibler la mise à jour

  • DB : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags db

  • API : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags api

  • APICRON : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags apicron

  • APICRONLOG : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags apicronlog

  • APICRONLDAP : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags apicronldap

  • APICRONCLOUD: ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags apicroncloud

  • PORTAL : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags portal

  • SIGNAL : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags signal

  • PROAPI : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags proapi

  • PRORELAYAPI : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags prorelayapi

  • PROCLOUDAPI: ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags procloudapi

  • MYSQL : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags mysql

  • TRAEFIK : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags traefik

  • EXIM4 : ansible-playbook -i inventory.yml playbooks/reemo-infra.yml –tags exim4

Warning

Si une mise à jour est passée en mode TAG, il est impératif de commencer par DB, puis API, tous les autres services et terminé par PORTAL

Warning

Uniquement la mise à jour du package MySQL implique une coupure du service

Note

Le micro-service reemo_db est toujours arreté, il n’est démarré qu’au moment d’une mise à jour de la base de données et s’éteindra automatiquement

Versionning

Par défaut le role Ansible reemo-infra embarque des numéros de versions dans le fichier default/main.yml qui sont compatibles. Vous pouvez modifier ces numéros de version en utilisant les variables suivantes:

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        REGISTRY_URL: "registry.reemo.io"
        REGISTRY_ENV: "reemoinfra"
        REGISTRY_USERNAME: "user"
        REGISTRY_PASSWORD: "password"
        DOCKER_VERSION_API: "2.13.10"
        DOCKER_VERSION_APICRON: "2.3.0"
        DOCKER_VERSION_APICRONLDAP: "1.0.0"
        DOCKER_VERSION_APICRONLOG: "1.0.0"
        DOCKER_VERSION_PORTAL: "2.12.6"
        DOCKER_VERSION_SIGNAL: "2.5.3"
        DOCKER_VERSION_PROAPI: "2.6.2"
        DOCKER_VERSION_EXIM4: "4.97"
        DOCKER_VERSION_HAPROXY: "2.8.13-8eb4f8c"
        DOCKER_VERSION_DB: "2.13.10"
        DOCKER_VERSION_PRORELAYAPI: "1.2.2"
        DOCKER_VERSION_WS_RELAY_SERVER: "1.0.0"
        DOCKER_VERSION_MYSQL: "8.0.40-0ubuntu0.24.04.1"
        DOCKER_VERSION_TRAEFIK: "v2.11"

    infra_manager:
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"
            infra_manager2:
                ansible_host: "10.0.0.2"
            infra_manager3:
                ansible_host: "10.0.0.3"

Note

Pour trouver les différentes numéros de version, il faut se rendre à la page : Environnement Infra.

Base de données

L’environnement Infra s’appuie sur l’emploi d’une base de données qui peut être interne ou externe à Docker Swarm

Externe

Rajouter dans l’inventaire Ansible, les informations suivantes:

DB_USER: "< Utilisateur pour s'authentifier sur la base de données >"
DB_USER_PASSWORD: "< Mot de passe pour s'authentifier sur la base de données >"
DB_NAME: "< Nom de la base de données >"
DB_HOST: "< IP >"
DB_DIALECT: "mysql"

Interne

Par défaut un serveur Mysql est présent dans le role reemo-infra, il sera déployé et configuré automatiquement, un montage

Par défaut une base de données MySQL est déployée dans l’environnement Docker Swarm.

  • 1 serveur: sur une architecture à un seul serveur, le répertoire local /opt/reemo sera monté dans le conteneur MySQL pour y installer la base de données

  • 3 serveurs: dans une architecture si vous souhaitez conserver le module MySQL, il faut prévoir une réplication entre les répertoires /opt/reemo pour que le conteneur MySQL puisse se relancer sur un autre noeud et conserver l’ensemble de ces données.

Certificats SSL

Dans la mesure du possible il est conseillé d’utiliser 2 pki différentes, l’une pour les communications internes à la plateforme et une pki pour les communications externes ( utilisateur -> plateforme )

interne

L’ensemble des micro-services discute entre eux en mTLS imposant une gestion des certificats. Vous avez 3 choix possibles

Dans les roles Ansible, est disponible une pki complète permettant de déployer automatiquement un système prêt à l’emploi, avec des communications chiffrées et authentifiées

Externe

Toute entrée utilisateur s’effectue par un service Traefik où il est possible de lui spécifier une certificat pour l’accès utilisateur

Par défaut un certificat autosigné est crée automatiquement à la création du conteneur Traefik

Gestion des Portails

URL

Par défaut les serveurs Infra et Portal répondent sur toutes les requêtes avec un certificat autosigné, Si vous avec besoin de paramètrer une URL spécifique, il faut utiliser la variable suivante:

 all:
     vars:
         API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
     infra_manager:
         vars:
             PORTAL_URL: "url.domain.tld"
         hosts:
             infra_manager1:
                 ansible_host: "10.0.0.1"
             infra_manager2:
                 ansible_host: "10.0.0.2"
             infra_manager3:
                 ansible_host: "10.0.0.3"

Note

Si vous utilisez plusieurs nodes dans un mode docker swarm, pensez à renseigner dans votre DNS l’url avec les différentes IP pour obtenir un système de répartition de charge à base de round-robin DNS

Filtrage IP

Il est possible de mettre un système de filtrage IP sur l’URL du portal. Dans le fichier inventaire ajouté la variable PORTAL_URL_RESTRICT_IP:

 all:
     vars:
         API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
     infra_manager:
         vars:
             PORTAL_URL: "url.domain.tld"
             PORTAL_URL_RESTRICT_IP: "10.1.1.1,10.2.2.0/24"
             TRAEFIK_SSL_CERTS:
                 - cert_file: "/localpath/to/cert.crt"
                 key_file: "/localpath/to/key.key"
         hosts:
             infra_manager1:
                 ansible_host: "10.0.0.1"
             infra_manager2:
                 ansible_host: "10.0.0.2"
             infra_manager3:
                 ansible_host: "10.0.0.3"

Ports

Par défaut le portail répond sur le port 443 avec une redirection automatique du port 80 vers le port 443 en SSL

Dédié

Pouvoir séparer physiquement les portals et obtenir des accès réseaux séparés

../../_images/archi_infra_multidmz.png

Créer un fichier inventaire en remplacant le groupe infra_manager par 2 groupes api_manager et portal_manager

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        HMACSECRET: "reemohmac"
portal_manager:
        children:
            portaluser_manager:
                vars:
                    PORTAL_URL: "url.domain.tld"
                    TRAEFIK_SSL_CERTS:
                        - cert_file: "/localpath/to/cert.crt"
                          key_file: "/localpath/to/key.key"
                    API_IP:
                        - ip: "10.3.1.1"
                        - ip: "10.3.1.2"
                        - ip: "10.3.1.3"
                hosts:
                    portaluser1:
                        ansible_host: "10.0.0.1"
                    portaluser2:
                        ansible_host: "10.0.0.2"
                    portaluser3:
                        ansible_host: "10.0.0.3"
            portaladmin_manager:
                vars:
                    PORTAL_URL: "admin.domain.tld"
                    TRAEFIK_SSL_CERTS:
                        - cert_file: "/localpath/to/cert.crt"
                          key_file: "/localpath/to/key.key"
                    API_IP:
                        - ip: "10.3.1.1"
                        - ip: "10.3.1.2"
                        - ip: "10.3.1.3"
                hosts:
                    portaladmin1:
                        ansible_host: "10.0.0.4"
                    portaladmin2:
                        ansible_host: "10.0.0.5"
                    portaladmin3:
                        ansible_host: "10.0.0.6"
api_manager:
        hosts:
            api1:
                ansible_host: "10.3.1.1"
            api2:
                ansible_host: "10.3.1.2"
            api3:
                ansible_host: "10.3.1.3"

Droits d’accès

Plusieurs niveaux d’accès sont disponibles dans une plateforme Reemo:

  • Administrateur d’instance

  • Administrateur d’organisation

  • Membre d’une organisation

Par défaut, tous les utilisateurs peuvent s’authentifier sur un portail, mais avec l’option PORTAL_TYPE il est possible d’en restreindre l’accès à un type d’utilisateur.

PORTAL_TYPE

par défaut

user

admin

orgadmin

instadmin

orguser

Administrateur d’instance

Administrateur d’organisation

Membre d’une organisation

Voir un exemple

 all:
     vars:
         API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
         HMACSECRET: "reemohmac"
 portal_manager:
         children:
             portaluser_manager:
                 vars:
                     PORTAL_URL: "url.domain.tld"
                     PORTAL_TYPE: "user"
                     TRAEFIK_SSL_CERTS:
                         - cert_file: "/localpath/to/cert.crt"
                         key_file: "/localpath/to/key.key"
                 hosts:
                     portaluser1:
                         ansible_host: "10.0.0.1"
                     portaluser2:
                         ansible_host: "10.0.0.2"
                     portaluser3:
                         ansible_host: "10.0.0.3"
             portaladmin_manager:
                 vars:
                     PORTAL_URL: "admin.domain.tld"
                     PORTAL_TYPE: "admin"
                     TRAEFIK_SSL_CERTS:
                         - cert_file: "/localpath/to/cert.crt"
                         key_file: "/localpath/to/key.key"
                 hosts:
                     portaladmin1:
                         ansible_host: "10.0.0.4"
                     portaladmin2:
                         ansible_host: "10.0.0.5"
                     portaladmin3:
                         ansible_host: "10.0.0.6"
 api_manager:
         hosts:
             api1:
                 ansible_host: "10.3.1.1"
             api2:
                 ansible_host: "10.3.1.2"
             api3:
                 ansible_host: "10.3.1.3"

Gestion des Signaux

Les services Signaux sont utilisés pour la signalisation des agent Reemo auprès de l’environnement Infra, mais aussi sur l’échange d’informations pour l’établissement d’une connexion. Ils ont la particularité d’être unique et dans un environnement Docker Swarm vous verrez apparaitre en fonction de votre architecture plusieurs services Signaux avec toujours un seul replica

Ex:

         ID             NAME                            MODE         REPLICAS               IMAGE                                                                    PORTS
     dj2x9cp9izks   reemo_api           replicated   4/4 (max 4 per node)   registry.reemo.io/reemoinfraapi:2.14.0-4bfb58467888
     z2mbh8gyhgni   reemo_apicron       replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfraapicron:2.3.0-7e1864a11d70
     s6cd4l0oh3st   reemo_apicronldap   replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfraapicronldap:1.0.0-9a666cca22f4
     17djli4rqvda   reemo_apicronlog    replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfraapicronlog:1.0.0-f93cd1d99cc1
     7g3gzq348250   reemo_db            replicated   0/1 (max 1 per node)   registry.reemo.io/reemoinfradb:2.14.0-51ef9a120c42
     245ve7aca6h1   reemo_mysql         replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinframysql:8.0.40-0ubuntu0.24.04.1-5960a370b81f
     56tfux9v44m8   reemo_portal        replicated   2/2 (max 2 per node)   registry.reemo.io/reemoinfraportal:2.13.11-432f77f8029f
     k6v9qu9mu7n6   reemo_proapi        replicated   2/2 (max 2 per node)   registry.reemo.io/reemoinfraproapi:2.7.0-345ec94903f1
     pfsgkmw181cr   reemo_prorelayapi   replicated   2/2 (max 2 per node)   registry.reemo.io/reemoinfraprorelayapi:1.3.0-25263e8aa454
     0n9x4fwqax0s   reemo_provision     replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfrahaproxy:2.8.13-8eb4f8c-83696c9ad549
     vry6kv4o26y4   reemo_relayws       replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfrahaproxy:2.8.13-8eb4f8c-83696c9ad549
     g8hmzpicyq2o   reemo_signal1       replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfrasignal:2.6.0-8168bf6e99af
     s105if31h6l0   reemo_signal2       replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfrasignal:2.6.0-8168bf6e99af
     j7fm88r9t962   traefik             replicated   1/1 (max 1 per node)   registry.reemo.io/reemoinfratraefik:v2.11

Ils seront toujours nommés reemo_signal suivi d’un chiffre.

Ports

Par défaut les services Signaux écoutent sur le port 8443 par le service Traefik qui portera le certificat SSL. Ce port sera accessible par les Reemo Agent. Les utilisateurs le contacteront par le service Portal sur le port 443

SSL

Les certificats vont être gérés de la même façon que pour les portails, un premier certificat pour le Traefik, un second pour la communication entre Traefik/Portal et les services Signaux

Initialisation

A l’installation d’une instance Reemo et donc à l’initialisation de la base de données, il est possible d’initialiser des variables pour préconfigurer l’interface et l’environnement Reemo. Ces variables sont à ajouter dans all ou dans le groupe qui initialisera la base de données

INIT_MINIMUM_PASSWORD_LENGTH: "8"
INIT_PASSWORD_REQUIRE_LETTERS: "false"
INIT_PASSWORD_REQUIRE_DIGITS: "false"
INIT_PASSWORD_REQUIRE_SPECIALCHAR: "false"

SYSLOG : Facility + Préfix

Par défaut les logs de chaque service sont envoyés dans le syslog local à chaque noeud avec le syslog facility à daemon. Vous pouvez modifier cette valeur en utilisant la liste d’option suivante:

SYSLOG_FACILITY: "daemon"
SYSLOG_FACILITY_API: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_APICRON: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_DB: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_EXIM4: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_MYSQL: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_PORTAL: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_PORTALADMIN: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_SIGNAL: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_PROAPI: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_STUN: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_PRORELAYAPI: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_PROCLOUDAPI: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_APICRONLOG: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_APICRONLDAP: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_APICRONCLOUD: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_HAPROXY: "{{SYSLOG_FACILITY}}"
SYSLOG_FACILITY_TRAEFIK: "{{ SYSLOG_FACILITY }}"

Commandes utiles

Pour recherche des erreurs dans les logs avec l’aide d’Ansible

ansible infra_manager -i inventory.yml -m shell -a "grep _traefik /var/log/syslog | grep '\" 5[0-9][0-9] [0-9]'"
ansible infra_manager -i inventory.yml -m shell -a "grep ' 500 [0-9]' /var/log/syslog"

HEALTHCHECK

Une url de healthcheck peut être activée permettant d’avoir un état des connexions de l’ensemble des services. Elle est accessible par le biais de l’url /api/healthcheck sur le portal au format json

Ex:

{
    "status": "OK",
    "version": "2.14.4",
    "services": {
        "api": {
        "status": "OK",
        "version": "2.15.2",
        "services": {
            "db": {
            "status": "OK"
            },
            "provision-api": {
            "status": "OK",
            "version": "2.7.0"
            },
            "provision-relay-api": {
            "status": "OK",
            "version": "1.3.0"
            },
            "container-providers": [
            {
                "status": "OK",
                "name": "Reemo SWARM",
                "type": "SWARM"
            }
            ],
            "ws-relays": [
            {
                "status": "OK",
                "name": "Global - WS_SWARM",
                "type": "WS_SWARM"
            }
            ]
        }
        },
        "signal": {
        "status": "OK",
        "version": "2.6.1"
        }
    }
}

Options

Chaque option peut être mise dans l’inventaire Ansible au niveau all ou dans les variables du groupe de portal devant recevoir l’activation

HEALTHCHECK_ENABLE: "true"

Supervision

Mettre en place un service de supervision du healthcheck dans Nagios

Sur le serveur Nagios avoir les commandes curl et jq disponibles

PROMETHEUS

Il est possible d’activer Prometheus sur les points d’entrées Traefik, plusieurs options sont disponibles:

Rajouter l’option TRAEFIK_PROMETHEUS_ENABLE: true dans le fichier inventaire

CRON

Plusieurs taches CRON sont déclarées dans une plateforme Reemo. Il est impératif qu’elles soient unique. Dans le cas de l’utilisation de plusieurs serveurs/clusters infra ou api, il faut choisir le serveur/cluster devant prendre en charge ces services et les désactiver dans les autres par l’option CRON_ENABLE: “false”

Gestion générale des tâches

Option disponible:

API_cronGhostContainersMinutes: Temps d’expiration des conteneurs qui continuent à être UP dans l’environnement Provision mais qui n’ont plus d’existance connue par l’interface

MAIL

Pour activer un système de messagerie

API_MAIL_ACTIVE: "true"
API_MAIL_BASEURL: "https://< URL du portal de connexion pour les utilisateurs >"
EXIM_SMARTHOST: "< URL du serveur SMTP >::587"
EXIM_PASSWORD: "< URL du serveur SMTP >:< Utilisateur SMTP >:< Mot de passe de connexion SMTP>"

MAINTENANCE

Mettre en place une page de maintenance en lieu et place du portail utilisateur

ansible-playbook -i inventory.yml playbooks/reemo-infra.yml --tags maintenance --extra-vars "MAINTENANCE_ENABLE=true"

Alternative LDAP

Dans le cas d’une architecture à plusieurs API il est possible d’utiliser 2 fqdn pour un meme serveur LDAP

Rajouter l’option suivante dans la configuration du serveur API qui doit utiliser l’url Alternative pour contacter le serveur LDAP

API_useAlternateLDAPHost: "true"

Websocket

Par défaut l’environnement Infra permet d’utiliser les connexions Reemo en mode WebRTC. Si vous souhaitez utiliser le mode WebSocket et donc avoir des connexions uniquement en HTTPS, il faudra rajouter un environnement RelayWS et renseigner les adresses IP dans le fichier inventaire ainsi que l’url de connexion des utilisateurs sur cet environnement relayws

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
    infra_manager:
        vars:
            PORTAL_URL: "url.domain.tld"
            PORTALADMIN_URL: "urladmin.domain.ltd"
            PORTALADMIN_URL_RESTRICT_IP: "10.3.1.2,10.3.2.0/24"
            TRAEFIK_SSL_CERTS:
                - cert_file: "/localpath/to/cert.crt"
                    key_file: "/localpath/to/key.key"
            RELAYS_IP:
                - ip: "10.10.0.1"
                - ip: "10.10.0.2"
                - ip: "10.10.0.3"
            RELAYS_URL: "relayws.domain.tld"
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"
            infra_manager2:
                ansible_host: "10.0.0.2"
            infra_manager3:
                ansible_host: "10.0.0.3"

Reemo Containers

Si vous souhaitez utiliser un environnement Provision pour profiter de l’offre Reemo Containers, une interconnexion avec un environnement Provision est nécessaire. Un environnement Infra peut gérer autant que vous souhaitez d’environnement Provision différent

La connexion entre Infra et Provision s’effectue en HTTPS de l’Infra vers le Provision par le biais d’une URL qui doit être resolvable par l’environnement Infra, 2 choix possibles:

Renseigner dans votre DNS l’url du service Nginx dans l’environnement Provision. Si vous etes sur un environnement Provision vous pouvez profiter du système de Round Robin DNS pour renseigner plusieurs IP et faire du load balancing. Vous pouvez aussi intercaler un haproxy pour effectuer de la tolérance de panne

Vous pouvez renseigner un environnement Provision à l’initialisation de la base de données