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'aliasawlance 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 logindans~/.anhywhere/token. - Le réflexe de vérifier sur votre propre binaire :
aw help <commande>fait autorité sur les drapeaux, etaw version --revisiondit 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.
$ aw version
<version> (revision <revision>, built <date>)
$ aw version --revision
<revision>
$ sha256sum "$(command -v anhywhere)"
<empreinte> anhywherePourquoi 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.
| Drapeau | Ce qu'il fait |
|---|---|
-s, --server <adresse> | Adresse du service interrogé. Indiquez celle de la plateforme quand vous travaillez depuis un poste distant. |
-k, --insecure | Ne vérifie pas le certificat TLS du serveur. |
-v, --verbose | Sortie 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é.
chmod +x anhywhere-client
sha256sum -c anhywhere-client.sha256
mv anhywhere-client ~/.local/bin/anhywhere2.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.
# 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-waitLes drapeaux de `run`, et leurs valeurs par défaut
| Drapeau | Défaut | Ce qu'il fait |
|---|---|---|
-n, --name | exigé | Nom de la machine. |
-t, --template | exigé | Gabarit de départ. |
--cpu | 2 | Nombre de cœurs. |
--mem | 2048 | Mémoire, en Mio. |
--disk | 10240 | Disque, en Mio. La valeur par défaut vaut exactement 10 Gio. |
--network | aucun | Réseaux à rattacher au démarrage. Répétable : --network un --network deux. |
--project | projet personnel | Projet auquel rattacher la machine. |
--timeout | 90 | Secondes d'attente maximale du démarrage. |
--no-wait | faux | Rendre la main sans attendre le démarrage. |
--no-dhcp | faux | Désactiver le DHCP sur les réseaux supplémentaires. |
--no-publish | faux | Ne 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.
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.
$ 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 -$ 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 17005rend le même objet queaw 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 introuvablepour un client en français,Error: API error (404): vm not foundpour 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 parinfosi vous la cherchez.
4.Agir sur une ou plusieurs machines
| Commande | Formes acceptées | Ce qu'il faut savoir |
|---|---|---|
aw start | <nom>… | all | --name <n> | --id <n> | --all | Traite jusqu'à 5 machines en parallèle ; un identifiant numérique passé en argument est compris comme un --id. |
aw stop | idem start | Mêmes formes, même parallélisme. |
aw delete | <nom>… | --name | --id, plus all | Traité en séquence, pas en parallèle. Accepte les motifs globaux (3*), expansés localement. |
aw rename | rename <ancien> <nouveau>, ou --id <n> et -y | La machine doit être arrêtée. Sans --yes, la commande demande une confirmation interactive. |
aw set | set <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.
$ 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, etCtrl+Opour se déconnecter.aw shell --id <n>fait la même chose en désignant la machine par son identifiant.aw shell <nom> --sshouvre une session SSH, une fois la machinerunning.--serialreste 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
$ 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-commande | Forme exacte | Ce qu'il faut savoir |
|---|---|---|
template list | aw template list | Sur 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 convert | aw 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 delete | aw template delete <nom> | Supprime le gabarit et affiche la réponse du serveur. |
template auto-publish | aw 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.
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.
$ 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-portest facultatif : sans lui, le port de l'hôte est choisi automatiquement.--protocolvauttcppar défaut, et accepteudp.--name,--vmet--vm-portsont exigés : la commande les réclame si l'un manque.- Relisez
aw publish listaprès une création : c'est la liste des publications réellement en place.
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.