В этой статье объясняем, зачем нужны инструменты автоматизации API и CLI и как с их помощью управлять инфраструктурой на примере Serverspace.

Что такое CLI?

CLI (Command Line Interface) или интерфейс командной строки – инструмент для работы пользователя с программой с помощью команд. 

Что такое API?

API (Application Programming Interface) или программный интерфейс приложений – это способ взаимодействия одной программы с другой, когда элементы одного приложения используются внутри другого.

Из определений сложно понять, что же делать дальше с этими инструментами, поэтому рассмотрим подробнее каждый из них.

CLI

Язык команд был единственным способом взаимодействия с компьютером до появления всем знакомых графических интерфейсов. Несмотря на это сегодня командная строка по-прежнему остается важным инструментом, как быстрый доступ к необходимым функциям компьютера / сервера.

Принцип работы CLI

Пользователь вводит текстовые команды в строку интерфейса и ждет ответ от компьютера. В это время инструмент переводит запросы в понятные для операционной системы функции и выдает ответ. Команды в CLI могут состоять как из одного слова, так и из нескольких строк, известных как сценарии.

Например, с помощью интерфейса командной строки Serverspace вы можете получить объем созданного диска:

>s2ctl server get-volume l1s12345 --volume-id 20210

*s2ctl – название утилиты Serverspace, которая дает возможность контролировать вашу инфраструктуру в терминале.

В результате, вы получите подробные данные о сервере:

id: 20210
name: boot
server_id: l1s12345
size_mb: 25600
created: '1970-01-01T0:00:00.0000000Z'

Инструмент CLI полезен для автоматизации рутинных задач. Вы или ваша команда разработчиков можете написать список команд, которые компьютер будет выполнять в выбранное время или в ситуации по вашему выбору. 

CLI позволяет делать все, что доступно в графическом интерфейсе панели управления Serverspace, только с помощью быстрых команд и строки ввода.

API

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

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

Для начала работы необходимо получить доступ к API с помощью данных для авторизации (API-ключ, пароль, Secret key). Например, для работы с Serverspace API пользователем создается API-ключ для проекта, который в дальнейшем необходимо передавать при каждом запросе в заголовке X-API-KEY:

-H "X-API-KEY: lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r"

Принцип работы

Специалисты компании mulesoft приводят наглядный пример, как работает API – его сравнивают с рестораном. Представьте, вы сидите за столом и выбираете блюдо. Кухня выступает частью «системы», которая будет готовить ваш заказ. Но не хватает связующего звена, чтобы передать заказ на кухню и доставить еду к вашему столу. Здесь появляется официант, в нашем случае API, который принимает ваш запрос или заказ и сообщает кухне (т.е. системе), что делать. Затем он отдает вам ответ в виде вкусной еды.

Например, вы хотите получить детальную информацию о сервере. Вы делаете «заказ» с помощью запроса:

curl -X GET \
https://api.serverspace.ru/api/v1/servers/{server_id} \
  -H 'content-type: application/json' \
  -H 'x-api-key: lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r'

Serverspace API принимает этот запрос, относит на «кухню» и возвращает ответ в виде информации про сервер.

{
  "server": {
    "id": "l1s2400",
    "location_id": "am2",
    "cpu": 1,
    "ram_mb": 1024,
    "volumes": [
      {
        "id": 2977,
        "name": "boot",
        "size_mb": 25600,
        "created": "2020-11-12T09:09:30.46252"
      },
      {
        "id": 2978,
        "name": "additional",
        "size_mb": 30720,
        "created": "2020-11-12T09:36:34.376165"
      }
    ],
    "nics": [
      {
        "id": 3024,
        "network_id": "l1n1",
        "mac": "ca:05:27:ff:56:89",
        "ip_address": "45.14.48.218",
        "mask": 28,
        "gateway": "45.14.48.209",
        "bandwidth_mbps": 50
      },
      {
        "id": 3025,
        "network_id": "l1n368",
        "mac": "ca:05:1a:50:f6:07",
        "ip_address": "10.0.0.1",
        "mask": 24,
        "bandwidth_mbps": 1024
      }
    ],
    "image_id": "CentOS-7.7-X64",
    "is_power_on": true,
    "name": "public-api",
    "login": "root",
    "password": "EuvzlqK6pv",
    "ssh_key_ids": [
      223,
      224
    ],
    "state": "Active",
    "created": "2020-11-12T09:09:54.6478655Z",
    "tags": [
      "production",
      "elastic"
    ],
    "application_ids": [
      "nginx",
      "gitlab",
      "wordpress"
    ]
  }
}

Или например, чтобы изменить конфигурацию сервера, необходимо ввести более сложный запрос, так как здесь передается тело запроса (CPU и RAM). Запрос будет выглядеть так:

curl -X PUT \
  https://api.serverspace.ru/api/v1/servers/{server_id} \
  -H 'content-type: application/json' \
  -H 'x-api-key: lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r' \
-d '{
"cpu": 4,
"ram_mb": 4096
}’

В результате возвращается ID задачи, по которой можно отследить процесс изменения настроек VPS и его ID.

{
"task_id": "lt17499"
}

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

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

Оба инструмента позволяют автоматизировать процесс работы с виртуальными машинами Serverspace и получать быстрые ответы на запросы, не заходя в панель управления. Вот, что вы можете делать с их помощью:

  • управлять виртуальными машинами;

  • просматривать детали сервера и управлять его питанием;

  • масштабировать конфигурацию виртуальной машины;

  • подключать сети;

  • управлять SSH-ключами;

  • управлять снимками;

  • создавать и удалять пограничные шлюзы, настраивать правила NAT и Firewall;

  • просматривать детали проекта в панели управления;

  • создавать и удалять доменное имя;

  • управлять DNS-записями.

Комментарии (0)