Перейти к содержанию

Часто задаваемые вопросы по использованию API Invapi

В этой статье

Алгоритм заказа моментального сервера с помощью eq/order_instance

  1. Cоздайте клиентский API-ключ;

  2. Определитесь с локацией заказа сервера: RU/NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH (Россия, Нидерланды, США, Финляндия, Германия, Исландия, Турция, Великобритания, Испания, Италия, Польша, Швейцария);

  3. С помощью запроса presets/list определите ID пресета для развертывания.

    Этот ID далее будет использоваться как instance_id или preset). Например при "id": 108 значения instance_id=108 и preset=108;

  4. С помощью запроса os/list определите os_id или os_name нужной к установке операционной системы, используя ID инстанса из п.3 или ее алиас. Например для Ubuntu 22.04 это значение будет определено в ответе на запрос как "id": 187 и "alias": ubuntu. Также ID ОС и информацию, на каких типах серверов она доступна, можно найти в списке текущих поддерживаемых ОС;

    Примечание

    Если вы не хотите ставить на сервер ОС при его развертывании, укажите позже параметр own_os=1.

  5. С помощью запроса software/list определите для данного инстанса возможное к развертыванию программное обеспечение и получите его ID (далее параметр soft_id). Например для СMS Wodrpress в выводе запроса это значение будет "id": 20. Доступное к установке ПО и его параметры для установки (id, тип сервера, необходимые объемы памяти и диска, число ядер процессора и т.п.) можно найти в списке поддерживаемого ПО;

    Примечание

    Вы можете не предустанавливать ПО при развертывании, если хотите сделать это позже самостоятельно.

  6. С помощью запроса traffic_plans/list получите ID тарифного плана сетевого трафика для вашего сервера. Например для плана 3Tb traffic (1Gbps) VM вызов вернет значение "id": 25;

  7. Получите сессионный токен $HOSTKEY_TOKEN через запрос auth/login;

  8. Закажите сервер, вставив в запрос eq/order_instance данные полученые в п.п. 2-7. Обязательно укажите ваш пароль root, период оплаты сервера deploy_period (на месяц, квартал, 6 месяцев или за год), необходимость уведомления на почту о развертывании deploy_notify (рекомендуем ставить true по умолчанию).

По желанию можно указать дополнительные параметры, описаные в вызове eq/order_instance.

Ниже приведен пример заказа сервера с Wordpress (id=20) на Debian 11 (id=108):

пример POST-запроса заказа моментального сервера, cURL

curl -s "https://invapi.hostkey.ru/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" \
Пример положительного ответа
{
    "result": "OK",
    "action": "order_instance",
    "invoice": 50062,
    "status": "Paid"
}

Invapi выберет/создаст соответствующий сервер в определенном месте и продолжит его развертывание. Перед любой установкой будет произведена проверка наличия средств на кредитном счете (при установленном параметре автоплатежей с кредитного баланса) или выставлен счет на оплату. Если установка пройдет успешно, новый сервер будет привязан к учетной записи клиента. По запросу клиент будет уведомлен по электронной почте. Все платные лицензии будут добавлены в качестве дополнений к заказу.

Примечание

При несовместимости выбранной операционной системы и устанавливаемого ПО, вам выдаст сообщение вида:

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

Вам необходимо будет выбрать другую операционную систему (задать другой параметр os_id).

Внимание

Приступить к использованию сервера можно после получения инфрормации об окончании его развертывания по электронной почте или появления статуса Active в разделе Мои сервера панели управления Invapi. При возникновении сбоя в процессе развертывания сервера, на почту будет отправлено уведомление. Развертывание может занять от 20 минут и выше.

Вы можете отслеживать установку и ее статус используя асинхронные действия.

Установка будет завершена успешно, когда вы получите сообщение ассинхронного действия такого рода:

Пример положительного ответа
{
"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"
}

Переустановка сервера через eq/order_instance

Переустановка сервера производится аналогично его заказу и отличается только передачей в запросе eq/order_instance дополнительного параметра id - ID переустанавливаемого сервера из Invapi и неиспользовании параметра preset. При переустановке вы можете выбрать другую операционную систему и предустанавливаемое программное обеспечение или сделать переустановку "с чистого листа", установив параметр own_os=1 (при это обязательно задать os_id = 0).

Внимание

Параметр location_name является обязательным даже при переустановке. Вы должны указать текущую локацию сервера (например, NL или RU), иначе API может вернуть ошибку совместимости ОС.

POST-запрос для переустановки, cURL

curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=order_instance" \
--data "token=$HOSTKEY_TOKEN" \
--data "hostname={Имя хоста}" \
--data "os_id={ID операционной системы}" \
--data "soft_id={ID программного обеспечения}" \
--data "root_pass={пароль root}" \
--data "ssh_key={открытый SSH ключ}" \
--data "post_install_script=" \
--data "own_os=" \
--data "root_size=100" \
--data "location_name={локация сервера с заданным ID}" \
--data "id={ID сервера из Invapi}" // Наличие ID запустит процесс переустановки сервера.

Внимание

Если при запросе переустановки вам выдало сообщение, что сервер с таким ID не найден, обновите список серверов, привязанных к сессионному токену, выполнив запрос eq/update_servers.

Примечание

При несовместимости выбранной операционной системы и устанавливаемого ПО, вам выдаст сообщение вида:

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

Вам необходимо будет выбрать другую операционную систему (задать другой параметр os_id).

Внимание

Вы не можете запустить новую переустановку, если не закончен процесс предыдущей. Иначе вы получите предупреждение:

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

Например мы хотим переставить наш сервер из предыдущего примера на Rocky Linux 9 (id=205) и Grafana (id=18). Запрос будет следующий:

пример POST-запроса для переустановки, cURL

curl -s "https://invapi.hostkey.ru/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"
Пример положительного ответа
{
    "result": "OK",
    "action": "order_instance",
    "callback": "e2fbe5f43796d4139983b695271da9aa", // асинхронный ключ
    "deploy_status": "reinstall",
    "id": 32645,
    "os_name": "RockyLinux 9",
    "soft_name": "Grafana"
}

Внимание

При переустановке данным способом уведомление об ее успешном окончании на электронную почту не присылается! Вам нужно запомнить и сохранить новый пароль root (или использовать прежний пароль сервера), а информацию о доступе к заказанному ПО смотреть в документации Маркетплейса или непосредственно в карточке сервера панели управления Invapi.

Используя данный асинхронный ключ (поле callback), мы можем отследить процесс переустановки, используя асинхронные действия.

Пример ответа об успешном реинстале
{
    "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"
}
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×