Продолжаем плавную миграцию на vRealize Automation 8, сегодня на очереди управление по API. В vRO 7 для управления vRA использовались плагины vCAC и vCACCAFE, в 8й версии управление только по REST API. Пакета от VMware пока нет, а процессы нужны прямо сейчас. Чтобы сэкономить время на старте, предлагаю начать работу с небольшого набора базовых процессов.
vRA 8.x REST API
vRA 8 находится в стадии активной разработки, поэтому в API реализованы не все необходимые функции, либо документация не успевает за изменениями.
- Знакомство с API лучше начать с данного руководства: https://code.vmware.com/docs/12597/vrealize-automation-8-2-api-programming-guide;
- Более полное описание доступных запросов можно найти на https://developer.vmware.com и во встроенной документации Вашего vRA: https://<your_vra8>/automation-ui/api-docs/.
При обращении к функциям REST API, vRealize Automation 8 требует передавать в заголовке каждого запроса токен аутентификации.
Для получения токена аутентификации сначала нужно обратиться к Identity Service API для получения API-токена (refresh token). Затем, используя API-токен и IaaS API нужно получить токен аутентификации (access token). В vRA 8.0 процесс получения токена немного отличался от vRA последних версий, поэтому всегда смотрите документацию именно для Вашей версии.
- refresh token действителен 90 дней, его обновление лучше делать по расписанию;
- access token действителен всего 8 часов, его тоже можно обновлять по расписанию, либо можно запрашивать новый токен при необходимости.
Пакет управления vRA 8
v1.1.0
В первой версии пакета реализованы основные процессы для автоматизации создания проектов vRA и работы с элементами каталога:
- настройка сетей, создание диапазонов IP и сетевых профилей;
- получение информации о различных объектах vRA: зоны, регионы, проекты;
- создание нового проекта;
- получение информации об элементах каталога, деплойментах, ресурсах;
- создание новых деплойментов и вызов действий на деплойментах и их ресурсах.
Процесс выполнения запроса
Основной процесс, который выполняет все запросы к API vRA8 называется «Invoke a REST operation (vRA)». Все параметры для соединения с сервером хранятся в конфигурационном элементе vra-api. На вход процесс принимает параметры запроса: param_0 .. param_3, тело запроса, если оно необходимо: content, и название REST-операции. Процесс сам находит на хосте объект REST:RESTOperation по имени, поэтому не требуется указывать вызываемые операции в каждом процессе.
При возникновении ошибки выполняется проверка возвращаемого статуса и заголовков ответа. Если ошибка произошла из-за истечения срока действия токена аутентификации (на схеме это элемент “Token expired?”), то запрашивается новый токен, и запрос повторяется. Это исключает ненужные обновления токена несколько раз в день.
if (statusCode == 401) {
var headerWwwAuthenticate = headers.get("Www-Authenticate");
if (headerWwwAuthenticate.indexOf("Jwt expired") != -1)
return true;
}
return false;
Подготовка пакета к работе
1. Установите пакет в vRealize Orchestrator:
- Скачайте vRO пакет ru.zabedu.vra.package;
- Импортируйте пакет в оркестратор через вкладку Packages;
- Проверьте, что все элементы успешно импортированы: процессы, действия, конфигурационные элементы.
2. Запустите процесс «Initialize (vRA)», данный процесс выполняет всю необходимую подготовку пакета к работе, а именно:
- Регистрацию REST-хоста — «Add REST host (vRA)» и сохранение ссылки на хост в конфигурационном элементе vra_api;
- Запуск процесса регистрации используемых REST-операций: «Add REST operations (vRA)»;
- Сохранение учетной записи пользователя (для получения refresh-токена) в конфигурационном элементе;
- Получение и сохранение refresh-токена vRA: «Update refresh token»;
- Получение и сохранение access-токена vRA: «Update access token»;
- Создание расписания для обновления refresh-токена.
Данных процессов будет недостаточно, чтобы автоматизировать работу с vRA (автоматизация работы системы автоматизации). Но на их основе будет проще разрабатывать необходимые процессы, ну или пишите…, будем разбираться вместе.