В нашем блоге мы уже рассказывали про 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.
- На C# — код на гитхабе (благодарность за создание partyz0ne);
- На PHP — код на гитхабе (благодарность wapmorgan);
- На node.js — код на гитхабе (благодарность serkamikadze).
Тем пользователям Хабра, которые захотят воспользоваться нашим API, мы предоставим расширенный тестовый период в ходе которого готовы оказать всяческую поддержку (для его активации достаточно обратиться в службу поддержки по адресу support@1cloud.ru).
Авторам лучших реализаций клиентских частей для API 1сloud на других языках программирования будут предоставлены бонусы в нашей системе. Выкладывайте свои проекты на GitHub и мы обязательно укажем имя автора и ссылку на них на своем сайте.
На сегодня все, спасибо за внимание! Не забывайте подписываться на наш блог, чтобы не пропустить ничего интересного.
ссылка на оригинал статьи http://habrahabr.ru/post/260523/
Добавить комментарий