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

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

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

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

9b9835f774f841f18c542c124eb0b2dd.png

Для кого все это С помощью 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»: «WinServer2008R2×64En», «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 и мы обязательно укажем имя автора и ссылку на них на своем сайте.

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

© Habrahabr.ru