Всем API: Как облегчить процесс работы с облаком из внешних приложений

от автора

В нашем блоге мы уже рассказывали про API проекта 1cloud, которое используется для интеграции клиентских приложений с нашим облаком и облегчает работать с облачной инфраструктурой. В сегодняшнем материале мы расскажем о некоторых реальных кейсах использования этого открытого интерфейса.

Схема работы

Вкратце расскажем о принципах работы нашего открытого интерфейса. Для удобства работы с серверами из сторонних приложений мы реализовали REST API. В инфраструктуре 1cloud при выполнении пользователем действий в графическом интерфейсе не происходит никаких обработок, вместо этого формируется задание на выполнение нужного действия специальным обработчиком (подробнее об этой схеме мы рассказывали в этом материале).

В API также используется этот механизм: когда клиентское приложение посылает запрос к API, то система формирует задание, которое передается обработчику, и уже затем происходит выполнение. Отслеживать состояние конкретной задачи можно с помощью специальных запросов (о них ниже).

Авторизация приложения для работы с API происходит с помощью вставки в заголовок запроса токена (закрытого ключа), данная схема безопасна, т.к. используется SSL-шифрование. Токен можно сгенерировать в панели управления:

Для кого все это

С помощью API возможна полная автоматизация задач по управлению виртуальной инфраструктурой (или по ее масштабированию) без необходимости работы «руками» в интерфейсе панели управления. Все эти возможности могут быть полезны как частным клиентам, так и различным организациям. В их числе, например:

  • Реселлерам услуг хостинга;
  • Компаниям, занимающиеся созданием пакетов услуг разных облачных провайдеров (популярная на Западе тема, вот пример такого сервиса);
  • Организациям, чьи коммерческие сервисы расположены на наших мощностях, для автоматизации процесса создания новых экземпляров виртуальных серверов;
  • Разработчикам приложений — с помощью API можно автоматически масштабировать виртуальную инфраструктуру. Пример: при увеличении нагрузки автоматически «поднимать» новую виртуальную машину, на которую переносится часть задач, а по прошествии пика, так же автоматически удалить уже ненужный сервер. Также API полезно в процессе непрерывной интеграции (continuous integration) — при проверке программного кода можно создать несколько серверов для эталонного тестирования.

С организационной частью все, теперь поговорим о том, какие задачи можно реально выполнять с помощью API.

Какие задачи можно решать

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

Самым распространенным сценарием использования API среди пользователей на сегодняшний день является создание нового виртуального сервера. С помощью отправки POST-запроса пользователь может «поднять» новую виртуальную машину с заданными параметрами (процессор, память, хранилище и т.п.). Запрос выглядит примерно так:

curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/Server" -d '{"Name":"testAPI","CPU":1,"RAM":1024,"HDD":40,"imageID":1,"HDDType":"SSD","IsHighPerformance":true}' 

В ответ приходит JSON-объект со всем атрибутами созданного сервера:

{   "ID":777,   "Name":"testAPI",   "State":"Active",   "IsPowerOn":true,   "CPU":1,   "RAM":1024,   "HDD":40,   "IP":"5.200.XX.XX",   "AdminUserName":"1CloudAdmin",   "AdminPassword":"XXXXXXXX",   "Image":"WinServer2008R2x64En",   "IsHighPerformance":false,   "HDDType":"SAS",   "LinkedNetworks":[{"NetworkID":57, "IP":"10.0.1.1"}, {"NetworkID":98, "IP":"10.0.2.4"}] } 

Еще одна популярная задача — создание шаблона виртуального сервера.

Для того, чтобы создать шаблон сервера, пользователю нужно отправить POST-запрос по адресу https://api.1cloud.ru/image, Выглядеть он может примерно так:

curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/image" -d '{"Name":"Шаблон","TechName":"TemplateAPI","ServerID":6940}' 

Где Name — это название шаблона, TechName — его техническое наименование, и ServerID — индентификатор сервера, из которого делаем шаблон.

Ответом будет JSON-объект, содержащий все атрибуты созданного шаблона. Например:

{   "ID":72,   "Name":"testAPITemplate" } 

Созданный шаблон впоследствии можно удалить, для этого нужно отправить запрос DELETE по адресу https://api.1cloud.ru/image/{id}, где {id} — идентификатор удаляемого шаблона.

curl -X DELETE -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/image/72" 

Помимо работы с шаблонами серверов, с помощью API можно управлять частными сетями. Например, получать список доступных сетей и создавать (или удалять) их. Рассмотрим как раз этот случай.

Чтобы создать частную сеть, нужно отправить POST-запрос с ее названием на соответствующий адрес:

curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/network" -d '{"Name":"testNetworkAPI"}' 

Ответом будет JSON-объект, содержащий все атрибуты созданной сети (идентификатор, название, статус, маску, шлюз, список подключенных серверов). Пример ответа:

{   "ID":36,   "Name":"network API",   "State":"Active",   "Mask":"255.255.255.0",   "Gateway":"10.0.0.1",   "LinkedServers":[{"IP":"10.0.0.3","MAC":"U2:33:33:33:33:33","ServerID":3834}] } 

Чтобы удалить частную сеть, нужно отправить DELETE-запрос на адрес, включающий идентификатор сети:

curl -X DELETE -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/network/36" 

О создании шаблонов и виртуальных сетей мы подробно рассказывали в этом материале.

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

  • Получать список всех серверов;
  • Найти конкретный сервер со всеми атрибутами по уникального идентификатору;
  • Изменить конфигурацию сервера;
  • Удалить сервер.

В скором времени мы запустим услугу управления DNS — доступ к ней также будет возможен как из панели управления, так и посредством API.

Примеры реализаций клиентских библиотек

Существует несколько реализаций клиентских приложений для нашего API.

Тем пользователям Хабра, которые захотят воспользоваться нашим API, мы предоставим расширенный тестовый период в ходе которого готовы оказать всяческую поддержку (для его активации достаточно обратиться в службу поддержки по адресу support@1cloud.ru).

Авторам лучших реализаций клиентских частей для API 1сloud на других языках программирования будут предоставлены бонусы в нашей системе. Выкладывайте свои проекты на GitHub и мы обязательно укажем имя автора и ссылку на них на своем сайте.

На сегодня все, спасибо за внимание! Не забывайте подписываться на наш блог, чтобы не пропустить ничего интересного.

ссылка на оригинал статьи http://habrahabr.ru/post/260523/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *