Еще в настольной платформе виртуализации VMware Fusion 10 для Mac OS, вышедшей осенью прошлого года, появился программный интерфейс REST API, который позволяет управлять как самой платформой, так и виртуальными машинами, исполняемыми на ней. Совсем недавно, когда вышла версия VMware Workstation 2018 Tech Preview, в которой также появился новый REST API полностью идентичный таковому в VMware Fusion. Однако для Workstation он пока работает только для хостовой ОС Windows.
REST API позволяет управлять различными функциями виртуальных машин, например их inventory, питанием, клонированием, сетевым взаимодействием, получением IP и MAC-адресов, а также другими аспектами их функционирования. Все это позволяет проводить автоматизированные тесты в виртуальных машинах, когда их требуется клонировать и настраивать, а затем уничтожать по окончании теста. Эти функции пока доступны только для Windows.
Давайте посмотрим, как это работает. Сначала сконфигурируем доступ к REST API, задав логин и пароль для авторизации:
Чтобы настроить Credentials к REST API на машине с Workstation, нужно перейти в папку C:\Program Files (x86)\VMware\VMware Workstation и запустить там: vmrest.exe --config
На VMware Fusion нужно пойти в /Applications/VMware Fusion.app/Contents/Public и запустить там: ./vmrest -C
На Workstation вас попросят задать пользователя и пароль:
C:\Program Files (x86)\VMware\VMware Workstation>vmrest --config
VMware Workstation REST API
Copyright (C) 2018 VMware Inc.
All Rights Reserved
vmrest 1.1.0 build-8888902
Username:alex
New password:
Retype new password:
Processing...
Credential updated successfully
На Fusion это будет выглядеть вот так:
MacBook-Pro-alex:Public alex$ ./vmrest -C
VMware Fusion REST API
Copyright (C) 2015-2017 VMware Inc.
All Rights Reserved
vmrest 1.0.0 build 6754183
Username:alex
New password:
Retype new password:
Processing...
Credential updated successfully
После этого можно запускать REST API:
На Fusion это делается командой ./vmrest
На Workstation надо просто запустить vmrest.exe
После этого у вас на рабочей станции запустится веб-сервер, через который вы сможете получить доступ к REST API как через браузер, так и через сторонние REST-клиенты или системы, которые вы хотите интегрировать с Workstation или Fusion. На Workstation для доступа к веб-серверу на дефолтном порту используйте адрес:
http:\\127.0.0.1:8697
На Fusion ссылка аналогичная (можно писать 127.0.0.1 вместо localhost):
http:\\localhost:8697
Далее для обеих платформ процедура выглядит абсолютно одинаково, поэтому дальше мы не будем уточнять, где это исполняется.
Первое что вы увидите - это REST API Explorer, запущенный в интерфейсе Swagger, в котором показаны доступные для использования функции по работе с хостом и виртуальными машинами:
Тут вам не понадобится использовать Curl, PowerShell, Postman или другие инструменты, чтобы протестировать основные функции API.
Здесь все просто:
Host Networks Management - здесь можно посмотреть все виртуальные сети на хосте, а добавить, изменить или удалить форвардинг портов.
Maintenance - можно задать режим работы демона (можно его выключить для перехода в режим обслуживания).
VM Management - управление виртуальными машинами (получение их списка и информации о ВМ, задание их настроек, клонирование ВМ и удаление).
VM Network Adapters Management - управление сетевыми адаптерами ВМ (получение списка сетевых адаптеров и IP-адресов ВМ, а также создание, обновление или удаление сетевых адаптеров ВМ).
VM Power Management - получение состояния ВМ и управление ее питанием.
VM Shared Folders Management - монтирование, размонтирование или изменение конфигурации общих папок на хосте.
После запуска веб-интерфейса, нужно сначала авторизоваться, нажав Authorize в правом верхнем углу и введя логин и пароль, которые мы задали в самом начале:
Далее можно нажать на Show/Hide для некоторых пунктов и посмотреть доступные операции:
Обратите внимание на цветовое кодирование, оно поможет вам понимать, чем вы занимаетесь при тестировании API:
Методы GET будут подсвечены синим цветом - это абсолютно безопасно, так как они только читают данные.
Желтым цветом будут подсвечены методы PUT - это изменение каких-либо настроек.
Зеленые методы POST - это создание новых сущностей (например, сетевых адаптеров) или выполнение операций (например, клонирование ВМ).
Красные методы DELETE - удаление сущностей.
Каждую операцию можно раскрыть подробнее, нажав на соответствующую строчку. Например, раскроем GET /vms для VM Management:
Здесь объясняется модель данных JSON-массива, в которой ожидается прием параметров.
Если посмотреть ниже, то мы найдем кнопку TRY IT OUT!, по нажатию на которую мы получим ответ в блоке Responce Body, где будет ID виртуальных машин и путь к ним в хостовой системе:
В данном случае код ответа (Responce Code) был 200, но бывают и другие коды ответа, обратите на них внимание:
Давайте попробуем уже метод не чтения, а метод PUT (обновление настроек). Например, для PUT /vms/{id}. Здесь мы видим, что можно поменять число процессоров ВМ и объем выделенной памяти:
Если вы кликните справа на Example Value, то значение примера подставится в окошко parameters и вам останется лишь поменять числовые значения. После того, как вы измените параметры и нажмете try it out, в поле Responce body должна отобразиться новая конфигурация ВМ.
Также можно, например, создать сетевой адаптер для виртуальной машины с помощью метода POST:
Ну и затем удалить его с помощью метода DELETE (обратите внимание, что Responce code в этом случае будет 204, а не 200):
Кстати, имейте в виду, что удаление ВМ в данном случае произойдет без подтверждения, так что будьте осторожны.
Ну а дальше вы можете получить доступ к REST API Workstation или Fusion через любой REST-клиент, например, через PowerShell или Postman, но самый простой метод - это использовать curl. Как это сделать, вы можете прочитать вот в этой статье Вильяма Лама.