Bac à sable
Le bac à sable fait tourner tout navin-manager sur un seul poste, sans root et sans Docker : un PostgreSQL privé pour
la base de la console, le serveur sur 127.0.0.1:8460 (console et API) et 127.0.0.1:8461 (API agent et miroir),
un cluster bac à sable et un agent enregistré en mode sans root. Il sert aux essais rapides et aux démonstrations ;
la production utilise les paquets et le PostgreSQL externe de la banque.
Démarrer
navin-manager/packaging/sandbox/sandbox.sh up
Le script :
- réutilise l'environnement du serveur
navin-manager/server/.venvs'il existe, sinon en crée un dans le répertoire d'état ; - démarre un PostgreSQL 16 privé (
pgserver) dans le répertoire d'état ; - crée la clé maître, applique les migrations et crée l'administrateur (mot de passe pris dans
NM_SANDBOX_ADMIN_PASSWORD, sinon généré et affiché une seule fois) ; - démarre le serveur en mode
sandbox, sans TLS ; - se connecte par l'API, crée le cluster
sandboxet un jeton d'amorçage ; - enregistre l'agent de
navin-manager/agentavec un préfixe de système de fichiers dans le répertoire d'état et le pilote processus, puis le démarre. AvecNM_SANDBOX_AGENT=go, il construit et utilise à la place l'agent Go statique denavin-manager/agent-go(Go pris dansNM_GOou lePATH, ou un binaire donné dansNM_SANDBOX_AGENT_BIN).
Le répertoire d'état est /tmp/navin-manager-sandbox (variable NM_SANDBOX_DIR). Les ports 8460 et 8461 doivent
être libres : sinon le script s'arrête avec un message clair.
Utiliser
| Commande | Effet |
|---|---|
sandbox.sh status | État de PostgreSQL, du serveur, de l'agent et des ports. |
sandbox.sh logs server 200 | Dernières lignes du journal du serveur (agent et postgresql fonctionnent aussi). |
sandbox.sh bundle opa,openfga | Remplit le miroir local avec les archives de ces services (build-bundle.py) et le recharge dans le serveur. |
sandbox.sh down | Arrête l'agent, les composants qu'il fait tourner, le serveur et PostgreSQL ; le up suivant redémarre les composants. --purge supprime aussi le répertoire d'état. |
Ouvrez http://127.0.0.1:8460, connectez-vous avec navin / navin (la console demande votre propre mot de passe à la première connexion) et installez un service dans le cluster sandbox : par
exemple OPA (méthode binary, mode standalone) ou OpenFGA (méthode binary, mode memory, sans base de données).
L'agent lance les composants comme des processus supervisés sous son préfixe : rien n'est écrit dans /etc ni dans
/opt du poste.
Ce que permet le bac à sable
- Un cluster en mode
sandboxaccepte les services réservés aux essais, comme un PostgreSQL local (méthodepythonavecpgserver, oupodman), pour satisfaire une dépendance sans le cluster de la banque. - L'agent sans root ignore les propriétaires et les groupes, utilise le pilote processus et refuse les tâches qui demandent root (paquets système, paramètres du noyau, limites des processus, pare-feu, unités systemd). Le planificateur ne les lui envoie jamais.
- Les prérequis utiles seulement en production (synchronisation de l'horloge, systemd, SELinux) apparaissent comme des avertissements.
Variables
| Variable | Défaut | Effet |
|---|---|---|
NM_SANDBOX_DIR | /tmp/navin-manager-sandbox | répertoire d'état (PostgreSQL, serveur, agent, miroir, journaux) |
NM_SANDBOX_CONSOLE_USER | navin | compte de la console créé par le serveur à son premier démarrage |
NM_SANDBOX_ADMIN_PASSWORD | navin | mot de passe initial de ce compte, à changer à la première connexion |
NM_SANDBOX_ADMIN | admin | compte utilisé par le script pour l'API (mot de passe dans <état>/admin.password) |
NM_SANDBOX_BUNDLE_METHODS | binary | méthodes de sandbox.sh bundle |
NM_SANDBOX_PYTHON | Python de navin-manager/server/.venv | Python de l'environnement du serveur |
NM_SANDBOX_AGENT | python | python ou go (agent Go statique de navin-manager/agent-go) |
NM_SANDBOX_AGENT_BIN | aucun | agent Go déjà construit à utiliser au lieu d'une construction (packaging/dist/agent-go) |
NM_GO | go du PATH | chaîne d'outils Go qui construit l'agent Go |
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
up s'arrête avec un message sur le port 8460 ou 8461 | un autre programme utilise le port | arrêtez-le, ou arrêtez un bac à sable précédent avec sandbox.sh down |
NM_SANDBOX_AGENT=go needs the Go toolchain | ni Go ni NM_SANDBOX_AGENT_BIN | renseignez NM_GO, ou donnez un binaire construit dans NM_SANDBOX_AGENT_BIN |
Une installation s'arrête avec artifact_missing | le miroir local est vide | sandbox.sh bundle <services> |
| Une tâche qui exige root échoue | l'agent sans root refuse les paquets système, paramètres du noyau, limites, pare-feu et unités | installez avec la méthode binary ou python dans le cluster bac à sable |
| Un démarrage propre est nécessaire | ancien état | sandbox.sh down --purge, puis sandbox.sh up |