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.
Préparation d'un serveur de déploiements
Un seveur préparé est un serveur sur lequel est déployé le dépôt deployctl_rembin dans le HOME de l'utilisateur principal à l'emplacement ~/rembin
.
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 :
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 Elosys sur le site 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 : 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
.