API хостинг-провайдера: что автоматизируют и когда это нужно

Пока сервер один, панель управления закрывает всё: нажали кнопку, машина создалась. Вопрос об API возникает позже, когда серверов становится несколько, а действия начинают повторяться: поднять окружение под ветку, снять копию перед выкаткой, добавить мощности на время распродажи и убрать после.

Разберём, что вообще умеет API провайдера, какие задачи через него решают на практике, при чём тут Terraform и в какой момент это перестаёт быть игрушкой и начинает экономить время.

Что такое API провайдера

Это способ управлять инфраструктурой не мышкой, а запросами из программы. Всё, что вы делаете в личном кабинете, можно сделать вызовом: создать сервер нужной конфигурации, перезагрузить, снять снапшот, добавить IP-адрес, удалить машину.

Работает это по общему принципу: провайдер выдаёт токен, программа отправляет запрос с этим токеном, в ответ получает результат. Токен привязан к аккаунту и заменяет пароль, поэтому обращаться с ним нужно как с паролем.

Кроме самого API у провайдеров обычно есть два надстроенных инструмента:

  • CLI - утилита командной строки. Тот же API, но вызывается одной командой и удобен в скриптах.
  • Провайдер для Terraform - описание инфраструктуры файлом. Вы задаёте, какие серверы должны существовать, а инструмент приводит реальность к этому описанию.

Что через него автоматизируют

четыре типовых сценария автоматизации и что каждый экономит.
четыре типовых сценария автоматизации и что каждый экономит.

Создание одинаковых окружений. Тестовый стенд под каждую ветку разработки, демо-стенд для клиента, окружение под учебный курс. Руками это десятки одинаковых кликов, скриптом - одна команда, и все стенды гарантированно одинаковые.

Снапшоты по расписанию. Копия перед каждой выкаткой, снапшот раз в сутки, удаление старых по сроку хранения. Резервное копирование перестаёт зависеть от того, вспомнил ли человек, см. резервное копирование VPS.

Масштабирование под нагрузку. Добавить серверов на время распродажи или сезона и убрать после. В связке с почасовой оплатой это прямая экономия: ресурсы существуют ровно столько, сколько нужны.

Инвентаризация и порядок. Список всех серверов с конфигурациями и стоимостью, выгруженный в отчёт. Когда машин больше десятка, это единственный способ не платить за забытые.

При чём тут Terraform

Скрипт на API решает задачу один раз: создал сервер, выполнил, забыл. Terraform работает иначе - он хранит описание того, как инфраструктура должна выглядеть, и при каждом запуске приводит реальность к описанию.

Практическая разница видна в трёх вещах:

  • Инфраструктура лежит в репозитории. Видно, кто и когда что менял, изменения проходят через обычный код-ревью.
  • Одинаковые окружения воспроизводятся. Тестовый контур поднимается из того же описания, что и боевой, отличаясь парой параметров.
  • Ничего не теряется. Забытый сервер, созданный руками мимо описания, становится заметен при следующем запуске.

Обратная сторона - Terraform надо изучить, а описание поддерживать. Для одного-двух серверов это чистые накладные расходы.

Когда это оправдано

Честный ответ: не всегда. Автоматизация имеет смысл, когда экономит больше времени, чем требует на поддержку.

Пока не нужно:

  • один-два сервера, которые меняются раз в полгода;
  • проект без тестового контура;
  • изменения делаются раз в месяц и занимают пять минут.

Уже нужно:

  • серверы регулярно создаются и удаляются;
  • нужны одинаковые окружения под разработку и бой;
  • инфраструктура растёт и падает вслед за нагрузкой;
  • в команде несколько человек, и важно, чтобы изменения были прозрачны.

Разумный порядок - не бросаться сразу в Terraform, а начать со скрипта под самую надоевшую задачу. Обычно это снапшот перед выкаткой или подъём тестового стенда. Если скриптов накопилось много и они начали противоречить друг другу, вот тогда пора переходить к описанию инфраструктуры.

