Le binaire installé : parc, cycle de vie, console série, gabarits

Ce que la ligne de commande sait faire une fois installée : l'arbre des commandes, la syntaxe et les drapeaux exacts, et les gestes du quotidien sur un parc de machines.

Ligne de commande12 min de lectureUtilisateur à l'aise dans un terminal, qui veut piloter ses machines depuis un script

Ce que vous obtenez : Piloter ses machines depuis un terminal : lire son parc, agir sur une ou plusieurs machines, ouvrir la console série, gérer ses gabarits et publier un port.

Avant de commencer

  • Le client installé : la commande est anhywhere, et l'alias aw lance exactement le même binaire.
  • Un compte sur la plateforme : la très grande majorité des commandes passe par le serveur et exige un jeton, écrit par aw login dans ~/.anhywhere/token.
  • Le réflexe de vérifier sur votre propre binaire : aw help <commande> fait autorité sur les drapeaux, et aw version --revision dit de quelle version il vient.

1.Le binaire, sa version et son empreinte

Tout ce guide décrit le binaire que votre `PATH` trouve, pas un autre. Si plusieurs fichiers portent ce nom sur la machine, c'est celui du PATH qui répond quand vous tapez anhywhere.

Version, révision et empreinte du client installé
$ aw version
<version> (revision <revision>, built <date>)

$ aw version --revision
<revision>

$ sha256sum "$(command -v anhywhere)"
<empreinte>  anhywhere

Pourquoi ces valeurs sont entre chevrons

Parce qu'elles changent à chaque publication du client, et qu'écrire ici celles d'aujourd'hui garantirait qu'elles deviennent fausses à la suivante. La revision identifie la version exacte du client dont votre binaire est issu : c'est elle qui dit s'il est à jour.

Les deux noms du client sont interchangeables

aw est un lien symbolique vers anhywhere : les deux formes lancent le même binaire.

Quatre drapeaux sont globaux : toutes les commandes les acceptent, et l'aide de chacune les rappelle en fin de liste.

DrapeauCe qu'il fait
-s, --server <adresse>Adresse du service interrogé. Indiquez celle de la plateforme quand vous travaillez depuis un poste distant.
-k, --insecureNe vérifie pas le certificat TLS du serveur.
-v, --verboseSortie détaillée.
--config <fichier>Fichier de configuration du client, ~/.anhywhere/config.json par défaut.
Installer le client, et vérifier ce qu'on a téléchargé

La page d'accueil de la plateforme donne la commande d'installation, et l'empreinte du fichier est publiée à côté du binaire : vous pouvez donc contrôler que le fichier reçu est bien celui annoncé.

Rendre le fichier exécutable, contrôler son empreinte, le placer dans le PATH
chmod +x anhywhere-client
sha256sum -c anhywhere-client.sha256
mv anhywhere-client ~/.local/bin/anhywhere

2.Créer une machine : `run`

run crée la machine, rattache les réseaux demandés et attend son démarrage. --name et --template sont exigés ; tout le reste a une valeur par défaut.

Deux créations, avec et sans attente du démarrage
# créer une machine et attendre son démarrage
aw run --name site-vitrine --template ubuntu2404 --cpu 2 --mem 2048 --disk 10240

# rendre la main tout de suite, et suivre le démarrage depuis l'interface
aw run --name api-interne --template ubuntu2404 --no-wait
Les drapeaux de `run`, et leurs valeurs par défaut
DrapeauDéfautCe qu'il fait
-n, --nameexigéNom de la machine.
-t, --templateexigéGabarit de départ.
--cpu2Nombre de cœurs.
--mem2048Mémoire, en Mio.
--disk10240Disque, en Mio. La valeur par défaut vaut exactement 10 Gio.
--networkaucunRéseaux à rattacher au démarrage. Répétable : --network un --network deux.
--projectprojet personnelProjet auquel rattacher la machine.
--timeout90Secondes d'attente maximale du démarrage.
--no-waitfauxRendre la main sans attendre le démarrage.
--no-dhcpfauxDésactiver le DHCP sur les réseaux supplémentaires.
--no-publishfauxNe pas publier automatiquement les ports que le gabarit déclare. Seuls les ports que vous publiez vous-même restent joignables.

Ces valeurs sont celles de votre binaire

`aw help run` les affiche en clair sur le binaire que vous avez : les drapeaux, leurs unités et leurs valeurs par défaut. C'est la référence à consulter avant d'écrire un script.

L'IPv6 s'active après la création

