Вызов сервисов IBM SmartCloud Enterprise+ программными средствами

Обзор API-интерфейсов, поддерживающих управляемые облачные сервисы

Статья демонстрирует пользователям-администраторам решения IBM® SmartCloud® Enterprise+ Version 1.2, как выполнять базовые управленческие задачи с помощью API-интерфейсов этого решения. Приведенные в статье примеры команд иллюстрируют использование API-интерфейсов для просмотра метаданных и ресурсов, для управления административными ресурсами и для управления виртуальными серверами.

Эндрю Хопп, старший инженер по программному обеспечению, IBM

Эндрю Хопп (Andrew Hoppe), PhD, пришел в IBM в 2003 году в результате приобретения компании Rational. Более 20 лет занимается моделированием, проектированием и созданием программного обеспечения. В 2013 году стал техническим архитектором в группе Global Cloud Ecosystem при подразделении IBM Global Technology Services (GTS).



Джефф Клинк, старший технический специалист, IBM

Джефф Клинк (Jeff Klink) занимает должность старшего технического специалиста в подразделении IBM Canada. На протяжении последних десяти лет Дж. Клинк специализировался в таких областях, как виртуализация, программно-аппаратные комплексы, сетевые технологии и технологии резервного копирования, при этом основное внимание он уделял технологиям и проектам на основе Linux. В настоящее время Дж. Клинк работает руководителем международной технической группы Global Cloud Ecosystem при подразделении IBM Global Technology Services (GTS), которая помогает поставщикам SaaS-услуг на базе систем IBM x86 и IBM Power проектировать и создавать свои решения для публичных облаков на основе продуктов SoftLayer и IBM SmartCloud Enterprise+.



12.03.2014

IBM SmartCloud Enterprise+

SmartCloud Enterprise+, одно из предложений IBM в секторе облачных вычислений, предоставляет среду корпоративного класса типа ”инфраструктура как сервис” (Infrastructure as a Service, IaaS). IBM администрирует среду SmartCloud Enterprise+ и полностью управляет ею с помощью автоматизированного инструментария, в состав которого входят инструменты Tivoli® для автоматизации и мониторинга. Решение SmartCloud Enterprise+ обладает отличными характеристиками безопасности, надежности и производительности, благодаря чему идеально подходит для размещения в восьми глобальных центрах обработки данных IBM перенесенных в облачную среду унаследованных производственных рабочих нагрузок.

Пользователи IBM SmartCloud Enterprise+ могут создавать и администрировать виртуальные активы посредством веб-портала, основанного на принципах интегрированного управления сервисами (integrated service management, ISM). Большая часть возможностей этого портала доступна и посредством API-интерфейсов. С помощью API-интерфейсов вы сможете управлять созданием и сопровождением ресурсов SmartCloud Enterprise+ из программы. Соответственно API-интерфейсы можно применять для автоматического выполнения инициализации, масштабирования и реконфигуририрования развертываний SmartCloud Enterprise+.

API-интерфейсы решения SmartCloud Enterprise+ реализованы как REST-вызовы (Representational State Transfer), доступные по определенному URL-адресу оконечной точки (этот URL-адрес оконечной точки передается заказчику IBM в процессе его инициализации (onboarding) в решении SmartCloud Enterprise+, поэтому в примерах этой статьи вместо реального URL-адреса оконечной точки используется заполнитель endpoint_URL). API-интерфейсы предоставляют возможности в трех основных категориях:

  • Просмотр метаданных и ресурсов SmartCloud Enterprise+ в режиме "только чтение"
  • Управление административными ресурсами (пользователи, проектные группы, проекты и утверждения)
  • Управление виртуальными серверами, патчами и моментальными снимками решения SmartCloud Enterprise+

В этой статье мы описываем и иллюстрируем примерами применение API-интерфейсов во всех трех вышеупомянутых категориях. В наших примерах кода применяется утилита командной строки cURL, которая позволяет передавать данные с помощью простых HTTP-команд. Кроме того, мы приводим параметры REST-вызова в каждом вызове утилиты cURL.

Синтаксис вызова

REST-запросы API-интерфейсов SmartCloud Enterprise+ позволяют передавать параметры вызова и в заголовке HTTP-запроса, и в его теле. Для передающих запрос параметров в теле сообщения требуется элемент заголовка Content-Type, который имеет значение application/xml или application/json. В зависимости от типа контента в теле запроса необходимо разместить XML-элемент или JSON-элемент, содержащий все атрибуты создаваемого ресурса. Кроме того, можно использовать заголовок Accept для указания требуемого формата ответа (также с помощью значения application/xml или application/json).

