DeployByInventory
Plateforme self-hosted style Laravel Forge pour déployer des apps via inventaire YAML + labs éphémères.
Statut : En cours de développement
Principes clés :
- YAML = source de vérité pour les apps permanentes
- BDD = stockage transitoire pour les labs éphémères
- Agnostique backend (Ansible ou Nomad)
- Chaque projet fournit son
deploy.yml
Règle de développement (TDD)
- Les tests définissent le comportement attendu (la spécification)
- Le code doit satisfaire les tests, pas l'inverse
- On ne modifie un test QUE si le requirement change ou si le test est incorrect
Architecture
┌─────────────────────────────────────────┐
│ DeployByInventory (Laravel) │
├─────────────────────────────────────────┤
│ UI Web │ API REST │ Cron │
└────────────────┬────────────────────────┘
│
┌─────────┴─────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ YAML (Git) │ │ BDD │
│ Apps perm. │ │ Labs éphém. │
└─────────────┘ └─────────────┘
│ │
└─────────┬─────────┘
│
┌─────────┴─────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Ansible │ │ Nomad │
└─────────────┘ └─────────────┘
│ │
└─────────┬─────────┘
│
▼
┌─────────────┐
│ Serveurs │
└─────────────┘
Qui gère quoi ?
| Rôle |
Fichier |
Responsabilité |
| Dev |
deploy.yml (dans projet) |
QUOI faire |
| Ops |
inventory.yml (central) |
OÙ déployer |
Use Cases
Stack technique
| Composant |
Technologie |
| Backend |
Laravel 12 (PHP 8.2+) |
| Frontend |
Livewire + Tailwind |
| BDD |
SQLite (dev) / PostgreSQL (prod) |
| Queue |
Laravel Queue (database driver) |
| Auth |
Laravel Breeze |
| Tests |
Pest (TDD) |
| YAML |
symfony/yaml |
| Git |
czproject/git-php |
Backends : Ansible vs Nomad
Roadmap
| Phase |
Priorité |
Objectif |
| Foundation |
Critique |
Lire inventory.yml, afficher apps |
| Deploy Ansible |
Critique |
Déployer via Ansible |
| Commandes |
Haute |
Exécuter commandes ad-hoc |
| Backend Nomad |
Haute |
Support conteneurs |
| Labs |
Haute |
Environnements éphémères |
| Webhooks |
Moyenne |
Auto-deploy sur push |
| Polish |
Moyenne |
Production-ready |
Risques et mitigations
| Risque |
Mitigation |
| Ansible non installé |
Vérifier au démarrage |
| Nomad non accessible |
Mode dégradé Ansible-only |
| Webhook non sécurisé |
Validation signature obligatoire |
| Lab oublié (coût) |
TTL max + alertes |
| Déploiement concurrent |
Lock par app |
Source