run ne pose pas d'option IPv6. La case « Activer l'IPv6 » du formulaire web s'active depuis la fiche de la machine, une fois celle-ci créée.

Créer la même machine depuis l'interfaceLe formulaire reprend les mêmes champs, avec les limites de votre offre affichées à côté.

3.Lire son parc : `list` et `info`

list n'accepte aucun drapeau en dehors de --help et rend un tableau ; info n'accepte que --id et rend un objet JSON.

Allure de la sortie de `aw list`
$ aw list
ID     NAME          STATE    TEMPLATE     CPU  MEM   IP          NETWORKS
17005  site-vitrine  running  ubuntu2404   1    256   10.0.0.121  -
17004  api-interne   running  ubuntu2404   1    256   10.0.0.119  -
Allure de la sortie de `aw info`
$ aw info site-vitrine
{
  "id": 17005,
  "name": "site-vitrine",
  "template": "ubuntu2404",
  "state": "running",
  "cpu": 1,
  "mem_mib": 256,
  "disk_mib": 2048,
  "ip_address": "10.0.0.121",
  "pending_restart": false
}
  • Un argument entièrement numérique est compris comme un identifiant : aw info 17005 rend le même objet que aw info site-vitrine.
  • Un nom inconnu donne un code de sortie 1, et un message dans la langue d'affichage du client : Error: API error (404): VM introuvable pour un client en français, Error: API error (404): vm not found pour un client en anglais.
  • Pour un script, utilisez info : il rend du JSON, que vous découpez sans dépendre de la mise en colonnes.
  • L'adresse IPv6 n'est pas dans list : passez par info si vous la cherchez.
Comparer avec la liste de l'interfaceLes mêmes machines, avec leur état poussé en direct.

4.Agir sur une ou plusieurs machines

CommandeFormes acceptéesCe qu'il faut savoir
aw start<nom>… | all | --name <n> | --id <n> | --allTraite jusqu'à 5 machines en parallèle ; un identifiant numérique passé en argument est compris comme un --id.
aw stopidem startMêmes formes, même parallélisme.
aw delete<nom>… | --name | --id, plus allTraité en séquence, pas en parallèle. Accepte les motifs globaux (3*), expansés localement.
aw renamerename <ancien> <nouveau>, ou --id <n> et -yLa machine doit être arrêtée. Sans --yes, la commande demande une confirmation interactive.
aw setset <nom> ou --id <n>, plus au moins une ressource--cpu, --mem, --disk, --kernel et --restart. --restart redémarre la machine pour appliquer le noyau.

start, stop et delete impriment une ligne par machine, avec le verdict de chacune. set ne modifie rien tant que le serveur n'a pas accepté la demande.

Relisez l'état après une opération de masse

Sur une opération qui touche plusieurs machines, le récapitulatif peut être partiel. La lecture qui fait foi est celle de votre parc : aw list juste après, et aw info <nom> pour une machine précise.

`all` vise toutes vos machines, et la commande le redemande

aw delete all, comme aw start all et aw stop all, désigne toutes les machines de votre projet personnel. Avant d'agir, la commande demande une confirmation ; hors d'un terminal, elle refuse et réclame --yes. Relisez aw list avant de le lancer.

5.La console série, quand la machine ne répond plus

aw shell sert à deux choses très différentes. Par défaut il ouvre la console série de la machine, par WebSocket ; avec --ssh, il ouvre une session SSH. C'est le mode série qui sauve une machine sans réseau : il ne dépend ni du sshd ni de l'adresse IP.

Début de la sortie de `shell --serial`
$ echo "" | aw shell site-vitrine --serial
[  OK  ] Reached target Multi-User System.
[  OK  ] Reached target Graphical Interface.
… (la console rejoue le démarrage de la machine, puis rend la main)
Les trois formes de `shell`, et ce que chacune demande
  • aw shell <nom> ouvre la console série par défaut : sortie brute, codes de couleur compris, et Ctrl+O pour se déconnecter.
  • aw shell --id <n> fait la même chose en désignant la machine par son identifiant.
  • aw shell <nom> --ssh ouvre une session SSH, une fois la machine running. --serial reste accepté et désigne le même mode que le défaut.

Choisir le bon mode selon le gabarit

Le mode SSH suppose que la machine fasse tourner un serveur SSH et dispose d'une adresse. C'est le cas des gabarits qui l'installent ; la console série, elle, est le mode par défaut et donne accès à la machine dès qu'elle est démarrée, indépendamment du réseau.

Le mode série devine le moment où la machine est prête

