Trackbone CLI#
La commande trackbone propose 8 actions :
make-diff: Générer un diff entre deux versions d'environnementsshell: Démarrer un shell pour travailler sur une configuration spécifiqueplan: Tester les configurations sélectionnéesapply: Appliquer les configurations sélectionnéesdestroy: Détruire les configurations sélectionnéesinputs: Afficher les entrées de configurationoutputs: Afficher les sorties de configurationgraph: Générer un graphe de dépendance entre les configurations
Common Options#
Les paramètres ci-dessous s’appliquent à (pratiquement) toutes les actions
-z, --zone#
Nom des Zones cibles. (Target Zones)
Permet de cibler les configurations pour une zone en particulier. Peut-être présent plusieurs fois.
-c, --config#
Nom des configurations cibles.
Permet de cibler une configuration en particulier. Peut-être présent plusieurs fois.
On peut également mettre -c zone/config ce qui équivaut à -z zone -c config
--exprs#
Répertoire contenant les expressions CUE (Par défaut c’est le répertoire courant)
-t : CUE tags#
Permet de définir la valeur d’un tag. (Ce qui indirectement va permettre de filtrer certaines zones).
Les tags sont définis avec l'annotation @tag dans env-ng.
line_bootstrap(bool) :bootstrap(bool) :purge(bool) :line(string) : Permet de cibler une zone-t line=prodou-t line=staging. On peut utiliser la forme raccourcie-t prodou-t staging. Par défaut-t zone=allmais ce n’est pas une valeur autorisée pourplan,applyoudestroy!targeted_zones(string) : Permet de cibler des zones. C'est équivalent à-z, --zone.rancher2_keycloak_users_tokens_deletion(bool):nginx_alertreceiver_zone_for_bootstrap(bool):karma_refresh_cache(bool):blackbox_exporter_refresh_cache(bool) :privx_tests(bool):upgrade(bool):show_secrets(bool): Affiche les secrets dans la console.à utiliser
-t show_secrets=trueuniquement en local. DO NOT USE ON CI/CD
-s, --selector#
Un sélecteur filtre les fichiers cue à prendre en compte pour l'évaluation
--add-children (3.0)#
Ajouter des zones enfants dans les sélecteurs
--add-services (3.0)#
Ajouter des zones de services dans les sélecteurs
--debug#
Activer le mode debug
Augmente la verbosité des logs, et en particulier le
duration pour toutes les taches. Par défaut on voit le duration uniquement pour les taches longues ( > 1s )
Vous pouvez également définir la variable d’environnement
TRACKBONE_DEBUG (v3.3) pour activer des logs supplémentaires en couleurs. (TRACKBONE_DEBUG=true trackbone plan)
--trace (3.2)#
Activer le mode trace
Augmente énorme ment la verbosité. Utile uniquement pour du debug de trackbone.
Attention, cette option peut afficher des secrets dans la console. DO NOT USE ON CI/CD
--enable-timestamps#
Activer les horodatages dans les journaux
Option de performance#
Explication#
Pour comprendre les paramètres liés à la performance, il faut comprendre le fonctionnement interne de trackbone et connaitre le vocabulaire associé.
Trackbone exécute une action "Apply", "Plan", "Diff", etc.
Pour fonctionner une action définie des taches qui vont s’exécuter avant pre-tasks ou après
post-tasks l'action. La séquence de traitement est linéaire (unifyOutputs -> prepareShell -> runPreTasks ->
runAction -> runPostTasks -> runFinallyTasks -> SetOutputs)
On associe les actions et tasks pour une application dans une configuration.
Les taches et actions nécessitent des paramètres, qui sont définis dans la configuration (donc en cue). Une tache peut modifier la configuration en cue dynamiquement (via les outputs). Les sorties (outputs) de certaines tâches, vont être utilisées comme entrées (inputs) pour d'autres, ce qui crée des dépendances entre elles. Ainsi certaines tâches pourront s'exécuter en priorité, d'autres vont pouvoir s’exécuter en parallèle. (1).
La même configuration peut s'appliquer sur plusieurs zones, mais trackbone va traiter une zone à la fois. L'association zone + configuration est appelée target. On est techniquement capable d’exécuter plusieurs target en parallèle (2).
Trackbone va charger en ram le contexte de toutes zones concerné et toutes les configurations passés en paramètre. On va limiter avec
-z, --zone et
-c, --configuration, cependant certains usages nécessitent de cibler toutes les zones en même temps. Charger toutes les configurations pour toutes les zones ngot nécessitent plusieurs dizaines de Go de RAM. Pour contrôler la consommation de ram, on va grouper les zones et limiter le nombre de zones par groupe grâce aux paramètres
--group-*. Par défaut, on exécute 1 groupe à la fois (3).
Parallélisation#
- (1) : Le paramètre
-b, --batch-sizedéfini le nombre de taches exécutables en parallèle (si leurs dépendances sont satisfaite) - (2) : Le paramètre
-r, --job-runnersdéfini le nombre target qui seront traité en parallèle. - (3) : Le paramètre
-w, --group-workerdéfini le nombre de groupe de zone traité en parallèle.
--group-algo (3.0)#
Sélectionner l'algorithme à utiliser pour regrouper les zones en vue d'un traitement par lots (none, each, bucket, niv1, niv2) (default "niv2")
--group-min (3.0)#
Nombre minimal de zones par groupe en mode batch (default 5)
--group-max (3.0)#
Nombre maximum de zones par groupe en mode batch (default 30)
-n, --runners#
Augmente le nombre de worker (parallélisation des groupes). (Deprecated depuis 3.4, utiliser
-w, --group-worker à la place) (default 1)
-w, --group-worker (3.4)#
Nombre de groupes de zone fonctionnant en parallèle (default 1)
-r, --job-runners (3.4)#
Nombre de tâches d'exécution simultanées en parallèle (default 1)
-b, --batch-size (3.3)#
Disponible uniquement sur plan, apply et detroy.
Détermine le nombre de tasks traité en parallèle (5 par défaut). Ce paramètre est utile uniquement pour les configurations qui utilisent beaucoup de tasks lentes (+30 tasks).
Généralement vous ne touchez pas ce paramètre.
Actions plan / apply / destroy / shell#
--cascade#
Appliquer les configurations fournies et toutes les configurations qui en dépendent
--no-skip#
Ne pas ignorer la configuration lorsque le parent a échoué
--non-interactive#
Ne pas demander l’exécution
--no-color#
La sortie ne contiendra pas de couleur.
--detailed-exitcode#
Renvoyer des codes de sortie détaillés lorsque la commande se termine. La signification des codes de sortie sera alors la suivante :: 0 - Réussi, diff est vide (no changes) 1 - Erreurs 2 - Réussi, il y a des diff
--output-dir#
Répertoire pour les logs et les artifacts
--retries#
Nombre de tentatives en cas d'échec d’une action (default 0)
-k, --keep#
Garder le dossier de travail de trackbone
-q, --quiet#
Ne pas enregistrer les logs des targets sur stdout
--quiet-init#
Ne pas enregistrer l’initialisation nix-shell des targets sur stdout
-p, --podman#
Utiliser podman au lieu de nix-shell (Experimental)
--command#
Uniquement sur shell
Nix-shell command (default "bash")
make-diff#
Générer un diff entre deux versions d'environnements
Usage: trackbone make-diff [OPTIONS] FROM TO
Arguments:
FROM Old cue definitions path
TO New cue definitions path
inputs#
Afficher les entrées de configuration
Usage: trackbone inputs [OPTIONS] [ATTR_PATH]
Arguments:
ATTR_PATH Attribute path to show (default: all attributes)
--no-tasks#
Ne pas exécuter de tâches
-a, --action#
Afficher les attributs d'une action (plan, apply, destroy) (default "plan")
outputs#
Afficher les sorties de configuration
Usage: trackbone outputs -z=<ZONE_NAME> [OPTIONS]
graph#
Générer un graphe de dépendance
-a, --action#
Générer un graphe pour une action (apply, plan, destroy, ...) (default "apply")
-f, --format#
Graph format (dot, json) (default "dot")
--cascade#
Appliquer les configurations fournies et toutes les configurations qui en dépendent
Utilisation de podman avec trackbone#
Par defaut, trackbone utilise le mode podman si l'attribut image est présent dans la section #HelmConfig.
- En local.
trackbone plan -z <zone> -c <config>
trackbone apply -z <zone> -c <config>
Warning
Pour la commande shellil faudra ajouter l'option --podman
trackbone shell -z <zone> -c <config> --podman
- Dans un merge request.
trackbone plan podman
trackbone plan caascad podman
trackbone plan ngot podman
trackbone plan pf podman