Développement #105999
openSupprimer la dépendance à rabbitmq
0%
Description
Un ticket chapeau pour supprimer rabbitmq
En fait on s’aperçoit qu'on peux difficilement faire ça par morceaux
En supprimant tout ce qui est celery pour le cook. On se heurte à un soucis sur la propagation des variables qui utilise le même processus (et donc impossible de fixer les tests sans conserver une compatibilité qui complexifie le process).
Ici https://git.entrouvert.org/entrouvert/hobo/src/branch/main/hobo/deploy/signals.py des signaux propagent les variables et les services en utilisant les commandes hobo_deploy des différentes briques.
On a donc décidé, dans un premier temps, de faire en sorte de pouvoir lancer hobo_deploy via le middleware de provisionning pour avoir un POC sans rabbitmq fonctionnel.
Tout le hobo.json vas donc transiter en http et ce n'est pas forcément une bonne idée. On pourra ensuite découper ce provisionning pour ne plus utiliser la commande et ne broadcaster que ce qui est nécessaire.
L'avantage est qu'on aura une vision plus clair de ce qu'il faudra faire. Et que cela ne nécessite pas de changements dans wcs (qui ignorera simplement ce provisioning ou ne nécessitera que quelques lignes de patch pour appliquer ce même principe)
Updated by Gael Pasgrimaud 9 months ago
- Related to Développement #103431: Supprimer la dépendance à rabbitmq pour le cook added
Updated by Gael Pasgrimaud 9 months ago
- Related to Développement #62020: propager les hobo.json sans passer par celery added
Updated by Gael Pasgrimaud 9 months ago
Pour que les changements de profile usager (https://hobo.dev.publik.love/profile/) arrive dans authentic, il faudrait lui ajouter un middleware de provisionning pour gérer ça
Updated by Benjamin Dauvergne 9 months ago
Pourquoi on utilise pas simplement postgresql pour communiquer ? On a déjà un moyen de transport commun via postgres, les tenants hobo pose les fichiers hobo.json dans une table avec un timestamp et les hobo-agent viennent les lire, on peut utiliser LISTEN/NOTIFY pour le signal1. Et comme ça on ne change rien à part l'implémentation de hobo-agent, on dégage celery et rabbitmq et on est pas soumis aux aléas de requêtes HTTP.
Updated by Gael Pasgrimaud 9 months ago
Ok mais l'idée c'est que ça devienne synchrone et ne fasse pas réagir toutes les instances. Pas de ne rien changer.
De ce que je comprends on resterai dans un modèle ou toutes les instances réagissent à tous les événements mais ne font rien 99.9% du temps. En http, on cible précisément les instances qui doivent faire quelque chose. Et c'est assez rapide.
En prime, on aurait aussi des aléas avec une connection postgres, non ? Qu'est ce qui ce passe si le serveur reboot, ou qu'on sature le nombre de connexions ? Certes c'est moins courant qu'un soucis http mais sur le papier on s'expose plus ou moins aux même soucis: rater des événements. J'imagine que c'est pour cela qu'il y a un cron de provisionning.
Pour finir, le http ne concerne que le provisionning (certes c'est le plus critique pour nos clients). Pour ce qui est du déploiement/renommage d'instance on se contente de lancer des sous process dans un pool de thread sans intermédiaire. Pour ce cas c'est clairement mieux pour nous de ne pas avoir d'intermédiaire.
Ceci étant dit je ne suis pas fermé à passer par une queue postgres pour le provisionning. Il faudrait peut-être lancer la discussion un lundi si tu es convaincu.
Updated by Benjamin Dauvergne 9 months ago
Gael Pasgrimaud a écrit :
Ok mais l'idée c'est que ça devienne synchrone et ne fasse pas réagir toutes les instances. Pas de ne rien changer.
De mon coté c'est pas du tout mon idée, l'idée c'est d'enlever des éléments de la stack pour la simplifier le coté synchrone me semble pas utile, à la rigueur avoir un retour oui (savoir si la mise à jour a eu lieu, avec une queue sur postgres ce serait assez facile à faire).
De ce que je comprends on resterai dans un modèle ou toutes les instances réagissent à tous les événements mais ne font rien 99.9% du temps. En http, on cible précisément les instances qui doivent faire quelque chose. Et c'est assez rapide.
Ok mais c'est ce plan là qui n'est pas décrit alors, on ne passe plus par un simple push(get_hobo_json()) on a quelque chose de plus fin qui est capable de dire quelle instance est intéressée par la mise à jour ?
En prime, on aurait aussi des aléas avec une connection postgres, non ? Qu'est ce qui ce passe si le serveur reboot, ou qu'on sature le nombre de connexions ? Certes c'est moins courant qu'un soucis http mais sur le papier on s'expose plus ou moins aux même soucis: rater des événements. J'imagine que c'est pour cela qu'il y a un cron de provisionning.
Sans postgres on ne peut pas accéder à hobo et donc difficilement changer la configuration, c'est un non problème, postgres est toujours là, c'est une certitude.
Pour finir, le http ne concerne que le provisionning (certes c'est le plus critique pour nos clients). Pour ce qui est du déploiement/renommage d'instance on se contente de lancer des sous process dans un pool de thread sans intermédiaire. Pour ce cas c'est clairement mieux pour nous de ne pas avoir d'intermédiaire.
Le provisionning est déjà en HTTP ou j'ai raté un truc, on peut juste désactiver le coté celery dès maintenant.
Ceci étant dit je ne suis pas fermé à passer par une queue postgres pour le provisionning. Il faudrait peut-être lancer la discussion un lundi si tu es convaincu.
En fait pour moi provisionning + rabbitmq = déploiement, je pense que je n'ai peut-être pas tout compris.
Updated by Gael Pasgrimaud 9 months ago
Benjamin Dauvergne a écrit :
Gael Pasgrimaud a écrit :
Ok mais l'idée c'est que ça devienne synchrone et ne fasse pas réagir toutes les instances. Pas de ne rien changer.
De mon coté c'est pas du tout mon idée, l'idée c'est d'enlever des éléments de la stack pour la simplifier le coté synchrone me semble pas utile, à la rigueur avoir un retour oui (savoir si la mise à jour a eu lieu, avec une queue sur postgres ce serait assez facile à faire).
C'est ce qui avait été dit en eocamp. Possible qu'il n'y ai pas eu de CR clair.
De ce que je comprends on resterai dans un modèle ou toutes les instances réagissent à tous les événements mais ne font rien 99.9% du temps. En http, on cible précisément les instances qui doivent faire quelque chose. Et c'est assez rapide.
Ok mais c'est ce plan là qui n'est pas décrit alors, on ne passe plus par un simple
push(get_hobo_json())on a quelque chose de plus fin qui est capable de dire quelle instance est intéressée par la mise à jour ?En prime, on aurait aussi des aléas avec une connection postgres, non ? Qu'est ce qui ce passe si le serveur reboot, ou qu'on sature le nombre de connexions ? Certes c'est moins courant qu'un soucis http mais sur le papier on s'expose plus ou moins aux même soucis: rater des événements. J'imagine que c'est pour cela qu'il y a un cron de provisionning.
Sans postgres on ne peut pas accéder à hobo et donc difficilement changer la configuration, c'est un non problème, postgres est toujours là, c'est une certitude.
C'est vrai, sauf quand tu lance quelques chose et que ça coupe en cours. La, tu sais absolument pas ce qui a été fait et ce qui reste à faire. Tant que c'est re-jouable, ça passe
Pour finir, le http ne concerne que le provisionning (certes c'est le plus critique pour nos clients). Pour ce qui est du déploiement/renommage d'instance on se contente de lancer des sous process dans un pool de thread sans intermédiaire. Pour ce cas c'est clairement mieux pour nous de ne pas avoir d'intermédiaire.
Le provisionning est déjà en HTTP ou j'ai raté un truc, on peut juste désactiver le coté celery dès maintenant.
Pas entièrement. Les profiles/variables hobo ne remonte pas dans authentic en http, ou alors c'est moi qui rate un truc. Mais surtout je ne suis pas certain qu'on parles de la même chose.
Ceci étant dit je ne suis pas fermé à passer par une queue postgres pour le provisionning. Il faudrait peut-être lancer la discussion un lundi si tu es convaincu.
En fait pour moi provisionning + rabbitmq = déploiement, je pense que je n'ai peut-être pas tout compris.
Pour moi le déploiement c'est la création d'une instance. Le provisionning (et ça n'est pas vraiment le bon terme non plus), c'est la synchro une fois l'instance déployée (users/roles depuis authentic, profile/variables depuis hobo)
C'est ma vision dans l'absolu. Mais dans publik j'ai l'impression que à l'exception de la synchro uesr/roles authentic tout est fait tout le temps. Ca lance des hobo_deploy. Il n'y a pas ou trop peu de logs.
En l'état, c'est difficile pour moi de savoir ce qui se passe et toutes les possibilités offertes (avec les histoires de primary/secondary, etc.). Je pensais avoir quelques chose qui fonctionne mais en fait non. (impossible de m'authentifier à hobo via authentic)
Ma dernière réflexion à moi même m'amène à me dire que tout ce qui est création d'instance devrait être géré par ansible (parce que je ne déteste pas trop ansible). Que ça permettrai de savoir ce qui se passe plus facilement. C'est synchrone. Une tache, un retour. Et que ça permettrai aussi de déployer de la même manière sur un ou X serveurs. Mais vu que tout n'est pas encore clair dans ma tête et que ce n'est pas l'objet du chantier il vaut mieux ignorer ça.
Updated by Gael Pasgrimaud 9 months ago
Gael Pasgrimaud a écrit :
En l'état, c'est difficile pour moi de savoir ce qui se passe et toutes les possibilités offertes (avec les histoires de primary/secondary, etc.). Je pensais avoir quelques chose qui fonctionne mais en fait non. (impossible de m'authentifier à hobo via authentic)
Et en fait je réalise qu'on peut ajouter un service depuis l'UI hobo. Ce que j'avais inconsciemment complètement omis aussi. Et qui explique pourquoi quand quelques choses change dans hobo "tout" est rejoué partout.
Updated by Gael Pasgrimaud 8 months ago
- Related to Développement #106527: Ajouter des logs pour suivre le cook added
Updated by Gael Pasgrimaud 8 months ago
- Related to Développement #106579: Lancer moins de notify_agents durant un cook added
Updated by Gael Pasgrimaud 8 months ago
- Related to Développement #106774: Pouvoir installer des tenants secondaire added
Updated by Gael Pasgrimaud 8 months ago
Maintenant qu'il y a des logs et surtout que je me suis poussé à créer des tenants secondaire via #106774 j'y vois un peu plus clair.
Dans #103431 il y a un patch minimaliste (très peu de code qui ne casse pas les tests) qui permet de se passer de celery pour le déploiement en local. Je suis surpris que ça fonctionne mais le fait est que ça fonctionne.
Je ne suis pas certain qu'on ai intérêt à faire du séquentiel pure et dur à la création des tenants. Les déploiements de combo/authentic sont lent (à nouveau, il faudrait squash les migrations). On a tout intérêt à tout lancer en même temps.
Il y aussi le fait que l'une des commandes lancées: hobo/agent/hobo/management/commands/hobo_deploy.py, lance aussi un "déploiement" via notify_agents. J'imagine principalement pour propager les variables et profile. Mais aussi peut-être pour tout ce qui est déclaration de service. Même si à priori ici ça ne va pas en créer/supprimer. Tous les tenants (primaire et secondaire) partagent le même hobo.json. Je n'ai encore pas encore une assez bonne vision pour trancher ce point. Et aussi, je ne sais pas si on aurait intérêt à faire du provisionning http à ce niveau. Je serai plus pour conserver le principe de hobo_notify qui réagit aux même payload que https://__provisionning__/
A cause de cette commande, je penses qu'il sera très compliqué de créer des Publik avec interco "à la main" pour le cas ou tous les services ne serait pas sur la même machine.
Pour une instance simple, il devrait être possible d'afficher les commandes à lancer au lieu de les lancer vraiment. (et peut-être que je suis pessimiste et que ça marcherai pour de l'interco aussi)
Bref, ça avance. Pour moi la prochaine étape est de gérer le provisionning des variables/profiles en http (et donc idéalement aussi compatible avec la commande hobo_notify)
Updated by Gael Pasgrimaud 8 months ago
- Related to Développement #107048: Le cook ne log toujours pas assez added
Updated by Gael Pasgrimaud 7 months ago
Petit point. Ca avance (lentement).
Il y a maintenant de quoi propager les variables (en fait tout le hobo.json) dans les briques. Sauf wcs qui a un endpoint de provisionning spécifique
Il y a des tests unitaire qui passent
J'ai fait pas mal de test manuel (sans hobo secondaire pour l'instant). Ca semble pas trop mal fonctionner
A ce stade il manque encore au moins deux/trois choses:
- qu'on puisse lancer le cron hobo soit en http soit en subprocess. en http ça sera utile si tout n'est pas sur une même machine (en fait ça ne marchera pas sans) et via un subprocess c'est plus simple à tracer (on peut aussi dire que ça doit toujours passer en http)
- que le provisionning des hobo.json se lance dans un afterjob. ça pourrait prendre trop de temps
- qu'on puisse propager le hobo.json dans wcs depuis le endpoint /__provision__/
Pour l'instant je laisse ce dernier point de coté. Quand il ne restera que ça, ça sera trivial.
Aussi, je penses qu'il est indispensable d'ajouter un "--dry-run" à la commande cook. Ce qui permetra de tracer les commandes à lancer manuellement pour initier une instance dans une infra multi-machine. Et ça ça ne me semble vraiment pas gagné dans le cas ou il y a des hobo secondaire
Updated by Gael Pasgrimaud 7 months ago
- Related to Développement #108616: tester la propagation des variables hobo added
Updated by Gael Pasgrimaud 6 months ago
- Related to Développement #108898: La commande hobo-deploy de authentic attends trop et pas assez à la foi added
Updated by Gael Pasgrimaud 6 months ago
- Related to Développement #107697: Squasher les migrations added
Updated by Gael Pasgrimaud 4 months ago
A ce stade je suis obligé de ne travailler qu'en local. Vu que sur jenkins on cache les image utilisées par functest on ne peut que dificilement tester des changements majeurs dans le playbook devinst (ici ne pas installer rabbitmq)
Mais en local, le tout fonctionne pas trop mal. Le test fonctionnel qui test la propagation des variables échoue:
tests/test_hobo.py:49:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
condition = <function test_variable_propagation.<locals>.condition at 0x7f0cdebd3600>
def check_hobo_jsons_data(condition):
start = time.time()
invalid = True
while invalid:
invalid = []
for tenant, data in hobo_jsons():
if condition(data):
invalid.append(tenant)
if not invalid:
break
if time.time() - start > 60:
# should't take that long
break
time.sleep(1)
> assert not invalid, f'condition not valid for tenants: {invalid}'
E AssertionError: condition not valid for tenants: ['hobo', 'wcs']
E assert not ['hobo', 'wcs']
tests/test_hobo.py:30: AssertionError
Le hobo.json n'arrive pas dans wcs. C'est normal. Il manque une PR pour ça.
Par contre il n'arrive pas dans hobo non plus. Mais la je dirai que c'est aussi normal et que c'est l'état actuel qui est surprenant. Hobo ne devrait jamais utiliser ce fichier et donc il ne devrait même pas être présent.
Updated by Gael Pasgrimaud 3 months ago
C'est maintenant presque tout bon. Y compris avec les paquets debian.
Il subsiste un truc étrange. Quand on utilise les paquets debian il faut restart le service hobo après avoir renommé un hobo. Sinon il ne réponds pas. Je ne comprends pas trop pourquoi
Updated by Gael Pasgrimaud about 2 months ago
TLDR: il reste des taches mais en vrai ça fonctionne. en local les tests fonctionnels passent avec une image debinst en trixie (sans rabbitmq, donc). cest tests lance un déploiement et 4 renommage de service: combo/hobo en primaire/secondaire
Ce n'est pas évident d'avancer la dessus. Il faut se (re)mettre dans ce gros morceau en assurant le support. Mais j'ai enfin réussis (merci la nuit).
Il n'y a pas d'avancées notable par rapport au dernier point. Ca fonctionnait déjà. J'ai passé beaucoup de temps à essayé de comprendre pourquoi le restart de service est nécessaire quand on renomme un service mais je ne comprends pas. Ca ressemble à un soucis de cache de tenant ou autre. On voit des traces qui concerne un tenant renommé (comme combo.dev.publik.love) mais quand on restart le service tout est immédiatement ok. Super louche et pas facilement debugable.
Je ne penses pas que ce soit bloquant. On ne renomme pas des tenants tous les jours. Si dans la procédure on a "restart le service", ça me semble acceptable. (même si à terme il faudrait vraiment fixer ça)
Ce n'est pas évident de prouver que tout cela fonctionne via une CI. Et il va donc rester des étapes nécessaire:
- fixer les tests unitaires. je fais des tests en conditions réelles dans une vm et du coup j'ai mis ça de coté sur la fin
- faire en sorte d'avoir une image debinst sur jenkins pour pouvoir lancer les tests fonctionnels dessus. c'est le seul moyen de prouver que le packaging debian est ok. dans un premier temps on pourrait se contenter d'uploader une (ou des) image construite en locale (car on ne veut pas déployer un paquet debian de hobo avec une branche)
Updated by Gael Pasgrimaud about 2 months ago
- Related to Développement #112081: tester des renomages de tenant avec des tenants secondaire added
Updated by Benjamin Dauvergne about 2 months ago
Gael Pasgrimaud a écrit (#note-26):
Il n'y a pas d'avancées notable par rapport au dernier point. Ca fonctionnait déjà. J'ai passé beaucoup de temps à essayé de comprendre pourquoi le restart de service est nécessaire quand on renomme un service mais je ne comprends pas. Ca ressemble à un soucis de cache de tenant ou autre. On voit des traces qui concerne un tenant renommé (comme combo.dev.publik.love) mais quand on restart le service tout est immédiatement ok. Super louche et pas facilement debugable.
Tu pourrais pointer un ticket avec une telle trace ou s'il n'y en a pas en copier une ici ?
Updated by Gael Pasgrimaud about 2 months ago
Benjamin Dauvergne a écrit (#note-29):
Tu pourrais pointer un ticket avec une telle trace ou s'il n'y en a pas en copier une ici ?
On tombe la dessus quand on lance check_operationnal (qui check maintenant les urls de metadata) mais c'est vrai avec n'importe quelle url:
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: Traceback (most recent call last):
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/django/core/handlers/wsgi.py", line 121, in __call__
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: set_script_prefix(get_script_name(environ))
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ~~~~~~~~~~~~~~~^^^^^^^^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/django/core/handlers/wsgi.py", line 162, in get_script_name
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: if settings.FORCE_SCRIPT_NAME is not None:
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ^^^^^^^^^^^^^^^^^^^^^^^^^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/hobo/multitenant/apps.py", line 30, in <lambda>
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: conf.LazySettings.__getattr__ = lambda self, name: getattr(self._wrapped, name)
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ~~~~~~~^^^^^^^^^^^^^^^^^^^^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/hobo/multitenant/settings.py", line 102, in __getattr__
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: return getattr(self.get_wrapped(), name)
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ~~~~~~~~~~~~~~~~^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/hobo/multitenant/settings.py", line 97, in get_wrapped
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: return self.get_tenant_settings(tenant)
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/hobo/multitenant/settings.py", line 70, in get_tenant_settings
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: new_digest = self.get_digest(tenant)
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/hobo/multitenant/settings.py", line 54, in get_digest
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: return hash(tuple(loader.get_new_time(tenant) for loader in self.loaders))
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/hobo/multitenant/settings.py", line 54, in <genexpr>
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: return hash(tuple(loader.get_new_time(tenant) for loader in self.loaders))
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ~~~~~~~~~~~~~~~~~~~^^^^^^^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: File "/usr/lib/python3/dist-packages/hobo/multitenant/settings_loaders.py", line 434, in get_new_time
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: return os.stat(tenant_dir).st_mtime
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: ~~~~~~~^^^^^^^^^^^^
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: FileNotFoundError: [Errno 2] No such file or directory: '/var/lib/hobo/tenants/secondary-hobo.dev.publik.love'
déc. 16 08:57:31 testvm uwsgi/hobo[1308]: [pid: 1308|app: 0|req: 257/943] 0.0.0.0 () {38 vars in 543 bytes} [Tue Dec 16 09:57:31 2025] GET /accounts/mellon/metadata/ => generated 0 bytes in 5 msecs (HTTP/1.0 500) 0 headers in 0 bytes (0 switches on core 0)
Updated by Gael Pasgrimaud about 2 months ago
Et en fait ça fini par fonctionner. Mais ça prends beaucoup trop de temps alors que ça devrait être "immédiat". Pour moi ça confirme que c'est un soucis de cache quelque part.
Je ne vois pas de code qui serait lancé en tache de fond qui modifierai le comportement.
Updated by Gael Pasgrimaud about 1 month ago
- Status changed from Nouveau to Solution proposée
Modulo quelques ruses:
- il faut un paquet debian hobo sans dépendance à rabbitmq du coup l'image kvm utilisé par jenkins est buildé en local
- pour être certain que c'est le code de la branche qui est utilisé on rsync le code depuis le repo hobo dans la vm
En fait les ruses ne servent qu'à palier au fait qu'on ne va pas pousser un paquet issue d'une branche sur deb.entrouvert
Mais (roulement de tambour) ça passe: https://jenkins.entrouvert.org/job/gitea/job/publik-functests/job/wip%252F113371-Pouvoir-lancer-les-tests-indiferement-avec-debinst-et-devinst/
Les deux PR concernées sont à relire. C'est intense. Beaucoup plus que prévu initialement. Il va falloir un ou des courageux..
Updated by Gael Pasgrimaud about 1 month ago
- Related to Développement #113371: Pouvoir lancer les tests indiférement avec debinst et devinst added
Updated by Gael Pasgrimaud 25 days ago
- Related to Développement #113655: Ajouter une provision-url à authentic dans les hobo.json added
Updated by Gael Pasgrimaud 7 days ago
- Status changed from Solution proposée to En cours
Il y a changement de plan.
En fait, on est obligé de passer par des sous process pour lancer les déploiements des briques. C'est non négociable car à ce moment on a pas de endpoint http pour faire quoi que ce soit.
Du coup, on a opté pour propager les variables (et en fait les hobo.json) en http mais ça n'est absolument pas nécessaire.
Le besoin était requis pour les utilisateurs qui voudrait avoir un service par machine physique.
Mais, pour se contenter de faire du sous process partout, il suffit d'exiger que hobo soit installé sur une machine ou tous les autres services soit installé (qu'ils soient lancés ou non)
Je vais donc revenir la dessus et tout repasser en sous process.
Il devrait en découler quelques avantages non négligeable:
- moins de code et de complexité car on ne gère plus qu'un cas de figure
- des logs plus compréhensible en ne suivant que le process hobo qui fait le job