REST-запросы (HTTP-запросы GET), возвращающие коллекцию элементов, могут иметь дополнительные URL-параметры, задающие критерии фильтрации для запроса (пример: GET baseURL/users?first_name=John). Кроме того, запросы GET позволяют запрашивать результаты в отсортированном или в усеченном виде. За дополнительной информацией обратитесь к документу IBM SmartCloud Enterprise+ API Specifications (Спецификации API-интерфейсов IBM SmartCloud Enterprise+), который вы можете получить при инициализации в решении SmartCloud Enterprise+.


Просмотр, создание и сопровождение проектов и экземпляров сервера SmartCloud Enterprise+

Теперь мы покажем, как использовать API-интерфейсы для программного управления просмотром, созданием и сопровождением экземпляров сервера и проектов SmartCloud Enterprise+.

Извлечение метаданных ресурсов

На рис. 1 показана схема модели ресурсов SmartCloud Enterprise+.

Рисунок 1. Модель ресурсов SmartCloud Enterprise+
Illustration of the IBM SmartCloud Enterprise+ resource model

На рис. 1 стрелки обозначают зависимости между ресурсами или ссылки от одного ресурса к другому ресурсу. Эта модель позволяет увидеть, какие разновидности ресурсов необходимы для создаваемого экземпляра (сервера SmartCloud Enterprise+). Экземпляры привязаны к группам. Группа (group)— это абстрактное объединение ресурсов, для которых единственной физической реализацией в решении SmartCloud Enterprise+ является проект. Проекты, в свою очередь, состоят из проектных групп (team), объединяющих пользователей. Проектные группы, пользователи и группы должны быть созданы до того, как с ними будут ассоциированы экземпляры.

Примечание: Во всех примерах команд полужирным курсивом обозначается информация, которую пользователь, инициирующий команду, должен предоставить помимо URL-адреса оконечной точки. Кроме того, в некоторых примерах кода утилиты cURL, приведенных в этой статье, строки разорваны с целью удобства чтения; перед исполнением команд необходимо удалить разрывы строк.

Кроме того, пользователи и экземпляры должны быть ассоциированы с определенными существующими ресурсами SmartCloud Enterprise+, поэтому вам необходимо извлечь метаданные для этих ресурсов. Например, для пользователя требуется роль, а роль — это уникальный ресурс решения SmartCloud Enterprise+.

Пользователь SmartCloud Enterprise+ может иметь до двух ролей. Чтобы извлечь метаданные роли пользователя, выполните REST-команду GET:

curl -k -X GET -u johntester@test.com:johnspasswd https://endpoint_URL/roles

Примера отклика на показанную выше команду:

<roles>
  <role>
    <id>53</id>
    <name>Administrator</name>
    <role_group>IaaS-User</role_group>
  </role>
  <role>
    <id>54</id>
    <name>Business Manager</name>
    <role_group>IaaS-User</role_group>
  </role>
</roles>

REST-команду GET также можно выполнить в браузере, поскольку браузеры по умолчанию выдают HTTP-запросы GET Введите в REST-вызове следующий URL-адрес:

https://endpoint_URL/roles

Браузер отобразит ответ, представленный в формате по умолчанию (XML).

Создание пользователей

Чтобы создать пользователя, необходимо задать следующие параметры.

  • User ID (идентификатор пользователя, в качестве которого применяется его адрес электронной почты)
  • Display name (Отображаемое имя)
  • First name (Имя)
  • Last name (Фамилия)
  • List of role references (Список ссылок на роли)
  • Language (Язык)
  • Locale (Локаль)

Список ролей должен представлять собой массив URI-идентификаторов (Uniform Resource Identifiers) ролей. Эти URI-идентификаторы в REST-вызовах представлены в форме /tag/id —— например, /roles/53 для роли Administrator (Администратор). В следующем примере показано, как можно задать данные пользователя в XML-элементе данных в REST-запросе:

<user>
  <userid>billtester@test.com</userid>
  <name>Bill Tester</name>
  <first_name>Bill</first_name>
  <last_name>Tester</last_name>
  <roles>
    <role uri="/roles/53" />
   </roles>
  <language>EN</language>
  <locale>en_US</locale>
</user>

Эквивалентный JSON-объект:

{ "user":
  { "userid":"billtester@test.com",
    "name":"Bill Tester",
    "first_name":"Bill",
    "last_name":"Tester",
    "roles":[
        {"uri":"/roles/ro53"}],
    "language":"EN",
    "locale":"en_US"
  }
}

Теперь можно сформировать команду утилиты cURL для создания нового пользователя с ролью Administrator. Эта команда использует формат XML:

curl -k -u johntester@test.com:johnspasswd -X POST -H "Content-Type:application/xml" -d 
"<user><userid>billtester@test.com</userid><name>Bill Tester</name><first_name>Bill
</first_name><last_name>Tester</last_name><roles><role uri=\"/roles/53\"/></roles>
<language>EN</language><locale>en_US</locale></user>" https://endpoint_URL/users

Также можно использовать формат JSON:

curl -k -u johntester@test.com:johnspasswd -X POST -H "ContentType:application/json" 
-d "{\"user\":{\"userid\":\"billtester@test.com \",\"name\":\"Bill Tester\",
\"first_name\":\"Bill\",\"last_name\": \"Tester\",\"roles\":[{\"uri\":\"/roles/53\"}],
\"language\":\"EN\",\"locale\":\"en_US\"}}" https://endpoint_URL/users

Подача таких запросов не вызывает немедленного отклика от SmartCloud Enterprise+. Вместо этого инициируется задание по созданию пользователя, а пользователь, инициировавший запрос, получает уведомления о ходе выполнения этого задания по электронной почте.

Создание проектных групп

После того, как вы создадите всех участвующих пользователей, необходимо создать проектную группу SmartCloud Enterprise+. Во-первых, необходимо определить идентификатор Направления деятельности (LOB), который предоставляется в процессе инициирования пользователя:

curl -k -X GET -u johntester@test.com:johnspasswd https://endpoint_URL/lobs

В наших примерах этот идентификатор имеет значение 8888. Затем создайте пустую проектную группу:

curl -k -u johntester@test.com:johnspasswd -X POST -H "Content-Type:application/xml" -d 
"<team><name>Test Team</name><description>Project XYZ Test Team</description><lob uri=
\"/lobs/8888\"/></team>" https://endpoint_URL/teams

Наконец, добавьте в пустую проектную группу массив пользователей. В этом примере идентификатор проектной группы имеет значение 9999, а идентификаторы пользователей имеют значения 1001, 1002 и 1003:

curl -k -u johntester@test.com:johnspasswd -X POST -H "Content-Type:application/xml" -d 
"<team><name>Test Team 1</name><description>Project XYZ Test Team</description><lob uri=
\"/lobs/8888\"/><users>[{\"uri\":\"/users/1001\"}{\"uri\":\"/users/1002\"}{\"uri\":\
"/users/1003\"}]</users></team>" https://endpoint_URL/teams/9999

Создание проектов

Теперь вы готовы к созданию проекта SmartCloud Enterprise+ (проект — это административная единица, с которой должны быть ассоциированы серверы SmartCloud Enterprise+). Создание проекта осуществляется посредством создания группы (группа — это контейнер, в котором хранятся экземпляры сервера). В следующем примере URL-адрес проектной группы задается как значение параметра с именем team:

curl -k -u johntester@test.com:johnspasswd -X POST -H "Content-Type:application/xml" -d 
"<group><name>Project XYZ</name><description>Project XYZ Description</description>
<options><option><name>team</name><value><team uri=\"/teams/9999\"/></value></option>
</options></group>" https://endpoint_URL/groups

Создание экземпляров сервера

Теперь все готово к инициации серверов SmartCloud Enterprise+. Воспользуйтесь REST-командами GET для получения идентификаторов следующих артефактов:

  • Virtual machine configuration (Конфигурация виртуальной машины)
  • Image (Образ)
  • Project (group) [Проект (группа)]
  • Security zone (Зона безопасности)
  • Service level agreement (Соглашение об уровне сервиса)
  • Patch schedule category (Категория расписания патчей)

После получения идентификаторов можно сформировать XML-элемент (или JSON-элемент), описывающий требуемый экземпляр, а затем поместить этот элемент в команду утилиты cURL для создания этого экземпляра:

