Premiers pas

Écrire et tester un pack minimal

Un pack « hello » pour manipuler require, var, up/down et command.

Ce tutoriel construit un pack minimal, hello, qui n’a aucune dépendance et se teste en quelques commandes. Il sert de fil rouge pour parcourir les briques de base d’un xbee-pack.yaml : système requis, modèle de données, actions de cycle de vie et commande exposée.

Créer le pack

xbee new pack hello
cd hello

crée un répertoire hello/ contenant un xbee-pack.yaml minimal — voir Commandes CLI.

Écrire le xbee-pack.yaml

Remplacez son contenu par :

schema-version: "1.0"
description: "Pack de démonstration : écrit un message de bienvenue au démarrage de l'hôte, et l'affiche à la demande."

require: ubuntu:24.04

var:
  greeting: "Bonjour depuis xbee !"

up: 'echo "{{ .greeting }}" > {{ .xbee.app }}/hello.txt'

down: "rm -f {{ .xbee.app }}/hello.txt"

command:
  hello: 'echo "{{ .greeting }}"'
  • require: ubuntu:24.04 déclare le système sous-jacent au pack.
  • var.greeting fait partie du modèle de données du pack : contrairement à const, ses feuilles pourront être surchargées — on s’en sert dans le tutoriel suivant.
  • up et down, réduits à une chaîne, sont chacun un raccourci vers une action shell — le point de liaison entre un environnement et ce pack, pas encore utilisé à ce stade.
  • command.hello expose une commande xbee hello, invoquée via xbee <cmdPack> — voir Commandes CLI.

{{ .greeting }} et {{ .xbee.app }} sont interpolés au moment de l’exécution, sans préfixe var. : le manifeste interpole un modèle déjà fusionné. .xbee.app vient de la clé réservée xbee, posée par défaut par xbee lui-même (/xbee/app, sans qu’il soit besoin de la déclarer) — voir Modèle de données.

Provisionner et tester isolément

Hors de tout environnement, xbee pack enchaîne système → acquisition/build des builders → provision → deploy — voir Packs :

xbee pack

Pour hello, seules les deux premières étapes produisent réellement quelque chose : le système prépare l’image ubuntu:24.04, et provision installe les dépendances du pack — ici aucune. Le pack ne déclare ni builder ni section deploy.

Depuis le répertoire du pack, xbee enter construit (si besoin) puis démarre un container à partir de ce pack, et y ouvre un shell — par défaut dans /xbee/app (.xbee.app, voir plus haut) :

xbee enter

up n’est pas exécuté par xbee pack ni par xbee enter : c’est une commande d’environnement (xbee up) qui l’invoque, hôte par hôte — voir le tutoriel suivant. hello.txt n’existe donc pas encore dans ce shell ; sortez-en (exit) et invoquez plutôt la commande exposée par le pack, indépendante du cycle de vie :

xbee hello
# Bonjour depuis xbee !

Si vous modifiez le xbee-pack.yaml (par exemple la valeur de greeting) après ce premier xbee pack, un nouvel appel réutilise les images et artefacts valides. Utilisez --force-provision, --force-system ou --rebuild-builders pour forcer la couche concernée, ou --clean/-c pour repartir d’une résolution neuve du lock — voir Identité & résolution.

Prochaine étape : utiliser ce pack comme dépendance d’un hôte, dans un environnement minimal, pour voir up et down s’exécuter réellement.