Concepts
Providers & volumes
Comment Xbee délègue les VM et volumes à un binaire provider externe.
Un provider est un binaire externe nommé xbee-<nom> — par exemple xbee-aws ou
xbee-azure — auquel Xbee délègue le cycle de vie des VM, images, réseaux et volumes.
À la première utilisation, Xbee télécharge directement le binaire correspondant à l’OS et à l’architecture courants :
https://download.xbee.io/latest/<os>_<arch>/xbee-<nom>.gzLe téléchargement utilise cache-artefacts/ dans le répertoire interne Xbee.
Configurer un environnement avec un provider
Le provider est une map dont name est obligatoire. La forme scalaire historique
provider: aws n’est plus acceptée :
provider:
name: aws
region: eu-west-3Ces valeurs communes sont fusionnées avec default.host.provider,
host.<nom>.provider et volume.<nom>.provider. Les valeurs les plus spécifiques
complètent ou remplacent les valeurs communes. Xbee vérifie la structure générale et
que les valeurs requises ne sont pas vides ; la signification précise des champs reste
le contrat du binaire provider.
Enfin, un pack système peut fournir des métadonnées sous provider.<nom>. Elles sont
transmises séparément au provider pour identifier son image OS de base. L’environnement
n’a donc généralement pas à répéter une AMI, une famille d’image GCP ou son équivalent.
AWS (host.provider) :
provider:
name: aws
region: eu-west-3
default:
host:
system: ubuntu:24.04
net: default
provider:
availabilityZone: eu-west-3a
instanceType: t3a.medium
size: 20
host:
a: {}
volume:
data1:
size: 20
provider:
volumeType: gp3
iops: 3000
throughput: 125GCP (host.provider) :
provider:
name: gcp
projectId: my-project
zone: europe-west9-b
default:
host:
system: ubuntu:26.04
net: xbee-net
provider:
instanceType: e2-medium
size: 20
host:
a: {}
volume:
data1:
size: 20
provider:
diskType: pd-balancedAzure (host.provider) :
provider:
name: azure
subscriptionId: <subscription-id>
resourceGroup: my-rg
location: westeurope
default:
host:
system: ubuntu:26.04
net: xbee-net
provider:
vmSize: Standard_D2s_v3
size: 30
host:
a: {}
volume:
data1:
size: 20
provider:
sku: Premium_LRSLes valeurs par défaut connues de Xbee vivent dans ~/xbee.yaml. La commande
xbee new env --provider <nom> les utilise pour générer le squelette de
xbee-env.yaml. Les providers actuellement présents dans cette configuration sont
virtualbox, aws, gcp, azure, scaleway et ovh; la convention de
téléchargement permet d’en utiliser d’autres si leur binaire est publié.
Ces valeurs se consultent et se modifient avec xbee config; voir
Configuration globale.
Données envoyées au binaire
Avant chaque appel, Xbee écrit une représentation normalisée de l’environnement dans
.xbee/env.yaml, puis lance le binaire avec une action (up, down, infos,
image, suppression de volumes ou d’images, etc.). Cette représentation distingue :
- les paramètres communs du provider ;
- la configuration provider de chaque hôte et volume ;
- les métadonnées
provider.<nom>de chaque pack système ; - l’identité et le hash des systèmes et packs applicatifs.
Orchestrateur
L’Orchestrateur (xbee/orchestrator.go) abstrait le cycle de vie container vs VM
derrière une interface commune :
Up / Down / Enter / Delete / Operate / PackLes implémentations vivent sous xbee/container/ pour Docker et xbee/vm/ pour tous
les providers externes. Le reste du modèle — packs, environnements et actions — est
commun.
Volumes
Voir Environnements pour la déclaration d’un
volume (volume: racine) et son association à un hôte (host.<nom>.volume:).