Prérequis d’installation

L’installation de l’environnement PROVISION sous Docker Swarm s’effectue à l’aide du rôle Ansible reemo-provision.

L’environnement PROVISION se compose de deux services principaux :

  • Nginx : communication avec l’infrastructure Reemo

  • API Docker : création et suppression des conteneurs de travail

Avant de démarrer, assurez-vous que votre environnement répond aux conditions suivantes.

Système d’exploitation supportés

  • Ubuntu (versions LTS récentes)

  • Red Hat Enterprise Linux

  • Rocky Linux

Spécifications matérielles minimales

Les spécifications matérielles dépendent des types de conteneurs déployés.
Pour connaître les ressources nécessaires par conteneurs concurrents, merci de vous référer à la documentation sur les Images Officielles Reemo.

Dépendances Ansible

Le rôle reemo-provision s’appuie sur Ansible et plusieurs collections. Installez-les selon votre distribution :

Red Hat / RockyLinux

yum install ansible-core
yum install -y python3-pip
pip3 install docker
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.crypto

Warning

Sous RockyLinux 9, il est nécessaire d’utiliser community.docker >= 3.10.2. Si besoin, forcez la mise à jour :

ansible-galaxy collection install community.docker --upgrade

Ubuntu

apt install ansible
apt install python3-docker
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.crypto

Avant de procéder à l’installation de l’environnement PROVISION Docker Swarm doit être installé.

Docker Swarm

PROVISION s’appuie sur un cluster Docker Swarm pour déployer et gérer dynamiquement les conteneurs de travail des utilsiateurs. L’installation et l’initialisation de Docker Swarm constituent donc un prérequis avant toute mise en place de l’environnement PROVISION.

Pour l’installation de Docker Swarm, deux approches sont possibles :

  • installation manuelle, réalisée directement sur les serveurs,

  • installation automatisée, via le rôle Ansible reemo-provision qui peut à la fois installer Docker et initialiser le cluster avec différents paramètres.

Fichier Inventaire minimal

Pour une installation de Docker Swarm, un fichier inventaire minimal est nécessaire regroupant les noeuds sur lesquels Docker Swarm sera installé et configuré.

L’inventaire se base sur le groupe provision_manager. Dans le reste de cette documentation, le fichier inventaire sera nommé inventory.yml.

Exemple avec un seul serveur

Ce serveur agit comme un Manager et un Worker

provision:
    children:
        provision_manager:
            hosts:
                provision_manager1:
                    ansible_host: "10.10.0.1"

Exemple avec deux serveurs

Un serveur agit comme Manager et le second comme Worker

provision:
    children:
        provision_manager:
            hosts:
                provision_manager1:
                    ansible_host: "10.10.0.1"
        provision_worker:
            hosts:
                provision_worker1:
                    ansible_host: "10.10.0.2"

Installation manuelle de Docker Swarm

Voici les commandes pour une installation manuelle de Docker qui inclut Docker Swarm

  • Ubuntu :

apt install docker.io python3-docker -y
  • RedHat :

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl start docker
systemctl enable docker
yum install -y python3-pip
pip3 install docker

Après l’installation de docker, il faut initialiser le cluster. Deux options sont possibles:

  • Manuellement en utilisant la Documentation Docker

  • En utilisant le rôle Ansible reemo-provision et l’option SWARM_INIT. Les options d’initialisation sont détaillées plus bas dans cette documentation.

Installation automatisée de Docker Swarm

Le rôle Ansible reemo-provision permet d’installer et configurer automatiquement Docker Swarm. L’installation complète se fait automatiquement en utilisant l’option PROVISION_INSTALL_DOCKER

ansible-playbook -i inventory.yml playbooks/reemo-provision.yml --extra-vars "PROVISION_INSTALL_DOCKER=true"

Important

L’installation automatisée initialise le cluster automatiquement.
Les options d’initialisation sont détaillées plus bas dans cette documentation.

Initialisation du cluster Docker Swarm

Le rôle Ansible reemo-provision permet d’initialiser automatiquement Docker Swarm en utilisant l’option SWARM_INIT.

ansible-playbook -i inventory.yml playbooks/reemo-provision.yml --extra-vars "SWARM_INIT=true"

Plusieurs options sont disponibles pour l’initialisation du cluster (ex.):

provision:
    vars:
        PROVISION_SWARM_INIT_DEFAULT_ADDR_POOL: "192.168.120.0/24"
        PROVISION_SWARM_ADVERTISE_ADDR: "eth0"
        PROVISION_SWARM_DATA_PATH_PORT: 4789
    children:
        provision_manager:
            hosts:
                provision_manager1:
                    ansible_host: "10.10.0.1"
        provision_worker:
            hosts:
                provision_worker1:
                    ansible_host: "10.10.0.2"

Pool d’adresses IP par défaut

Spécifie la plage utilisée par Docker Swarm pour l’environnement PROVISION. /24 minimum.

PROVISION_SWARM_INIT_DEFAULT_ADDR_POOL: "192.168.120.0/24"

Advertised address

Il est possible dans le cadre d’un cluster à plusieurs noeuds de spécifier la carte réseau ou l’adresse IP qui sera transmise aux noeuds pour s’enregistrer et discuter entre eux:

PROVISION_SWARM_ADVERTISE_ADDR: "eth0"

Data Path Port

Par défaut Docker Swarm utilise le port UDP 4789 pour la communication des réseaux Overlay entre les différents noeuds d’un cluster.
Vous pouvez modifier le port utilisé par Docker Swarm en utilisant les variables ci-dessous:
PROVISION_SWARM_DATA_PATH_PORT: 4789

Warning

Dans des environnements VMware NSX, le port 4789 peut entrer en conflit. Définir un autre port à l’initialisation du Swarm.


Warning

Une fois Docker Swarm initialisé, il ne faut plus modifier ces paramètres.