Outillage de déploiement
========================

Outil
-----

L'outil de déploiement utilisé sur :term:`VITAM` est ansible. Cette solution de déploiement a les caractéristiques suivantes :

* Agent-less : la propagation des ordres de déploiement utilise SSH et nécessite sur les serveurs un interpréteur Python 2.6+. (Cf. `la documentation officielle <https://docs.ansible.com/ansible/intro_installation.html>`_ pour la liste exhaustive des dépendances requises).

* Centralisation des actions : l'intégralité des actions d'administration technique et d'exploitation de la plate-forme est réalisée par cet outil de déploiement (sauf exception mentionnée le cas échéant dans le :term:`DEX`).

* Méthode d'authentification : l'authentification est faite par un utilisateur habilité à se connecter à SSH et devant pouvoir avoir les élévations de privilèges nécessaires pour faire les actions (via su ou sudo) :

  + Le choix de la méthode d'authentification (mot de passe, clé publique sans passphrase ou clé publique avec passphrase) peut être choisi en fonction des contraintes d'hébergement. Cependant, certaines méthodes limiteront l'automatisation du déploiement.
  + La mise en place de cet utilisateur est un pré-requis à la mise en oeuvre de Vitam.

.. hint:: Sur AlmaLinux et Debian, l'interpréteur Python et les packages python requis pour l'exécution d'ansible sur les noeuds gérés sont inclus dans les packages logiciels du système, et généralement déjà installés dans les systèmes de base.

L'outil de déploiement prend en entrée :

* La topologie de l'environnement (quel composant est installé sur quel serveur)
* L'ensemble des paramètres de l'environnement

Ces 2 entrées sont définies par l'utilisateur sous la forme de fichiers ansible (fichier d'inventaire et de variables).

.. caution:: L'utilisation d'ansible nécessite les droits *root* sur l'environnement cible (soit en tant qu'utilisateur *root*, soit en *sudoer*) par l'utilisateur linux faisant le déploiement. Le :term:`DIN` contiendra les informations requises pour prendre en compte cet utilisateur.

.. warning:: L'utilisation d'une méthode de déploiement autre n'est pas supportée par le projet :term:`VITAM`.


Architecture de l'outil
-----------------------

On dispose de 3 types de playbooks principaux :

* 1 playbook de déploiement (``ansible-vitam``) qui est le coeur du déploiement ;
* 1 playbook de déploiement (``ansible-vitam-extra``) qui contient des éléments potentiellement utiles, mais non nécessaires au fonctionnement du système ;
* N playbooks d'exploitation (``ansible-vitam-exploitation``) pour l'automatisation des actes d'exploitation (décrits dans le :term:`DEX`).

On dispose de 2 types de rôles :

* rôle "helper" qui est appelé par les autres rôles et qui n'est pas contenu dans les playbooks ;
* rôle "service" : 1 rôle par service déployé.

L'ensemble des fichiers de configuration (devant être instanciés) sera géré par l'outil de déploiement (via le langage de templating Jinja2).


Gestion des secrets
-------------------

Pour les variables ayant une criticité (au sens de la sécurité - par exemple : les mots de passe de connexion aux bases de données), le déploiement :term:`VITAM` est compatible avec l'utilisation du module Ansible Vault : celui-ci permet de chiffrer de manière symétrique les variables sensibles.

.. warning:: Cette fonctionnalité nécessite d'entrer la passphrase du fichier chiffré et donc est difficilement compatible avec une automatisation forte.

Les certificats (notamment :term:`CA` et certificats serveur) devront être fournis au préalable et être placés dans les répertoires d'installation mentionnés dans le :term:`DIN`.

Les composants nécessitant un certificat sont :

* ceux exposés à l'extérieur du système, à savoir les frontaux (i.e. faisant partie de la zone Accès) et storage ;
* ceux qui réalisent un horodatage sécurisé, à savoir logbook, worker et storage.

Pour chacun de ces certificats, l'intégralité des certificats des :term:`CA` de la chaîne de certification devra également être fournie, ainsi que l'URL des :term:`CRL` associées.

.. warning:: Les systèmes front-office en interface avec la solution :term:`Vitam` doivent également mettre à disposition leurs certificats et chaînes de certification système, ainsi que les certificats individuels en cas d'utilisation des Personae.

.. seealso:: La liste des secrets nécessaires au bon fonctionnement de :term:`VITAM` est décrite dans la :doc:`section dédiée </securite/_toc>`.
