4 min read

anybox-odoo-host

anybox-odoo-host

Après la recette buildout pour OpenERP et ses paquets de dépendances système pour Debian, Anybox publie anybox-odoo-host, un paquet Debian qui met en place un environnement complet pour héberger des projets Odoo (anciennement OpenERP), livrés sous la forme de buildouts archivés.

Historique

Au départ, rien ne destinait anybox-odoo-host à être utilisé ailleurs que sur nos propres serveurs. Initialement, il ne faisait que définir des emplacement standard et des raccourcis pour exécuter buildout avec les options qui nous conviennent, préparer les configurations du frontal web… En un mot, son but était de représenter ce qui est spécifique et interne à Anybox, mais doit se retrouver d'une installation à l'autre.

Au fil du temps — et des versions d'OpenERP, anybox-odoo-host s'est étoffé, devenant capable de gérer de plus en plus de situations ; il est devenu un composant d'uniformité de la chaîne de développement, fiabilisant la reproductibilité des installations entre serveurs de recette/validation et production.

Est arrivé le moment où il est devenu nettement plus efficace d'installer anybox-odoo-host sur le serveur d'un client que de s'en passer. Nous avons alors rendu configurables les choix qui étaient trop spécifiques à Anybox, aidés en cela par le fait que nos configurations étaient désormais prises en charge par Saltstack.

Nous sommes fiers aujourd'hui de proposer le fruit de ce travail sous licence GPL version 2 et suivantes.

Il n'y a rien de révolutionnaire dans anybox-odoo-host : c'est un composant qui fournit une intégration finale. Une bonne part des choix qui y ont été faits peuvent paraître arbitraires suivant le contexte dans lequel on les considère. Il y en a certainement qui sont améliorables.

Mais c'est une solution complète, faite de tous les ajustements qui se sont avérés nécessaires au jour le jour.

Fonctionnalités

anybox-odoo-deploy s'occupe de télécharger et installer vos archives de buildouts, et de procéder à la mise à jour des données sur la base du standard défini par la recette buildout. Pour les nouvelles instances, il initie la configuration locale (ports…). L'organisation d'une instance est prévue pour faciliter les retours en arrière en cas de problème.

anybox-odoo-register prépare les configurations Supervisor et Nginx.

Un mécanisme de sauvegardes basiques par dump local est mis en place automatiquement pour chaque nouvelle instance.

Toutes les fonctionnalités mettant en jeu la base de données prennent en compte le cas où l'on fonctionne en paires répliquées avec le streaming de PostgreSQL version 9.

Architecture

Les logiciels employés sont :

  • Nginx pour le frontal web
  • Supervisor pour la gestion des process
  • Odoo lui-même fait partie des livrables (buildouts archivés) à installer.
  • PostgreSQLest le plus couramment en local, mais il est également possible de fonctionner en mode purement applicatif, avec SGBD à part.

L'image ci-dessous montre une possibilité d'assemblage, avec deux instances sur la machine, en configuration avec tâches planifiées à part

La configuration par défaut pour Odoo 8 est légèrement différente de celle-ci : elle n'utilise pas Gunicorn, et ne sépare pas workers web et tâche planifiées). Ces différences sont isolées dans le modèle de configuration Supervisor (un modèle par défaut pour chaque version d'Odoo/OpenERP). Nous envisageons de fournir également un modèle de configuration pour une séparation nette des processes en contexte Odoo 8, pour plus de souplesse en fonction de la réalité de charge.

Avantages

Il pourrait paraître paradoxal, en cet âge de conteneurs dans les nuages, de présenter une solution sous forme de paquet Debian. Voici quelques raisons.

  • universalité : si le serveur est sous Debian ou basé sur Debian, alors vous pouvez installer anybox-odoo-host. Il n'y a pas de présupposés sur l'environnement d'exploitation. Vous pouvez gérer la configuration manuellement ou avec l'outil de votre choix (Salt, Puppet, Chef, CFEngine…) et pourquoi pas l'asservir à un panneau de commande.
  • extensibilité : on peut utiliser anybox-odoo-host comme pivot pour décliner les technologies de plus haut niveau (Vagrant, Docker) et ainsi par exemple accompagner un projet au cours des évolutions de l'environnement de production.
  • automatisation : même le plus discipliné des administrateurs avec la meilleure des procédures finit par oublier une fois de faire une sauvegarde avant mise à jour. anybox-odoo-host fournit cela de manière uniforme sur toutes les instances.

Parmi les autres points forts, on peut également citer :

  • mutualisable : anybox-odoo-host est capable d'héberger plusieurs projets, avec séparation par utilisateur système et rôles PostgreSQL. Même si vous n'avez qu'un seul projet, la souplesse apportée reste appréciable. Par exemple, dans le cas qui reste courant où le provisionnement d'une nouvelle machine est une opération relativement lourde, il est facile d'ajouter une instance éphémère sur un serveur de pré-production pour les formations utilisateurs, ou de dédoubler une instance de tests.
  • souple : les scripts utilitaires qui composent anybox-odoo-host disposent de nombre d'options, les cas courants étant représentés par des valeurs par défaut, elles-mêmes configurables. Vous pouvez démarrer rapidement, plus vous configurerez, plus vous pourrez vous passer des options au jour-le jour.
  • robuste : bien qu'il soit laborieux de tester un tel ensemble d'utilitaires de déploiement et gestion d'instances, nous avons mis en place une infrastructure de tests automatiques pour anybox-odoo-host.

Installation

La publication d'anybox-odoo-host s'accompagne d'une modification de l'organisation des dépôts publics APT d'Anybox.

Branchez la machine sur les dépôts Anybox

Si vous comptez avoir le SGBD sur la même machine, préparez-le d'emblée avec la bonne locale, par exemple fr_FR.UTF-8

Installez le paquet:# apt-get install anybox-odoo-host

Configurez un peu, beaucoup ou pas du tout:

/etc/anybox-openerp-download-root : adresse de base pour télécharger les livrables (l'installation d'archives en fichier local est également possible)

/etc/anybox-default-serving-domains : si vous voulez un serveur mutualisé utilisant un certificat wildcard

/etc/buildout-anybox.cfg : options communes d'exécution des buildouts

/etc/openerp/ : modèles de configuration locale utilisés par anybox-odoo-deploy`

/etc/supervisor/openerp_templates, /etc/nginx/openerp_templates : modèles utilisés Supervisor et Nginx utilisés par anybox-odoo-register