zestedesavoir / ansible-zestedesavoir

Script Ansible pour déployer Zeste de Savoir sur un serveur de production
4 stars 5 forks source link

Roadmap, aka le Masterplan. #11

Open sandhose opened 5 years ago

sandhose commented 5 years ago

Voici en vrac ce que j'aimerais à terme pour l'infra de Zeste de Savoir.

L'objectif est 1. d'avoir une infra la plus déclarative, reproductible et automatisée possible, et 2. pouvoir déployer dynamiquement plusieurs environnements de beta.

Dans infra, j'entends:

Là dedans, les seuls trucs qui sont pas gérable via une API sont les clés d'API de login sociaux (y'a une issue chez Google pour ça), et les VPS chez Gandi ('fin, l'API est très vieille et manque d'un vrai SDK)


J'ai pas mal expérimenté avec Terraform, qui est un outil permettant de décrire et déployer une infra via des fichiers de config.

Mes expérimentations pour Zeste de Savoir se trouvent sur sandhose/terraform-zestedesavoir.

Ce qu'il y a dans ces fichiers de config:

L'idée, c'est qu'ensuite, on peut faire générer un certain nombre de sorties à Terraform, qu'on pourrait ensuite utiliser dans le playbook Ansible.

Ce qui serait aussi possible de gérer via Terraform:


Les betas multiples

J'ai aussi dans ce dépôt un PoC de plusieurs beta. L'idée est la suivante:

Les exécutions de Terraform et de Packer peuvent se faire en CI. Pour déployer une nouvelle beta, il suffirait d'ajouter l'entrée dans le stockage clé-valeur et trigger la CI ; pour en enlever une, il suffirait de supprimer la clé correspondante.


Autres infos en vrac:

Les questions qui restent à résoudre en vrac:

Je me permet de ping @Situphen et @artragis, puisque c'est susceptible de vous intéresser.

AmauryCarrade commented 3 years ago

Salut @sandhose ! Est-ce que tu penses que tout cela est toujours d'actualité ?

J'envisage (un jour) jouer un peu avec l'API de déploiements de GitHub pour déployer sur la bêta depuis une PR à la demande (avec un nano-bot GitHub pour créer une demande de déploiement via un commentaire dans une PR le mentionnant, et un workflow GitHub Actions exécuté lors de la création d'un déploiement qui appellerait Ansible et éventuellement la synchronisation des données). Ce serait un peu une version light de cela : déploiement à la demande sans intervention humaine, mais avec un seul unique environnement.

Cela dit, si un travail est concrètement en cours là dessus, il serait dommage de se marcher dessus. Mais d'un autre côté, ce que je décris peut servir de base à ta vision, à terme (via le bot pour créer un déploiement, et GitHub Actions pour construire mais suivant ta logique).

À noter que ce ne sont que des idées pour le moment.