Cas pratiques
Créer et piloter une VM Ubuntu sur AWS
Un environnement à un hôte, sans pack applicatif : construire l'AMI, démarrer l'instance EC2, y ouvrir un shell, puis la détruire.
Ce tutoriel crée un environnement xbee à un seul hôte — une instance EC2
ubuntu:24.04, sans aucun pack applicatif — et la pilote de bout en bout :
construction de l’image, démarrage, connexion shell, arrêt, destruction. Contrairement
aux tutoriels Pack Node.js et
Pack Maven, qui packageaient un outil dans un
container Docker, l’hôte ici est une vraie machine virtuelle chez un provider cloud —
voir Providers & volumes.
Prérequis : les identifiants AWS
Le binaire du provider aws s’appuie sur le mécanisme standard d’identification du SDK
AWS — le même que la CLI aws officielle. Le plus simple est de le configurer une fois
pour toutes :
aws configurequi renseigne ~/.aws/credentials (clé d’accès, clé secrète) et ~/.aws/config
(région par défaut). Une fois en place, aucune section xbee-secret.yaml propre à xbee
n’est nécessaire pour l’authentification AWS elle-même.
Créer l’environnement
mkdir vm-aws
cd vm-aws
xbee new env -p aws -s ubuntu:24.04Le xbee-env.yaml généré
schema-version: "1.0"
provider:
name: aws
default:
host:
system: ubuntu:24.04
net: xbee-net
host: aSelon la configuration locale (~/xbee.yml), default.host.provider peut déjà
contenir des valeurs par défaut pour AWS, ou rester absent. Dans tous les cas,
assurez-vous d’obtenir les champs suivants, propres à AWS — voir
Providers & volumes :
default:
host:
system: ubuntu:24.04
net: xbee-net
provider:
region: eu-west-3
availabilityZone: eu-west-3a
instanceType: t3a.medium
size: 20
host: aregion/availabilityZonesituent l’instance ;instanceTypeen choisit le gabarit ;sizeest la taille (en Go) du volume racine.host: adéclare un unique hôte, sanspack: rien d’autre que le systèmeubuntu:24.04n’y est installé. Un pack applicatif s’ajouterait comme dans Utiliser le pack dans un environnement, viahost.a.pack.
Construire l’image (AMI)
xbee packAvant de démarrer quoi que ce soit, xbee a besoin d’une AMI taguée pour ce système —
elle n’existe pas encore au premier lancement. xbee pack, exécutée depuis ce
répertoire d’environnement (et non un répertoire de pack), démarre une instance EC2
temporaire, y installe le système requis, capture le résultat en AMI, puis détruit
cette instance temporaire — elle n’a servi qu’à builder l’image, et n’est jamais
facturée au-delà de ce build. Cette AMI est ensuite réutilisée par tous les futurs
xbee up, tant que la définition du système ne change pas.
xbee up refuse de démarrer si cette étape n’a pas été faite : xbee l’indique
explicitement (« You MUST run command: xbee pack first »).
Démarrer la VM
xbee updémarre l’instance EC2 à partir de l’AMI construite à l’étape précédente, attend qu’elle
soit joignable en SSH, puis exécute les directives up/configure de l’environnement —
aucune ici, l’environnement n’en déclare pas.
Piloter la VM
xbee enter aouvre un shell SSH dans l’instance — a est la clé de l’hôte déclarée dans
xbee-env.yaml. Avec un seul hôte, le nom peut être omis :
xbee enterDepuis ce shell, l’instance se pilote comme n’importe quelle machine Ubuntu :
lsb_release -aArrêter puis détruire la VM
xbee downéteint l’instance (arrêt propre du système), sans la supprimer : elle peut être
redémarrée par un nouvel xbee up, en repartant de la même AMI. Pour la supprimer
réellement (l’instance EC2 elle-même — pas l’AMI, réutilisable par un futur xbee up
sur ce même environnement) :
xbee deletedemande confirmation avant de détruire l’instance ; --force/-f la saute.
Pour aller plus loin
- Ajouter un pack applicatif à cet hôte (
host.a.pack), exactement comme dans Utiliser le pack dans un environnement — la seule différence avec un environnement Docker est le provider déclaré en tête de fichier. - Déclarer un volume de données (
volume:racine +host.a.volume) — voir Environnements. - Toutes les propriétés reconnues dans un
xbee-env.yaml— voir xbee-env.yaml. - Répéter l’hôte (
count) pour plusieurs instances identiques — voir Environnements.