Программные интерфейсы управления серверной...
TRANSCRIPT
Программные интерфейсы управления серверной платформой и вычислительными стеками (UCS и UCS Director)
Евгений Лагунцов Системный инженер-консультант
© 2015 Cisco and/or its affiliates. All rights reserved.
UCS Manager • Управление на основе абстракций • Сокращение времени развертывания • Перераспределение ресурсов быстро и эффективно
• Оптимизация инфраструктуры • Взаимозаменяемые ресурсные пулы
Унифицированная фабрика
Вычислительные узлы БЕЗ компромиссов • Поддержка как блейд так и стоечных серверов в единой системе
• Поддержка виртуализированных и bare-metal приложений
Виртуализированный ввод-вывод • Гибкость и масштабируемость • Высокая производительность
Составные части Cisco UCS
XML API STANDARD
API’S
Интегрированное управление
UCS Manager
GUI
Внешние системы управления CLI
Primary Secondary (HA)
Специализированные утилиты и порталы
• Единое управление ВСЕЙ системой (до 160 серверов и вся LAN/SAN инфраструктура) из ОДНОЙ точки (резервированной)
• Физические серверы не являются объектом конфигурирования – они всего лишь часть ресурсного пула
• Внутренние сетевые порты не являются объектами конфигурирования – они настраиваются автоматически
• Конфигурируются общие политики, шаблоны, профили – многократно используемые, тиражируемые элементы
• Все серверные настройки отвязаны от «железа» – «динамические», «мобильные», «масштабируемые»
• Система управления интегрирована и резервирована
Интерфейс прикладного управления UCS XML API
Стандартный XML API Доступ к физическим и логическим объектам внутри UCS
XML API
Напрямую UCS CLI UCS GUI 3rd Party Customer
Self Service portals
Management Tools
Auditing Tools
System Status Physical Inventory Logical Inventory
Обзор UCS XML API
• Соединения поверх HTTP / HTTPS • Транзакционный обмен сообщений XML с соблюдением порядка транзакций
• Режим «запрос/ответ» • Аутентификация на основе ролей пользователя • Иерархическая модель объектов • Встроенный браузер объектов • Документированная схема XML в публичном доступе • Встроенная отказоустойчивость
Характеристики UCS XML API
XML API
Иерархическая модель объектов Cisco UCS Management Information Tree (MIT)
Объекты управления § Физические (процессоры, шасси, серверы, модули ввода-вывода, …) § Логические (пулы ресурсов, роли пользователей, политики, профили, …)
Объекты управления (Management Object – MO)
PowerShell модули для интеграции с Cisco UCS Доступны для UCS систем и stand-alone C-серии
Свободно скачивается с http://cisco.com
PowerTool for UCSM содержит около 2000 команд
Доступно 100% функционала UCSM
Отлично сочетается с идеологией управления Microsoft
Что такое PowerTool
§ Оборудование § VLANs, LAN Uplink, SAN Uplink, Server, Appliance Ports, Port Channels, и т.д.
§ Пулы § Servers, UUID, MAC, IP, WWPN, WWNN, iSCSI, и т.д.
§ Политики § BIOS, Firmware, Adapters, Boot, Drives, и т.д.
§ Шаблоны § vNIC, vHBA, Service Profile Templates, и т.д.
§ Отчетность § vNIC Statistics, vHBA Statistics, Thermal, Resources, и т.д.
Глубина возможностей PowerTool
§ Открываем UCSM GUI § Import-Module CiscoUcsPs § Запускаем ConvertTo-UcsCmdlet в сессии PowerShell
§ Будет работать пока не остановим
§ Делаем что-то в UCSM GUI и жмем ‘Save’
§ Смотрим на сессию PowerShell
§ Увидим PowerShell команды для выполненных в UCSM операций
Легкий в обучении
Веб-сообщество http://developer.cisco.com/web/unifiedcomputing/home § Загрузки:
§ UCS Platform Emulator (UCSPE) § goUCS Automation Tool § XML API, Perl, PowerShell code samples
Microsoft – PowerShell library, SCOM MP § Python SDK
§ Документация: § Programming & developer guides § White papers § Reference guides (XML model, Faults)
Cisco Developer Network
10
UCS Platform Emulator (UCSPE)
11
Полноценный эмулятор UCS Manager Распространяется в виде виртуальной машины Не требует оборудования UCS Полностью поддерживает XML API Содержит браузер объектов XML-схемы Создание собственной или импорт имеющейся аппаратной конфигурации UCS
1
2
3
Выполнить действие в UCS Manager и перехватить XML в goUCS
Создать скрипт в goUCS, заменяя постоянные значения на переменные
Запускать скрипт по своему усмотрению с нужными параметрами
Программа goUCS
12
Программа автоматизации управления UCS для сред Windows, Linux, MAC OS Абстрагирует пользователя от использования XML Позволяет конвертировать XML-вызовы в сценарии
UCS Director – открытая и расширяемая платформа для автоматизации в ЦОД
Пакет ПО Cisco Enterprise Cloud Suite
Cloud Services
Экосистема сервис-провайдеров
Cisco® Virtual Application Container Services
Портал самообслуживания Cisco Prime™ Service Catalog
Управление интегрированными стеками Cisco UCS® Director
Мультивендорная инфраструктура: серверы, сеть, SAN, СХД, гипервизоры
Управление гибридным облаком Cisco Intercloud Fabric
C
loud
Ope
ratio
ns (C
loud
Ass
uran
ce) (
3rd -
Par
ty B
illin
g, A
ssur
ance
, Res
ourc
e M
gmt)
UCS Director: управление конвергентной инфраструктурой «в целом»
Развертывание на основе политик
vFiler
СХД Вирт. машины
Сеть Вычислит. платформа
Безопасные контейнеры для приложений
Self-Service Infrastructure
Единая точка управления
Сквозная
автоматизация и управление
жизненным циклом
СХД
Сеть
Вычисления
Tenant B
Tenant C
Tenant A
A B C
Виртуализация
Storage Manager
B C A
Virtualization Manager
Network Manager
Compute Manager
Storage Manager
UCS Director: возможности API и SDK
UCS Director
REST API на основе JSON и XML, PowerShell
Интеграция с внешними системами
(например, портал)
PowerShell SSH
Физическая среда или среда виртуализации
Запуск скриптов на стороне
инфраструктуры
Open Automation SDK
Физические или виртуализированные элементы
инфраструктуры ЦОД
Комплексная интеграция с инфраструктурой
Cloupia Script
Запуск скриптов на стороне UCS Director
Публично доступные сценарии для UCS Director
Пример № 1
Практический пример № 1
UCS Director Сеть
Сервер
СХД
Virtualization
VMware Hyper-V KVM Развертывание виртуальных
машин автоматизируется
при помощи UCS Director
Решение: Использование Cloupia Script на основе JavaScript
Задача: Получить расширенную информацию о виртуальной машине в сценарии автоматизации: IP адрес, ID-хоста гипервизора и т.д.
CloupiaScript
Сценарий автоматизации 1. Запуск сценария
Сценарий автоматизации с использованием CloupiaScript
UCS Director
Шаг № 1
Шаг № 2
Шаг № 4
Cloupia Script
2. Выполнение скрипта Cloupia Script
var a = 2; var b = 5; var total = a+b; logger.addInfo("Total is " + total);
Свойства CloupiaScript
1. Cloupia Script = Java Script + Cloupia Libraries
2. Запускается внутри UCS Director – на серверной стороне
3. Различные Cloupia Java API и объекты доступны из скрипта
4. Весь синтаксис Java Script поддерживается
5. Поскольку скрипт выполняется на серверной стороне, никакие объекты ‘Browser’ related не поддерживаются
Более подробно: Cisco UCS Director CloupiaScript Cookbook http://www.cisco.com/c/dam/en/us/td/docs/unified_computing/ucs/ucs-director/cloupia-script-cookbook/5-0/CloupiaScript-Cookbook.pdf
Cloupia Script SDK https://developer.cisco.com/fileMedia/download/0f4ec17c-ba4c-4627-a505-033479b69b38
Использование CloupiaScript для получения информации об IP адресе виртуальной машины
Используем готовый сценарий автоматизации
Policies -> Orchestration -> Workflows -> Import
https://communities.cisco.com/docs/DOC-56732
Настройка параметров сценария автоматизации
Входной переменной для сценария является идентификатор виртуальной машины
• Policies -> Orchestration -> Workflows -> -> Edit workflow
Редактирование сценария автоматизации После импорта готового сценария в разделе Custom Task появился шаг «Retrieve VM IP address»
Теперь этот шаг можно использовать в собственных
сценариях
Редактирование кастомизированного шага сценария
Вместе со сценарием автоматизации в базу UCS Director импортируется так же и кастомизированный шаг, который представляет собой Сloupia Script
• Policies -> Orchestration -> Custom Workflow Tasks -> -> Edit
-> входная переменная для скрипта, которая является указателем на объект «Виртуальная машина»
Редактирование CloupiaScript
Получаем структуру с информацией о виртуальной машине
Получаем IP адрес
Логируем информацию
Передаем IP адрес в выходную переменную
Запускаем сценарий автоматизации
Запускаем сценарий • Policies -> Orchestration -> Workflow -> -> Execute now
Выбираем виртуальную машину
Проверяем выполнение сценария
Лог действий в UCS Director
IP-адрес виртуальной в переменной
Пример № 2
Пример № 2
UCS Director Сеть
Сервер
СХД
Virtualization
VMware Hyper-V KVM Развертывание виртуальных
машин автоматизируется
при помощи UCS Director
DNS сервер
Задача: автоматизация внесений записей DNS для вновь развертываемых виртуальных машин
Решение: Использование Microsoft PowerShell
Интеграция UCS Director и PowerShell агента
Интеграция UCS Director и Microsoft при помощи PowerShell агента
UCS Director
UCS Director PowerShell агент
PowerShell скрипт по защищенному
каналу
Скрипт исполняется на стороне
Windows сервера
Установка PowerShell агента
Administration -> Virtual Accounts -> PowerShell Agents -> Download Installer
1
2 Установка агента
Настройка WinRM и WinRS Проверить что сервисы WinRM и WinRS включены
Windows Remote Management (WinRM) 3
Windows Remote Shell (WinRS) 4
Настройка таблицы доверенных хостов для WinRS
winrm set winrm/config/client @{TrustedHosts=" "}* - любой хост winrm set winrm/config/client @{TrustedHosts=“ "}A.B.C.D – IP адрес UCS Director
5
6 проверяем список доверенных хостов winrm g winrm/config
Настраиваем подключение к агенту из UCS Director
Administration -> Virtual Accounts -> PowerShell Agents -> Add 7
Тестируем соединение 8
Тестируем исполнение простейшей команды на стороне Windows 2012 сервера
9
10
Использование PowerShell для автоматизации настройки DNS
Автоматизация настройки DNS
UCS Director
UCS Director PowerShell агент
Развертывание виртуальной машины
1
Настройка DNS записей 2
Используем готовый сценарий автоматизации Policies -> Orchestration -> Workflows -> Import
https://communities.cisco.com/docs/DOC-54044
Настройка информации о DNS зонах в UCS Director
• Импортированный сценарий автоматизации использует собственные переменные для хранения информации о DNS-зонах
• Переменные импортируются вместе со сценарием оркестрации
• Вносим изменения для того чтобы указать собственные зоны • Policies -> Orchestration -> Сustom Workflow Inputs -> -> Edit
Настройка параметров сценария автоматизации 1/2
Настраиваем импортированный сценарий • Policies -> Orchestration -> Workflow -> -> Edit Workflow
Контекст определяет виртуальную машину для которой будет
добавляться DNS-запись в зону
Настройка параметров сценария автоматизации 2/2
Проверяем использование переменных в которых хранится информация о DNS-зонах
Переменная с набором зон
Редактирование сценария автоматизации
Переходим в режим редактирования • Policies -> Orchestration -> Workflow -> -> Workflow Designer
Редактирование шагов сценария автоматизации
Выбираем PowerShell агент
Редактируем PowerShell скрипт
Запускаем сценарий автоматизации
Запускаем сценарий • Policies -> Orchestration -> Workflow -> -> Execute now
Выбираем виртуальную машину
Выбираем DNS-зону
Проверяем выполнение сценария
Лог действий в UCS Director
Новая запись в DNS-зоне
Пример № 3
Пример № 3
API
2. Запрос на выделение IP адреса
3. Получение IP адреса из DDI системы
DDI система
UCS Director
1.Развертывание виртуальной машины
4. Настройка IP адреса полученного из DDI
системы
5. Добавление записи о хосте в DDI систему
система управления DNS, DHCP и IP адресацией
Интеграция с DDI-системой компании InfoBlox при помощи REST API
Используем готовый сценарий автоматизации Policies -> Orchestration -> Workflows -> Import
https://communities.cisco.com/docs/DOC-57415
Интеграция UCS Director и Infoblox
REST API (WAPI)
1. Запрос на выделение IP адреса
2. Получение IP адреса из DDI системы
DDI система
UCS Director 3. Добавление записи о хосте в DDI систему
система управления DNS, DHCP и IP адресацией
Виртуальная машина, развернутая
при помощи UCS Director
Интеграция с Infoblox при помощи CloupiaScript
Вместе со сценарием автоматизации в базу UCS Director импортируются так же и кастомизированные шаги, которые представляют собой Сloupia Script
• Policies -> Orchestration -> Custom Workflow Tasks -> -> Edit
• Policies -> Orchestration -> Custom Workflow Tasks -> -> Edit
• Policies -> Orchestration -> Custom Workflow Tasks -> -> Edit
Настройка IPAM в Infoblox
Подсеть, контролируемая IPAM
В пуле 253 свободных адреса
Настройка DNS в Infoblox
Контролируемые DNS-домены
Редактирование сценария автоматизации После импорта готового сценария в разделе Custom Task появилась папка «Infoblox»
Теперь эти шаги можно использовать в собственных
сценариях
Переменные, используемые в сценарии автоматизации
• Импортированный сценарий автоматизации использует собственные переменные для хранения информации о системе InfoBlox, а так же о добавляемом в систему хосте
• Просмотр переменных • Policies -> Orchestration -> Workflows -> -> Edit workflow
Пример CloupiaScript при интеграции с InfoBlox
Запускаем сценарий автоматизации
Запускаем сценарий • Policies -> Orchestration -> Workflow -> -> Execute now
DNS-имя добавляемого хоста
DNS-домен
Проверяем выполнение в UCS Director
Выполнение сценария в UCS Director
IP-адрес, полученный из IPAM
Проверяем выполние в InfoBlox Новая запись в IPAM
Новая запись в DNS
Возвращаем все в исходное состояние
Встроенный механизм возврата в исходное состояние – Rollback Request
Open Automation и SDK. Интеграция UCS Director с «новыми» устройствами 65
Поддержка инфраструктуры 3-х производителей
VMware
Hyper-V
Cisco UCS Director
Интеграция out of the box Open Automation Framework
Возможности Open Automation
Поддержка инфраструктуры третьих производителей Новые “кирпичики” для построения сценариев автоматизации Life Cycle Management
§ Специализированные типы учетных записей, Pod-ов § Инвентаризация, Конфигурация, Развертывание, Мониторинг, Тригеры
GUI § Дополнительные пункты меню
Отчеты § Таблицы, Диаграммы, Summary и т.д. § Отчеты CloudSense®
67
Интеграция с UCS Director через REST API
REST API
Использует HTTP в качестве протокола
§ GET – Получить данные § PUT – Изменить объект § POST – Создать объект § DELETE – Удалить объект
JSON и/или XML формат Аутентификация через Cookies или заголовки Клиент посылает Request Сервер возвращает Response
69
GET /api/v1/routing-svc/eigrp Accept: application/json
200 ok Content-type: application/json { “kind”: “collection#eigrp-asn”, “items”: [ { “kind”: “object#eigrp-asn”, “routing-protocol-id”: “100” }, ] }
Request
Response
Пример REST запроса к UCS Director
# “curl” utility for sending REST request curl -v --header "X-Cloupia-Request-Key: 10E17C7EB358376DAC96F829FB3081D2" http://cloud-ucsd.csc.richfield.cisco.com/app/api/rest?formatType=json\&opName=userAPIGetAllCatalogs # HTTP GET Request from Client > GET /app/api/rest?formatType=json&opName=userAPIGetAllCatalogs HTTP/1.1 > User-Agent: curl/7.37.1 > Host: cloud-ucsd.csc.richfield.cisco.com > Accept: */* > X-Cloupia-Request-Key: 10E17C7EB358376DAC96F829FB3081D2 >
70
Аутентификация
JSON Format Требуемая функция
REST ответ от UCS Director-а
# HTTP Response from Server < HTTP/1.1 200 OK < Server: Apache-Coyote/1.1 < Set-Cookie: JSESSIONID=69E75630EDB5A3C70929E666360A8EB4; Path=/app/ < Cache-Control: max-age=0,must-revalidate < Expires: -1 < Content-Type: application/json;charset=UTF-8 < Transfer-Encoding: chunked < Date: Sat, 09 May 2015 18:54:32 GMT < { "serviceResult":{"rows":[{"Catalog_ID":"1","Catalog_Name":"General Linux Web Server","Folder":"General Servers","Catalog_Type":"Standard","Template_Name":"Not Applicable","Catalog_Description":"","Cloud":"cloud-vcenter","Image":"base-rhel63-2","Group":"Cloud [email protected],Cloud [email protected]","Icon":"/app/images/temp/1427462292263_redhat.png”,...
71
Ответ в JSON формате
API Essentials for IT Folks Making REST easy with Postman
72
Save Examples
Easy parameters
Headers
Response Data Display
API Essentials for IT Folks
Great Language for IT Evolution § Easy to learn and read § Huge amount of samples § Runs on nearly anything
“requests” module to “REST” easy § Simple Interface § Hides the HTTP Intricacies
Simple Utility Creation with “argparse”
Hacking together with Python import requests
headers = {"X-Cloupia-Request-Key":key}
url = "http://” + / “cloud-ucsd.csc.richfield.cisco.com” + / “/app/api/rest?” + / “opName=userAPIGetAllCatalogs”
r = requests.get(url, headers=headers)
r.text
u'{ "serviceResult":{"rows":[{"Catalog_ID":"1","Catalog_Name":"General Linux Web Server","Folder":"General Servers”...
73
Import Module
Authentication Header in dict
Build URL
Submit Request
Print the Response
Как начать использовать UCS Director REST API
Включить Developer Menu • REST API Browser • Примеры кода Скопировать REST Access Key • По сути логин/пароль
74
REST API Browser
• Находится в меню Policy -> Orchestration
• Структурирован в папки • Сотни API вызовов • Рекомендуем пользоваться поиском
• Double-click для подробной информации и примеров
75
REST API Browser
76
Reference: REST API Cookbook
Заключение
§ UCS Manager – серверная платформа с управлением на основе моделей, с развитым API и возможностями автоматизации § Как PowerShell, так и Python и Perl
§ UCS Director – расширяемая платформа для автоматизации § СloupiaScript § Поддержка PowerShell и SSH § Open Automation и SDK
§ Вызовы к UCS Director «извне» § REST API. Пример из реальной жизни – в следующей презентации § PowerShell
Основные тезисы
• DevNet: http://developer.cisco.com
• UCS Director
• Worflow index
• https://communities.cisco.com/docs/DOC-56419
• REST Developer guide
• http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/ucs-director/rest-api-guide/5-2/b_Cisco_UCS_Director_REST_Developer_Guide_52.html
• CloupiaScript Cookbook
• http://www.cisco.com/c/dam/en/us/td/docs/unified_computing/ucs/ucs-director/cloupia-script-cookbook/5-0/CloupiaScript-Cookbook.pdf
• OpenAutomation
• http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/ucs-director/open-automation-api-guide/5-1/b_UCSD_Open_Automation_Developer_Guide_5_1.html
• XML parsing software • XMLSpear (Mac & Windows)
Полезные ссылки
CiscoRu Cisco CiscoRussia
Ждем ваших сообщений с хештегом #CiscoConnectRu
CiscoRu
Пожалуйста, заполните анкеты. Ваше мнение очень важно для нас.
Спасибо! Евгений Лагунцов [email protected]
© 2015 Cisco and/or its affiliates. All rights reserved.