Quand l'entrée n'est pas un terminal, la commande reconnaît une invite (# , $ , ~#, ~$) pour savoir quand envoyer la ligne suivante. Dans un script, envoyez un marqueur improbable : echo MARQUEUR-FIN, puis cherchez ce texte dans la sortie.

6.Les gabarits : lire, convertir, supprimer

L'arbre du groupe `template`, et la liste des gabarits
$ aw template --help
Available Commands:
  auto-publish Set the ports published automatically when this template is deployed as a VM
  convert      Convert a VM into a reusable template
  delete       Delete a template
  list         List available templates

$ aw template list
api-interne
site-vitrine
ubuntu2404
Sous-commandeForme exacteCe qu'il faut savoir
template listaw template listSur un terminal, un tableau : nom, nombre de machines, date de création et provenance. La provenance distingue les gabarits de la plateforme des vôtres. Redirigée vers un fichier ou un tube, la commande écrit un nom par ligne, pour les scripts.
template convertaw template convert <machine> [--name <nom>]Arrête la machine, la fige en gabarit, puis la redémarre. Sans --name, le gabarit prend le nom de la machine.
template deleteaw template delete <nom>Supprime le gabarit et affiche la réponse du serveur.
template auto-publishaw template auto-publish <nom>Choisit les ports publiés automatiquement quand ce gabarit est déployé en machine.

L'aide du groupe est la référence

Ces quatre sous-commandes sont exactement celles de aw help template, que aw template --help affiche. Consultez-la avant d'écrire un script.

Retrouver vos gabarits dans l'interfaceLa même liste, avec la taille des disques et les machines issues de chaque gabarit.

7.Publier un port depuis le terminal

La publication expose un port d'une machine sur l'hôte. publish create la crée, publish list montre les publications en cours, publish delete les retire.

`publish create --help` et `publish list`
$ aw publish create --help
  -H, --host-port int     Host port (auto-assigned if not specified)
  -n, --name string       Publish entry name (required)
      --protocol string   Protocol (tcp/udp) (default "tcp")
  -m, --vm string         VM name (required)
  -p, --vm-port int       VM port (required)

$ aw publish list
No publish entries found.
  • --host-port est facultatif : sans lui, le port de l'hôte est choisi automatiquement.
  • --protocol vaut tcp par défaut, et accepte udp.
  • --name, --vm et --vm-port sont exigés : la commande les réclame si l'un manque.
  • Relisez aw publish list après une création : c'est la liste des publications réellement en place.
Gérer les publications de la machine dans l'interfaceLes mêmes entrées, avec le domaine et le certificat quand la publication en a un.

Les pièges, en résumé

Le nom du binaire est `anhywhere`, l'alias `aw`

Les deux formes lancent le même fichier : aw est un lien symbolique installé à côté de anhywhere.

Vérifiez votre binaire avant de suivre un exemple

aw help <commande> fait autorité sur les drapeaux, leurs unités et leurs valeurs par défaut, et aw version --revision dit de quelle version il vient. Une version différente peut annoncer d'autres valeurs.

Relisez l'état après une opération de masse

Après un start, un stop ou un delete portant sur plusieurs machines, la lecture qui fait foi est aw list, et aw info <nom> pour une machine précise.

`all` vise toutes vos machines

aw delete all désigne toutes les machines de votre projet personnel, et la commande demande une confirmation avant d'agir. Relisez aw list avant de le lancer.

La console série déconnecte par `Ctrl+O`, pas par `Ctrl+C`

La commande l'annonce à la connexion, et l'aide de shell le répète. Ctrl+C n'est pas le chemin prévu.

Dans un script, envoyez un marqueur plutôt que de compter sur une invite

Le mode --serial reconnaît une invite pour savoir quand la machine est prête. Envoyez echo MARQUEUR-FIN et cherchez ce texte dans la sortie : il ne peut pas apparaître par hasard.

Vérifiez l'empreinte du binaire téléchargé

L'empreinte est publiée à côté du binaire et se contrôle avec sha256sum -c. Un nom de fichier ne prouve pas un contenu.

Ce guide est-il a jour ?

Chaque affirmation de cette page a ete verifiee sur le produit avant publication, et ce qui n'etait pas verifie n'a pas ete ecrit. Une page peut cependant vieillir avant le produit : si un ecran ne correspond plus a ce que vous voyez, dites-le, la page sera reprise.

Prêt à créer vos premières VMs ?

30 secondes d'inscription. 2 secondes pour la première VM. Zéro engagement.