Cas pratiques

Créer et piloter une VM Ubuntu sur GCP

Un environnement à un hôte, sans pack applicatif : construire l'image, démarrer l'instance Compute Engine, y ouvrir un shell, puis la détruire.

Ce tutoriel crée un environnement xbee à un seul hôte — une instance Compute Engine 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. Il suit exactement la même suite de commandes que Créer et piloter une VM Ubuntu sur AWS : seuls le provider déclaré et ses champs propres changent — voir Providers & volumes.

Prérequis : les identifiants GCP

Le binaire du provider gcp s’appuie a priori sur le mécanisme standard d’authentification du SDK Google Cloud (Application Default Credentials) — comme la CLI gcloud officielle. Le plus simple est :

gcloud auth application-default login

qui écrit des identifiants dans ~/.config/gcloud/application_default_credentials.json, utilisés par défaut par tout SDK Google Cloud sur la machine — sans qu’il soit besoin de les référencer explicitement dans xbee-env.yaml ou xbee-secret.yaml.

Ce point n’a pas pu être vérifié dans le code de xbee lui-même : le binaire du provider gcp est un dépôt séparé. Si l’authentification échoue malgré des identifiants ADC valides, un compte de service dédié (GOOGLE_APPLICATION_CREDENTIALS pointant vers sa clé JSON) reste l’alternative standard à essayer.

Créer l’environnement

mkdir vm-gcp
cd vm-gcp
xbee new env -p gcp -s ubuntu:24.04

Le xbee-env.yaml généré

schema-version: "1.0"
provider:
  name: gcp
default:
  host:
    system: ubuntu:24.04
    net: xbee-net

host: a

default.host.provider — les champs propres à GCP, voir Providers & volumes — n’est pas toujours pré-rempli par le scaffold : à ajouter à la main si besoin, sans image.project/image.family, résolus automatiquement depuis le pack système (ubuntu:24.04) :

default:
  host:
    system: ubuntu:24.04
    net: xbee-net
    provider:
      projectId: mon-projet-gcp
      zone: europe-west9-b
      instanceType: e2-medium
      size: 20

host: a
  • projectId est le projet GCP cible ; zone sa zone ; instanceType le gabarit de machine ; size la taille (en Go) du disque racine.
  • host: a déclare un unique hôte, sans pack : rien d’autre que le système ubuntu:24.04 n’y est installé.

Construire l’image

xbee pack

xbee démarre une instance Compute Engine temporaire, y installe le système requis, capture le résultat en image, puis détruit cette instance temporaire. Cette image 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 tant que cette étape n’a pas été faite.

Démarrer la VM

xbee up

démarre l’instance à partir de l’image 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.

Piloter la VM

xbee enter a

ouvre 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 enter).

lsb_release -a

Arrêter puis détruire la VM

xbee down

éteint l’instance sans la supprimer : un nouvel xbee up la redémarre, en repartant de la même image. Pour supprimer l’instance elle-même (pas l’image, réutilisable par un futur xbee up) :

xbee delete

demande confirmation ; --force/-f la saute.

Pour aller plus loin