Concepts

Actions

Les actions typées exécutées dans un container ou une VM pendant le provisioning.

Les actions (xbee/actions/) sont des unités typées et exécutables, invoquées à l’intérieur d’un container ou d’une VM pendant le provisioning. Une directive up, down ou configure réduite à une chaîne est un raccourci vers une action shell.

Clé YAMLRôle
shellExécuter des commandes shell
copyCopier des fichiers ou des répertoires
envExporter des variables d’environnement
userGérer les utilisateurs du système
urlTélécharger et mettre en cache une ressource HTTP, HTTPS ou FTP
githubTélécharger les assets d’une release GitHub
permissionPositionner des permissions sur des fichiers
folderCréer, supprimer ou valider des répertoires
systempathAjouter un répertoire au PATH
pkgInstaller ou retirer des paquets via le gestionnaire du système
repoDéclarer un dépôt de paquets
gpgInstaller et contrôler une clé GPG
exportExporter un chemin sous forme d’artefact
commandExécuter une commande structurée

Action Url

url:
  from:
  topath:
  todir:
  unpack:

from définit l’URL elle-même. La ressource n’est téléchargée que si elle n’est pas déjà présente dans le cache (~/.xbee/cache-artefacts par défaut) :

  1. Si la ressource est dans le cache, pas de téléchargement ; sinon elle est téléchargée vers le cache.
  2. topath et todir sont mutuellement exclusifs. todir a une valeur par défaut si ni l’un ni l’autre n’est renseigné. unpack vaut true par défaut avec todir, et false par défaut avec topath.
url: http://toto.com/toto.tar.gz

récupère toto.tar.gz et le dépaquette dans /opt. Si todir est renseigné, l’artefact y est dépaqueté (ou copié tel quel) ; si topath est renseigné, l’artefact est copié sous ce nom, et dépaqueté dans le répertoire parent si unpack est vrai.

Action Env

La section env d’un pack expose des variables d’environnement dans le descripteur du container (pour une VM, elles doivent être accessibles à tout utilisateur). L’action env d’une directive provision, elle, peut être attribuée à un utilisateur spécifique et n’apparaît pas dans le descripteur du container.

Action Systempath

systempath: /opt/apache-maven-3.9.9/bin

ajoute un ou plusieurs répertoires au PATH du container ou de la VM — réduit à une chaîne pour un seul répertoire, à une liste (path: [...]) pour plusieurs. owner restreint l’effet à un utilisateur donné ; sans lui, tous les utilisateurs en bénéficient.

Action Pkg

pkg:
  name: openjdk-21-jdk

installe un ou plusieurs paquets (name, chaîne ou liste) via le gestionnaire du système sous-jacent — apt ou yum selon la distribution, sans que le pack ait à s’en soucier. update: true rafraîchit l’index des paquets avant l’installation ; remove: true les retire au lieu de les installer ; builddep: true installe leurs dépendances de build plutôt que les paquets eux-mêmes.

Secrets pour les actions réseau

Les identifiants nécessaires aux actions url ou git peuvent être fournis via un fichier credentials.yml, placé dans le répertoire .xbee d’une abstraction ou dans celui de l’utilisateur :

- name:
  user:
  password:

name correspond à une URL complète ou à un host.

NamedPayload

Au niveau d’un pack, les sections up, down, configure et command produisent chacune un NamedPayloadNP.Name valant up/down/configure/command, et NP.Payload un Shell ou une Command. Au niveau d’un environnement, un NamedPayload peut référencer soit un shell direct, soit l’une de ces sections d’un pack.