Référence des commandes

Chaque groupe de commandes, ce qu'il fait, et la page où il est expliqué en détail.

Toutes les commandes acceptent --help. Cette page est l'index ; les pages vers lesquelles elle renvoie donnent le détail, et le terminal est toujours à jour.

Pour installer la CLI, voir Installer la CLI.

Options globales

Elles se placent avant le nom de la commande :

isogrid --api https://api.isogrid.skyvault.pro apps list
Option
--api URL Le point d'accès à utiliser, au lieu de celui auquel vous vous êtes connecté en dernier.
--organization SLUG Agir dans cette organisation. Ce doit être celle à laquelle l'identifiant est rattaché.

Et les variables d'environnement, pour les scripts et les pipelines :

Variable
ISOGRID_API_URL Point d'accès à utiliser.
ISOGRID_TOKEN Identifiant à utiliser, au lieu de celui qui est enregistré. Jamais écrit sur le disque.
ISOGRID_ORGANIZATION Organisation dans laquelle agir.
ISOGRID_CONFIG_HOME Où conserver config.json. Par défaut ~/.isogrid.
ISOGRID_INSTALL_DIR Où les installateurs placent le binaire.
NO_COLOR Désactive les couleurs. Elles sont aussi désactivées dès que la sortie n'est pas un terminal.

Les éléments se désignent par leur slug, leur nom ou leur identifiant, et les options peuvent venir avant ou après les noms : isogrid apps deploy shop --wait et isogrid apps deploy --wait shop sont la même commande.

Se connecter

isogrid login              # opens a browser, approves this machine
isogrid logout [--revoke]  # forgets the credential here; --revoke withdraws it on the server too
isogrid whoami             # who you are, where, and what this credential may do
isogrid orgs list          # the organizations you belong to, and which one is pinned
isogrid auth credentials   # every credential issued for your account
isogrid auth revoke <id>   # revoke one (from a browser session only)

login accepte --scope a,b pour ne demander que certaines permissions, --name pour nommer l'identifiant, --no-browser pour afficher l'adresse au lieu de l'ouvrir, et --force pour remplacer un identifiant que vous avez déjà.

Un identifiant est rattaché à une seule organisation : celle que vous consultiez dans le navigateur au moment de l'approuver. Il n'existe volontairement pas de orgs use : une commande qui semblerait changer d'organisation puis agirait ailleurs serait pire que pas de commande du tout. Pour travailler ailleurs, changez d'organisation dans la console web et lancez isogrid login --force.

Un identifiant ne détient jamais plus que vous. Ce que vous approuvez est un plafond, vérifié à chaque fois par rapport à votre rôle. Certaines choses lui sont toujours interdites : la facturation, la nomination d'administrateurs, et la création ou la révocation d'identifiants. Voir Rôles, groupes de permissions et accès.

Révoquez tout ce que vous ne reconnaissez pas, ainsi que l'identifiant de toute machine que vous ne contrôlez plus. La révocation prend effet immédiatement.

Applications : isogrid apps

isogrid apps list
isogrid apps get <app> [--exact]
isogrid apps create --name NAME --url REPO_URL|IMAGE_REF [flags]
isogrid apps create --name NAME --external-image REF [--registry NAME] [flags]
isogrid apps update <app> [flags] [--deploy [--ref REF]]
isogrid apps build <app> [--ref REF]
isogrid apps deploy <app>
isogrid apps stop <app> | start <app>
isogrid apps status <app>
isogrid apps scale <app> [--replicas N] [--tier SIZE]
isogrid apps tiers <app>
isogrid apps logs <app> [--follow]
isogrid apps logs <app> --search QUERY [--since 1h] [--limit N]
isogrid apps env <app>
isogrid apps secrets <app>
isogrid apps delete <app> [--yes]

La création depuis GitHub, GitLab ou une image, l'environnement et les secrets, la fusion ou le remplacement, et ce que --wait considère comme un échec : Automatiser les applications.

Fichiers de stack : isogrid stack

isogrid stack preview (-f FILE|DIR... | --repo REPO [--provider github|gitlab] [--ref REF] --path PATH...)
    [--stack NAME] [--region REGION] [--var KEY=VALUE]... [--var-file PATH] [--json]
isogrid stack apply (-f FILE|DIR... | --repo REPO [--provider github|gitlab] [--ref REF] --path PATH...)
    [--stack NAME] [--var KEY=VALUE]... [--size [FILE:]SERVICE=TIER]...
    [--registry [FILE:]SERVICE=NAME]... [--network [FILE:]SERVICE=NAME]... [--placement [FILE:]SERVICE=CONSTRAINT]...
    [--port [FILE:]SERVICE=N]... [--skip [FILE:]SERVICE]... [--no-deploy] [--wait] [--timeout 20m]

