Skip to content

Environnements & Variables ​

Un environnement est un jeu de variables nommé, par exemple dev, staging ou production. Il appartient à un projet. Il définit les variables que reçoivent les services au démarrage.

Deux portées ​

  • Global : les variables du projet, partagées par ses services. Un environnement global peut aussi désigner l'agent par défaut des services qui n'en nomment aucun.
  • Service : les variables propres à un service. Elles se rattachent à un environnement global et ne s'appliquent que lorsque celui-ci est actif.

Un environnement peut hériter d'autres environnements. Les variables qu'il redéfinit remplacent celles dont il hérite. Les autres sont reprises.

Ordre de résolution ​

Du plus fort au plus faible :

Surcharges locales à la machine
        ▼
Variables du service (portée service)
        ▼
Variables de l'environnement global, puis de ses parents

Les surcharges locales restent sur la machine et ne sont jamais synchronisées. Elles permettent de modifier une valeur de l'équipe sur votre poste sans la changer pour les autres.

Composer une valeur ​

Une variable a trois parties : préfixe, valeur et suffixe. Runeya les met bout à bout. Chacune peut citer une autre variable de l'environnement avec {{environment.NOM}} :

DB_HOST      = db.local
DATABASE_URL = postgres://{{environment.DB_HOST}}:5432/app

Rangez une valeur partagée une seule fois, puis citez-la : la changer à un endroit la change partout. Une référence qui ne mène à rien est transmise telle quelle au service, pour que l'erreur se voie.

Variables fournies par Runeya ​

Runeya remplit lui-même ces références, au même endroit que les vôtres :

RéférenceValeur
{{service.NAME}}, {{service.ID}}Le service
{{service.PORT}}, {{service.PORT_2}}…Ses ports déclarés, dans l'ordre
{{service.URL}}, {{service.URL_2}}…Une adresse par port : le domaine local déclaré sur ce port, sinon l'adresse de la machine et le port (http://localhost:3000 sur votre poste, l'IP de la machine en mode réseau local)
{{service.BASE_URL}}L'« URL de base » saisie dans sa configuration
{{service.CWD}}Son répertoire d'exécution
{{project.NAME}}Le projet
{{runeya.ENV_NAME}}L'environnement actif
{{runeya.HOST}}L'adresse d'écoute de Runeya
{{agent.NAME}}Le nom de l'agent
{{agent.HOST_LAN}}, {{agent.OS}}, {{agent.HOME}}L'IP sur le réseau local, le système et le dossier personnel de la machine
{{services.<nom>.PORT}}, .URL, .BASE_URL, .NAME, .IDUn autre service du même projet

Les valeurs de l'agent et {{service.CWD}} sont celles de la machine qui exécute le service.

Pour un autre service, <nom> est son nom en minuscules, avec des tirets : « API Gateway » donne {{services.api-gateway.PORT}}. Si deux services du projet donnent le même nom, aucun des deux n'est utilisable de cette façon.

Ces références servent aussi à dessiner les liens entre services sur le tableau de bord : un service qui cite services.api dépend de api.

Variables à remplir ​

Deux cases indiquent qu'une variable doit avoir une valeur :

  • Obligatoire : un service de cet environnement ne démarre pas tant que la valeur finale est vide. Runeya nomme les variables manquantes.
  • Seulement surchargeable : la variable n'a pas de valeur partagée. Chaque poste fournit la sienne, par exemple un chemin local ou un jeton personnel.

Quand vous activez un environnement, ou après un démarrage refusé, un assistant demande les valeurs qui manquent. La description d'une variable aide la personne qui doit la remplir.

Secrets ​

Une variable marquée secret est chiffrée sur disque, masquée dans l'interface et jamais journalisée. Elle n'est déchiffrée qu'au moment de lancer le processus. Ce qu'un outil IA peut en lire est décrit dans Outils IA externes.

Variables système ​

Runeya ne recopie pas les variables de votre shell dans les processus qu'il lance. Un service reçoit les variables déclarées par ses environnements, plus celles que vous avez explicitement laissées passer. Les jetons et clés définis dans votre terminal ne sont donc pas transmis à vos services sans que vous l'ayez décidé.

Runeya