Aller au contenu

FAQ de l'API Invapi

Dans cet article

Algorithme de commande de serveur instantanée avec eq/order_instance

  1. Créez une client API key ;

  2. Choisissez la localisation du serveur : NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH (Pays-Bas, USA, Finlande, Allemagne, Islande, Turquie, Royaume-Uni, Espagne, Italie, Pologne, Suisse) ;

  3. Utilisez la requête presets/list pour déterminer l'ID du preset pour le déploiement.

    Cet ID sera utilisé ultérieurement comme instance_id ou preset. Par exemple, si "id": 108, les valeurs sont instance_id=108 et preset=108 ;

  4. Utilisez la requête os/list;

    Remarque

    Si vous ne souhaitez pas installer d'OS lors du déploiement, spécifiez own_os=1 ultérieurement.

  5. Utilisez la requête software/list pour identifier les logiciels disponibles pour cette instance et obtenir son ID (le paramètre soft_id). Par exemple, pour le CMS WordPress, la valeur dans la sortie de la requête sera "id": 20. Vous pouvez trouver une liste des logiciels installables et leurs paramètres d'installation (ID, type de serveur, RAM et espace disque requis, nombre de cœurs CPU, etc.) dans la liste des logiciels supportés ;

    Remarque

    Vous pouvez ignorer la pré-installation de logiciels lors du déploiement si vous souhaitez le faire manuellement plus tard.

  6. Utilisez la requête traffic_plans/list pour obtenir l'ID du plan de trafic réseau pour votre serveur. Par exemple, pour le plan 3Tb traffic (1Gbps) VM, l'appel retournera "id": 25 ;

  7. Obtenez un jeton de session $HOSTKEY_TOKEN via la requête auth/login ;

  8. Commandez le serveur en insérant les données obtenues aux étapes 2 à 7 dans la requête eq/order_instance. Vous devez spécifier votre root password, la période de facturation du serveur deploy_period (mensuelle, trimestrielle, 6 mois ou annuelle), et si vous souhaitez recevoir une notification par e-mail lors du déploiement via deploy_notify (nous recommandons de régler ceci sur true par défaut).

Des paramètres supplémentaires optionnels peuvent être spécifiés comme décrit dans l'appel eq/order_instance.

Voici un exemple de commande d'un serveur avec WordPress (id=20) sur Debian 11 (id=108) :

Exemple de requête POST pour une commande de serveur instantanée, cURL

curl -s "https://invapi.hostkey.com/eq.php" -X POST \
--data "action=order_instance" \
--data "token=eeee51003b1d81d2eca65660735c0531" \
--data "deploy_period=monthly" \
--data "deploy_notify=true" \
--data "preset=108" \
--data "location_name=NL" \
--data "os_id=180" \
--data "soft_id=20" \
--data "traffic_plan=25" \
--data "root_pass=mdLus8Ng" \
Exemple de réponse positive
{
    "result": "OK",
    "action": "order_instance",
    "invoice": 50062,
    "status": "Paid"
}

Invapi sélectionnera/créera le serveur correspondant dans la localisation spécifiée et procédera au déploiement. Avant toute installation, une vérification des fonds suffisants sur le solde de crédit sera effectuée (si les paiements automatiques depuis le solde de crédit sont activés) ou une facture sera émise. Si l'installation réussit, le nouveau serveur sera lié au compte du client. Le client sera notifié par e-mail sur demande. Toutes les licences payées seront ajoutées en tant qu'options à la commande (order add-ons).

Remarque

S'il existe une incompatibilité entre le système d'exploitation sélectionné et le logiciel en cours d'installation, vous recevrez un message de ce type :

{
"result": -1,
"error": "reinstall: extra software Odoo (#49) is not compatible with Ubuntu 22.04"
}

Vous devrez sélectionner un système d'exploitation différent (définir un paramètre os_id différent).

Attention

Vous pouvez commencer à utiliser le serveur après avoir reçu une notification par e-mail indiquant que le déploiement est terminé ou lorsque le statut Active apparaît dans la section My Servers du panneau de contrôle Invapi. Si une erreur survient pendant le processus de déploiement du serveur, une notification sera envoyée à votre adresse e-mail. Le déploiement peut prendre 20 minutes ou plus.

Vous pouvez suivre l'installation et son statut en utilisant les actions asynchrones.

L'installation sera terminée avec succès lorsque vous recevrez un message d'action asynchrone comme celui-ci :