Безопасность токена

Пункт, который недооценивают: токен API даёт над аккаунтом столько же власти, сколько пароль, а иногда больше. Через него можно создать десяток дорогих серверов или удалить существующие вместе с данными.

Базовые правила:

  • Не хранить токен в репозитории. Место токена - переменные окружения или хранилище секретов, см. как выложить приложение на сервер.
  • Отдельный токен под каждую задачу. Скомпрометированный отзывается без остановки всего остального.
  • Минимальные права. Если провайдер позволяет ограничить токен только чтением, для отчётов берите такой.
  • Отзывать вовремя. Токены уволившихся сотрудников и завершённых проектов не должны жить вечно.

Отдельно про удаление: команда на удаление сервера выполняется мгновенно и без вопросов. Скрипт с ошибкой в условии сносит боевую машину так же охотно, как тестовую, поэтому опасные операции стоит выполнять с явным подтверждением, а копии держать вне сервера.

С чего начать

1. Получить токен в личном кабинете и сохранить его в надёжном месте. 2. Сделать безопасный запрос - например, получить список своих серверов. Так проверяется, что доступ работает. 3. Автоматизировать одно действие, которое надоело выполнять руками. 4. Добавить обработку ошибок. Запрос может не пройти, и скрипт должен об этом сообщить, а не молча продолжить. 5. Перейти к описанию инфраструктуры, когда скриптов станет много.

Актуальный список доступных методов всегда смотрят в документации провайдера: наборы возможностей у всех разные, и универсального API для хостинга не существует.

Частые ошибки

Кладут токен в репозиторий. Даже в приватный: доступ к нему шире, чем кажется, а история хранит всё.

Автоматизируют то, что делается раз в год. Скрипт нужно поддерживать, и на редких задачах он обходится дороже ручной работы.

Не проверяют ответы API. Запрос не прошёл, скрипт продолжил, и на выходе получилось не то, что ожидалось.

Удаляют без подтверждения. Ошибка в условии уносит боевой сервер за секунду, и отменить это нельзя.

Начинают с Terraform ради одного сервера. Инструмент для управления парком, а не для единственной машины.

Считают API заменой мониторингу. Он умеет создавать и удалять, но не следит за состоянием, для этого нужен мониторинг.

Частые вопросы

Что даёт API хостинг-провайдера? Возможность управлять серверами из кода: создавать, перезагружать, снимать снапшоты, менять конфигурацию, удалять. Всё то же, что в панели, но без участия человека.

Чем CLI отличается от API? CLI - утилита, которая обращается к тому же API, но вызывается одной командой. Удобна в скриптах и не требует писать запросы вручную.

Зачем нужен Terraform, если есть скрипты? Скрипт выполняет действие, Terraform хранит описание нужного состояния и приводит инфраструктуру к нему. Это даёт воспроизводимость и историю изменений в репозитории.

Нужен ли API для одного сервера? Как правило нет. Панели достаточно, а поддержка скриптов займёт больше времени, чем сэкономит.

Где хранить токен? В переменных окружения или в хранилище секретов, но не в коде и не в репозитории. Токен равен паролю от аккаунта.

Что автоматизируют в первую очередь? Снапшот перед выкаткой и создание тестовых окружений. Это самые частые повторяющиеся действия, и выигрыш заметен сразу.

Можно ли случайно удалить сервер через API? Да, команда выполняется сразу и без подтверждения. Поэтому опасные операции защищают явной проверкой, а резервные копии хранят вне сервера.


Нужен сервер, которым можно управлять из кода? VPS на NVMe от 459 руб в месяц - панель, API, CLI и провайдер Terraform входят в тариф, площадки в Москве, Казани и Амстердаме. Активация за 3 минуты, первые 7 дней - тестовый период с возвратом средств.