curl -k -u johntester@test.com:johnspasswd -X POST -H "Content-Type:application/xml" -d 
"<instance><vm_configuration>/vm_configurations/2</vm_configuration><image uri=
\"/images/1033\"/><options><option><name>group</name><value><group uri=\"/groups/638\"/>
</value></option><option><name>security_zone</name><value><security_zone uri=
\"/security_zones/130\"/></value></option><option><name>sla</name><value><sla uri=
\"/slas/135\"/></value></option><option><name>patch_schedule_category</name><value>
<patch_schedule_category uri=\"/patch_schedule_categories/150\"/></value></option>
</options></instance>" https://endpoint_URL/instances

Показанная выше команда утилиты cURL инициирует задание по созданию экземпляра. Следующая команда позволяет подать запрос о ходе выполнения этого задания:

curl -k -X GET -u johntester@test.com:johnspasswd https://endpoint_URL/jobs

Ответ на показанную выше команду jobs содержит информацию о состоянии всех недавних заданий johntester. Если вы получили идентификатор определенного задания, то можете получить подробности этого задания, указав его идентификатор в данной команде. В этом примере предполагается, что идентификатор задания имеет значение 1234:

curl -k -X GET -u johntester@test.com:johnspasswd https://endpoint_URL/jobs/1234

Конфигурирование экземпляров сервера

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

curl -k -u johntester@test.com:johnspasswd -X PUT -H "Content-Type:application/xml" -d 
"<instance><disks><disk><name>disk1</name><size>64</size><options><option>
<name>type</name><value>additional</value></option></options></disk></disks></instance>" 
https://endpoint_URL/instances/3456

Удаление экземпляра

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

curl -k -u johntester@test.com:johnspasswd -X DELETE  https:// endpoint_URL/3456

Заключение

В статье было продемонстрировано программное выполнение определенных задач управления решением SmartCloud Enterprise+ с помощью API-интерфейсов этого решения.

API-интерфейсы решения SmartCloud Enterprise+ имеют ряд отличий от API-интерфейсов других облачных предложений IBM, таких как SmartCloud Enterprise (SCE).

  • Функциональность API-интерфейсов SmartCloud Enterprise+ более ограничена по причине управляемого характера решения SmartCloud Enterprise+, в котором облачная среда с высоким уровнем контролируемости не допускает некоторых действий пользователя. Например, в текущем выпуске SmartCloud Enterprise+ не существуют приватные каталоги образов.
  • Исполнение запросов на создание и обновление может занимать несколько часов и даже дней, а не минут, поскольку должна быть создана или обновлена соответствующая инфраструктура мониторинга. Для выполнения этой деятельности создаются задания SmartCloud Enterprise+. Пользователь, инициировавший API-вызов, получает на свой зарегистрированный адрес электронной почты электронные сообщения, информирующие его о ходе выполнения и о завершении этих заданий.
  • Для запросов, инициированных пользователями с ролью Customer Administrator, может потребоваться утверждение со стороны пользователя с ролью Customer Business Manager. В частности, запросы, связанные с потреблением дополнительных ресурсов (например, запросы на создание или на модификацию виртуальных серверов), должны быть утверждены пользователем Customer Business Manager.

Ресурсы

Научиться

  • Оригинал статьи: Call IBM SmartCloud Enterprise+ services programmatically.
  • IBM SmartCloud Enterprise+: Узнайте, чем решение SmartCloud Enterprise+ может быть полезно вашей организации.
  • cURL: Дополнительная информация об инструменте командной строки cURL.
  • IBM SmartCloud Enterprise+: Enable enhanced value and reduced risk with a managed cloud infrastructure (IBM SmartCloud Enterprise+: повышение отдачи и снижение рисков с помощью управляемой облачной инфрастуктуры). Просмотрите это презентацию, чтобы узнать больше о преимуществах SmartCloud Enterprise+.
  • New APIs in IBM SmartCloud Enterprise 2.2 (Новые API-интерфейсы в IBM SmartCloud Enterprise 2.2), Эндрю Хопп (Andrew Hoppe) и Джефф Клинк (Jeff Klink), developerWorks, июнь 2013 г. Информация об API-интерфейсах решения SCE 2.2.
  • Раздел облачных вычислений на сайте developerWorks: сообщество и новые технические ресурсы для разработчиков, связанных с облачной тематикой.

Обсудить

  • Присоединяйтесь к сообществу developerWorks. Связяывайтесь с другими пользователямм developerWorks и знакомьтесь с ориентированными на разработчиков форумами, блогами, группами и вики-ресурсами.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления
ArticleID=965434
ArticleTitle=Вызов сервисов IBM SmartCloud Enterprise+ программными средствами
publish-date=03122014