Aller au contenu

Trackbone CLI#

La commande trackbone propose 8 actions :

  • make-diff : Générer un diff entre deux versions d'environnements
  • shell : Démarrer un shell pour travailler sur une configuration spécifique
  • plan : Tester les configurations sélectionnées
  • apply : Appliquer les configurations sélectionnées
  • destroy : Détruire les configurations sélectionnées
  • inputs : Afficher les entrées de configuration
  • outputs : Afficher les sorties de configuration
  • graph : 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=prod ou -t line=staging. On peut utiliser la forme raccourcie -t prod ou -t staging. Par défaut -t zone=all mais ce n’est pas une valeur autorisée pour plan, apply ou destroy !
  • 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=true uniquement 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-size défini le nombre de taches exécutables en parallèle (si leurs dépendances sont satisfaite)
  • (2) : Le paramètre -r, --job-runners défini le nombre target qui seront traité en parallèle.
  • (3) : Le paramètre -w, --group-worker dé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