Exemple de réponse positive
{
"result": "OK",
"scope": "Autodeploy completed, check VRI-208-64405",
"context": {
    "action": "deploy_vm",
    "id": "32645",
    "location": "NL",
    "ip": "176.222.34.23",
    "ip_ipmi": "0.0.0.0"
},
"debug": "0",
"key": "9889fcb51255146e04224205c04976e8"
}

Réinstaller un serveur via eq/order_instance

La réinstallation d'un serveur s'effectue de la même manière que la commande d'un serveur ; elle diffère uniquement par le passage d'un paramètre id supplémentaire dans la requête eq/order_instance — l'ID du serveur à réinstaller depuis Invapi — et par la non-utilisation du paramètre preset. Lors d'une réinstallation, vous pouvez choisir un système d'exploitation différent et des logiciels préinstallés, ou effectuer une réinstallation "propre" en définissant le paramètre own_os=1 (auquel cas vous devez définir os_id = 0).

Attention

Le paramètre location_name est obligatoire même lors d'une réinstallation. Vous devez spécifier la localisation actuelle du serveur (ex: NL ou US), sinon l'API peut retourner une erreur de compatibilité d'OS.

Requête POST pour la réinstallation, cURL

curl -s "https://invapi.hostkey.com/eq.php" -X POST \
--data "action=order_instance" \
--data "token=$HOSTKEY_TOKEN" \
--data "hostname={Hostname}" \
--data "os_id={OS ID}" \
--data "soft_id={Software ID}" \
--data "root_pass={root password}" \
--data "ssh_key={public SSH key}" \
--data "post_install_script=" \
--data "own_os=" \
--data "root_size=100" \
--data "location_name={Server location with specified ID}" \
--data "id={Invapi Server ID}" // La présence de l'ID déclenche le processus de réinstallation du serveur.

Attention

Si vous recevez un message indiquant qu'aucun serveur avec cet ID n'a été trouvé lors d'une requête de réinstallation, actualisez la liste des serveurs liés à votre jeton de session en appelant eq/update_servers.

Remarque

S'il existe une incompatibilité entre le système d'exploitation sélectionné et le logiciel en cours d'installation, vous recevrez un message de ce type :

{
"result": -1,
"error": "reinstall: extra software Odoo (#49) is not compatible with Ubuntu 22.04"
}

Vous devrez sélectionner un système d'exploitation différent (définir un paramètre os_id différent).

Attention

Vous ne pouvez pas démarrer une nouvelle réinstallation si le processus précédent n'est pas terminé. Sinon, vous recevrez un avertissement :

{"result":-1,"error":"another reinstall in progress for XXXXX, please wait"}

Par exemple, supposons que nous voulions réinstaller notre serveur de l'exemple précédent vers Rocky Linux 9 (id=205) et Grafana (id=18). La requête serait la suivante :

Exemple de requête POST pour une réinstallation, cURL

curl -s "https://invapi.hostkey.com/eq.php" -X POST \
--data "action=order_instance" \
--data "token=5e731472b19f25c7fe61c9eb5c2ea4e3" \
--data "deploy_notify=true" \
--data "os_id=205" \
--data "soft_id=18" \
--data "root_pass=mnN48Dl@4" \
--data "location_name=NL" \
--data "id=32645"
Exemple de réponse positive
{
    "result": "OK",
    "action": "order_instance",
    "callback": "e2fbe5f43796d4139983b695271da9aa", // clé asynchrone
    "deploy_status": "reinstall",
    "id": 32645,
    "os_name": "RockyLinux 9",
    "soft_name": "Grafana"
}

Attention

Lors d'une réinstallation utilisant cette méthode, aucune notification par e-mail n'est envoyée une fois la procédure terminée avec succès ! Vous devez vous souvenir et sauvegarder le nouveau root password (ou utiliser le mot de passe existant du serveur), et vous pouvez trouver les informations d'accès pour le logiciel installé dans la documentation du Marketplace ou directement dans la fiche du serveur au sein du panneau de contrôle Invapi.

En utilisant cette clé asynchrone (le champ callback), nous pouvons suivre le processus de réinstallation en utilisant les actions asynchrones.

Exemple de réponse pour une réinstallation réussie
{
    "result": "OK",
    "scope": "{"result":"deploy_done"}",
    "context": {
        "action": "reinstall_vm",
        "id": "32645",
        "location": "NL",
        "ip": "176.222.34.23",
        "ip_ipmi": "0.0.0.0",
        "reinstall": 1
    },
    "debug": "",
    "key": "a129bad13781bdf5790746064aba0af6"
}