Aller au contenu principal

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 :

  1. réutilise l'environnement du serveur navin-manager/server/.venv s'il existe, sinon en crée un dans le répertoire d'état ;
  2. démarre un PostgreSQL 16 privé (pgserver) dans le répertoire d'état ;
  3. 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) ;
  4. démarre le serveur en mode sandbox, sans TLS ;
  5. se connecte par l'API, crée le cluster sandbox et un jeton d'amorçage ;
  6. enregistre l'agent de navin-manager/agent avec un préfixe de système de fichiers dans le répertoire d'état et le pilote processus, puis le démarre. Avec NM_SANDBOX_AGENT=go, il construit et utilise à la place l'agent Go statique de navin-manager/agent-go (Go pris dans NM_GO ou le PATH, ou un binaire donné dans NM_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​

CommandeEffet
sandbox.sh statusÉtat de PostgreSQL, du serveur, de l'agent et des ports.
sandbox.sh logs server 200Dernières lignes du journal du serveur (agent et postgresql fonctionnent aussi).
sandbox.sh bundle opa,openfgaRemplit le miroir local avec les archives de ces services (build-bundle.py) et le recharge dans le serveur.
sandbox.sh downArrê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 sandbox accepte les services réservés aux essais, comme un PostgreSQL local (méthode python avec pgserver, ou podman), 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​

VariableDéfautEffet
NM_SANDBOX_DIR/tmp/navin-manager-sandboxrépertoire d'état (PostgreSQL, serveur, agent, miroir, journaux)
NM_SANDBOX_CONSOLE_USERnavincompte de la console créé par le serveur à son premier démarrage
NM_SANDBOX_ADMIN_PASSWORDnavinmot de passe initial de ce compte, à changer à la première connexion
NM_SANDBOX_ADMINadmincompte utilisé par le script pour l'API (mot de passe dans <état>/admin.password)
NM_SANDBOX_BUNDLE_METHODSbinaryméthodes de sandbox.sh bundle
NM_SANDBOX_PYTHONPython de navin-manager/server/.venvPython de l'environnement du serveur
NM_SANDBOX_AGENTpythonpython ou go (agent Go statique de navin-manager/agent-go)
NM_SANDBOX_AGENT_BINaucunagent Go déjà construit à utiliser au lieu d'une construction (packaging/dist/agent-go)
NM_GOgo du PATHchaîne d'outils Go qui construit l'agent Go

Dépannage​

SymptômeCauseCorrection
up s'arrête avec un message sur le port 8460 ou 8461un autre programme utilise le portarrêtez-le, ou arrêtez un bac à sable précédent avec sandbox.sh down
NM_SANDBOX_AGENT=go needs the Go toolchainni Go ni NM_SANDBOX_AGENT_BINrenseignez NM_GO, ou donnez un binaire construit dans NM_SANDBOX_AGENT_BIN
Une installation s'arrête avec artifact_missingle miroir local est videsandbox.sh bundle <services>
Une tâche qui exige root échouel'agent sans root refuse les paquets système, paramètres du noyau, limites, pare-feu et unitésinstallez avec la méthode binary ou python dans le cluster bac à sable
Un démarrage propre est nécessaireancien étatsandbox.sh down --purge, puis sandbox.sh up