====== Deploy Manager, gérer odoo avec odoo ====== ''deploy_manager'' est un module odoo (version 14.0) qui permet de créer et de gérer des instances odoo sur des serveurs préparés. {{drawio>system_administration:diagram1.png}} ===== Préparation d'un serveur de déploiements ===== Un seveur préparé est un serveur sur lequel est déployé le dépôt [[https://git.elosys.net/aziz/deployctl_rembin.git|deployctl_rembin]] dans le HOME de l'utilisateur principal à l'emplacement ''~/rembin''. FIXME cd ; \ git clone git@git.elosys.net:sys/rembin.git ; \ cd rembin; \ ./init.sh Le script ''init.sh'' met en place une partie importante de l'infrastructure nécessaire pour lancer des instances odoo avec le module ''deploy_manager''. Après le lancement du script, le dossier personnel de l'utilisateur doit contenir l'arborescence suivante: . ├── extra-addons ├── filestore ├── postgres ├── rembin └── wproxy L'autre partie importante de l'infrastucture qui n'est pas prise en charge par le script ''init.sh'' est la mise en place d'un sous domaine wildcard pointant vers le serveur ainsi qu'un certificat SSL correspondant. Le serveur fait tourner deux services docker en permanence : - ''postgres'', le gestionnaire de bases de données commun à toutes les instances odoo qui seront créées. - ''wproxy'', le proxy nginx qui redirige vers les instances odoo et qui se charge également de la certification SSL. ===== Paramétrage de deploy_manager ===== SSH est la méthode de connexion qu'utilise le module ''deploy_manager'' pour se connecter aux serveurs préparés. Une section ''deploy_manager'' est disponible dans le menu ''configuration'' générale de odoo quand le module est installé. Cette section permet de charger une clé privée ssh. Les serveurs préparés doivent de leurs côtés autoriser l'accès en ajoutant la clé ssh public correspondante au fichier ''.ssh/authorized_keys'' de l'utilisateur principal. Le module ''deploy_manager'' présente l'arborescence de menus suivante : * [[deploy_manager#deployement_deployement|Deployement/Deployement]] * [[deploy_manager#deployement_instances_instances|Deployement/Instances/Instances]] * [[deploy_manager#deployement_instances_mutualisees|Deployement/Instances/Mutualisees]] * [[deploy_manager#deployement_machines_images_machines|Deployement/Machines & Images/Machines]] * [[deploy_manager#deployement_machines_images_images|Deployement/Machines & Images/Images]] ==== Deployement/Deployement ==== Dans ce menu, la vue par défaut liste les instances odoo hébergées sur le serveur ''dockerservice''. ''dockerservice'' est un serveur de staging. La vue formulaire permet de renseigner manuellement un service préexistant sur le serveur ''dockerservice''. Une fois renseigné, les fonctionnalités suivantes permettent de contrôler le service, à savoir : - La mise à l'arrêt, le démarrage et le redémarrage du service. - Lancement de la synchronisation du service avec la production. - Lister et télécharger des modules. ==== Deployement/Instances/Instances ==== Dans ce menu **mal nommé**, la vue par défault présente la liste des instances créées sur le serveur répondant au nom de domaine ''live.elosys.net''. Le serveur ''live.elosys.net'' héberge des instances éphémères qui sont destinées à offrir un support de test aux futur clients qui souhaitent avoir un aperçu sur les applications payantes mise à disposition par [[https://www.elosys.net/|Elosys]] sur le site [[https://apps.odoo.com/apps/modules/browse?search=elosys|https://apps.odoo.com]]. Ce serveur est également utilisé par les équipes internes d'Elosys pour tester rapidement les mises à jours sur ces mêmes applications. La création d'un nouvel enregistrement dans ce model ''elo.instance'' crée une nouvelle instance odoo sur le serveur cible. Sur la vue formulaire de création d'une nouvelle instance, il est possible de sélectionner les modules à installer. La mise à jour de la liste des modules est gérée par un script externe qui sera détaillé sur un autre post. ==== Deployement/Instances/Mutualisées ==== Dans ce menu, la vue par défault présente la liste des instances créées sur le serveur répondant au nom de domaine ''om.elosys.net''. Le serveur ''om.elosys.net'' héberge des instances de production répondant à une offre commercial d'Elosys : [[https://www.elosys.net/shop/serveur-odoo-mutualise-6#attr=12,21,22,23,38,39,40|Serveur odoo mutualisé]]. Contrairement aux instances créées sur ''live.elosys.net'', les instances odoo mutualisées ont chacune un gestionnaire de base de données dédié. Le fonctionnement actuel du module à la création d'un nouvel enregitrement sur le model ''elo.instance'' devrait être révisé pour prendre en charge cette spécification. Une explication plus détaillée sur la différence sera abordée sur un autre post. ==== Deployement/Machines & Images/Machines ==== Ce menu list les serveurs préparés sur lesquelles des instances peuvent être déployées depuis les menu. Les informations nécessaires pour rendre une machine accessible au module ''deploy_manager'' sont : * L'adresse IP ou l'adresse réseau sur lequel le serveur est accessible. * Le nom d'utilisaeur pour se connecter au serveur * Le port du service SSH sur le serveur. * Le nom de domaine du serveur. Chaque nouvelle instances Odoo aura son propre sous-domaine. ==== Deployement/Machines & Images/Images ==== Ce model liste les versions des images odoo disponibles. Ces images peuvent ainsi être attribuées aux Machines rendant ainsi possible de lancer des instances odoo de cette version sur le serveur. ===== Exécution & création de nouvelles instances ===== Le processus de création d'une nouvelle instance odoo sur le serveur ''live.elosys.net'' peut être décomposé de la manière suivante : À la création et à l'enregistrement d'un nouveau record sur le model ''elo.instance'', une commande est envoyé vers le serveur ''live.elosys.net''. Cette commande lance le script ''start_container'' avec des arguments tels que le nom de l'instance, la version odoo souhaitée, et la list des applications odoo elosys apps à installer. Pour rappel, le script ''start_container'' fait partie du dépôt ''deployctl_rembin''. {{drawio>system_administration:live-sys-arch.png}}