Déploie un fichier docker-compose ou docker stack, une application par service, nommée <stack>-<service> ; appliquer à nouveau les met à jour. env_file n'est pas lu et les volumes ne sont pas montés. Ce qui est appliqué, et comment le placement et les registres sont choisis : Déployer un fichier de stack.

-f accepte un dossier et se répète ; --repo/--path lisent plutôt un dépôt connecté. Avec plusieurs fichiers, --stack est un préfixe (<préfixe>-<nom du fichier>) et FILE:SERVICE=... vise un seul fichier.

Registres de conteneurs : isogrid registries

isogrid registries list
isogrid registries add --name NAME --kind KIND [--host HOST] --username USER --password-stdin [--no-verify]
isogrid registries update <registry> [--name NAME] [--username USER] [--password-stdin]
isogrid registries test <registry>
isogrid registries remove <registry> [--yes]

registries répond aussi à registry. Le mot de passe ou le jeton est lu sur l'entrée standard ou dans ISOGRID_REGISTRY_PASSWORD, jamais dans une option. Voir Autres registres de conteneurs.

Déployer depuis la CI/CD : isogrid ci

isogrid ci init github|gitlab [--app NAME] [--cluster REGION] [--output PATH]

Génère un pipeline prêt à être commité, qui déploie à chaque push. La création d'un identifiant pour ce pipeline, les modèles complets, et quoi faire quand un job échoue : Déployer depuis la CI/CD.

Dépôts : isogrid repos

isogrid repos list
isogrid repos access <repo> --visibility private|administrators|organization|inherit
isogrid repos grant <repo> (--member EMAIL | --group SLUG) --preset NAME
isogrid repos grants <repo>
isogrid repos revoke <repo> <grant>

Membres et groupes : isogrid iam

isogrid iam members
isogrid iam groups list | get | create | update | delete
isogrid iam groups add-member <group> <email>
isogrid iam groups remove-member <group> <email>
isogrid iam permissions

Les deux sont expliqués avec des exemples dans Dépôts, groupes et accès.

Bases de données : isogrid database

isogrid database list
isogrid database instances
isogrid database create <name> [--instance ID]

database répond aussi au nom db.

Les identifiants de connexion ne sont affichés qu'une fois, à la création de la base de données, et ne peuvent plus être récupérés ensuite. Si vous l'automatisez dans un script, capturez la sortie ; si vous les perdez, créez-en de nouveaux. Voir Bases de données.

Régions : isogrid regions

isogrid regions list [--all]

Par défaut, seules les régions qui acceptent du travail sont listées. Une région en cours de vidage continue de servir ce qui s'y trouve déjà, mais n'accepte rien de nouveau. --all affiche tout ce à quoi vous avez accès.

Documentation : isogrid docs

isogrid docs search <term> [--language en|fr|ar]
isogrid docs show <section>/<slug> [--language en|fr|ar]
isogrid docs list [--section guide]

Ces commandes fonctionnent sans connexion. docs show affiche le Markdown tel qu'il est écrit : une commande copiée depuis une page est donc bien la commande. Les messages d'information vont sur la sortie d'erreur standard, si bien que isogrid docs show guide/databases > databases.md produit un fichier propre.

La CLI elle-même

isogrid update [--check]   # replace this executable with the platform's current build
isogrid version

Voir Installer la CLI.

Sortie pour les scripts

La plupart des commandes acceptent --json et affichent la réponse de l'API sans la modifier. Tout ce qu'une personne lit et qu'un script ne lit pas — progression, invites, conseils — va sur la sortie d'erreur standard, si bien que isogrid apps list --json | jq fonctionne sans avoir à filtrer de bruit.

Codes de sortie : 0 succès, 1 échec (y compris un déploiement échoué ou annulé sous --wait), 2 une erreur d'utilisation, ou une commande destructrice lancée sans --yes et sans terminal pour la confirmer.

Cas particuliers à connaître avant d'y être confronté

« not signed in » sur une machine où vous vous êtes connecté. Les identifiants sont propres à chaque point d'accès. Si vous avez passé --api une fois, vous vous êtes connecté à ce point d'accès, et celui par défaut reste anonyme.

Une erreur de permission que la console web ne vous donne pas. Un identifiant de la CLI peut être approuvé avec une portée plus restreinte que celle de votre compte. isogrid whoami montre ce que celui-ci porte ; isogrid login --force en autorise un plus large.

Votre identifiant a expiré. Reconnectez-vous ; rien d'autre n'est affecté.

Une commande reste bloquée. --follow est fait pour rester attaché, et --wait attend jusqu'à --timeout. Une interruption annule la requête en cours plutôt que de tuer le processus au milieu d'une écriture : Ctrl-C est donc sans danger.

Un script fonctionne en interactif et échoue en CI. C'est presque toujours l'identifiant : ISOGRID_TOKEN n'est pas défini, ou il est rattaché à une autre organisation. Faites de isogrid whoami la première étape du pipeline. Voir Déployer depuis la CI/CD.