Всім 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.ua/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":"ХХХХХХХХ",
"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.ua/image
, він може Виглядати приблизно так:

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

Де
Name
— це назва шаблону,
TechName
— його технічне найменування та
ServerID
— индентификатор сервера, з якого робимо шаблон.

Відповіддю буде JSON-об'єкт, що містить всі атрибути створеного шаблону. Наприклад:

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

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

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

Крім роботи з шаблонами серверів, за допомогою API можна управляти приватними мережами. Наприклад, список доступних мереж і створювати (або видаляти) їх. Розглянемо якраз цей випадок.

Щоб створити приватну мережу, потрібно відправити POST-запит з її назвою на відповідний адреса:

curl-X POST-H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ua/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-DELETE X-H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ua/network/36"

Про створення шаблонів і віртуальних мереж ми докладно розповідали в цьому матеріалі.

Крім усього перерахованого вище, завдяки API можна здійснювати широкий діапазон дій над серверами, наприклад:

  • список всіх серверів;
  • Знайти конкретний сервер зі всіма атрибутами по унікального ідентифікатора;
  • Змінити конфігурацію сервера;
  • Видалити сервер.
Незабаром ми запустимо послугу управління DNS — доступ до неї також буде можливий як з панелі управління, так і за допомогою API.

Приклади реалізацій клієнтських бібліотек

Існує декілька реалізацій клієнтських додатків для нашого API.

Тим користувачам Хабра, які захочуть скористатися нашим API, ми надамо розширений тестовий період в ході якого готові надати всіляку підтримку (для його активації достатньо звернутися в службу підтримки за адресою [email protected]).

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

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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.