VMware представила унифицированный фреймворк разработки VCF SDK 9.0 для Python и Java.
Улучшение опыта разработчиков (Developer Experience) — один из главных приоритетов в дальнейшем развитии платформы VMware Cloud Foundation (VCF). Если рассматривать автоматизацию в целом, то можно выделить две чёткие категории пользователей: администраторы и разработчики.
Администраторы в основном сосредоточены на операционной автоматизации, включая развертывание, конфигурацию и управление жизненным циклом среды VCF. Их потребности в автоматизации обычно реализуются через написание скриптов и рабочих процессов, которые управляют инфраструктурой в масштабах всей организации.
Разработчики, напротив, ориентированы на интеграцию возможностей VCF в пользовательские приложения и решения. Им необходимы API и SDK, обеспечивающие программный доступ к сервисам и данным VCF, позволяя разрабатывать собственные инструменты, сервисы и расширения. Потребности в автоматизации у этих двух групп значительно различаются и соответствуют их уникальным ролям в экосистеме VCF. Понимая эти различия, Broadcom предлагает набор интерфейсов прикладного программирования (API), средств разработки (SDK) и разнообразных инструментов автоматизации, таких как PowerCLI, Terraform и Ansible.
Оглядываясь назад, можно сказать, что VMware хорошо обслуживала сообщество администраторов, предоставляя им различные инструменты. Однако API и SDK требовали улучшения в области документации, лучшей интеграции с VCF-стеком в целом и упрощения процесса для разработчиков. До выхода VCF 9.0 разработчики использовали отдельные SDK решений, сталкиваясь с трудностями, связанными с их интеграцией — такими как совместимость, аутентификация и сложность API. С выходом VCF 9.0 VMware рада объявить о доступности Unified VCF SDK 9.0. Давайте подробнее рассмотрим, что это такое.
Unified VCF SDK
Unified VCF SDK доступен с привязками к двум языкам — Java и Python. Это объединённый SDK, который включает в себя все основные SDK решений VCF в единый, упрощённый пакет. В своей первой версии Unified VCF SDK объединяет существующие SDK и добавляет новые библиотеки для установщика VCF и менеджера SDDC.
Список компонентов VCF, включённых в первую версию Unified VCF SDK:
VMware vSphere
VMware vSAN
VMware Cloud Foundation SDDC Manager (новый)
VMware Cloud Foundation Installer (новый)
VMware vSAN Data Protection
Несмотря на то, что Unified VCF SDK поставляется как единый пакет, пользователи могут устанавливать и использовать только те библиотеки, которые необходимы для конкретных задач.
Для краткости в этом тексте Unified VCF SDK будет обозначаться как VCF SDK.
Преимущества
VCF SDK обеспечивает простой, расширяемый и единообразный опыт для разработчиков на протяжении всего жизненного цикла разработки.
Упрощённый жизненный цикл разработчика
С этим релизом были стандартизированы методы доставки и распространения, чтобы поддерживать различные сценарии развертывания:
Онлайн-установка через PyPI (Python) и Maven (Java) — для прямого доступа и лёгкой установки/обновлений.
Офлайн-установка через портал разработчиков Broadcom — идеально для сред с ограниченным доступом в интернет.
Готовность к CI/CD — интеграции через пакеты и инструкции, размещённые на GitHub, для бесшовного включения в автоматизированные пайплайны при установке и обновлении.
Улучшенная документация и онбординг
VMware переработала документацию, чтобы упростить старт:
OpenAPI-спецификация описывает API в стандартизированном машинно-читаемом формате (YAML/JSON). С выходом VCF SDK были также публикованы OpenAPI-спецификации для API-эндпоинтов. Это не просто документация — это шаг к философии API-first и ориентированности на разработчиков.
С помощью OpenAPI-спецификаций разработчики могут:
Автоматически генерировать клиентские библиотеки на предпочитаемых языках с помощью инструментов вроде Swagger Codegen, Kiota или OpenAPI Generator.
Загружать спецификации в такие инструменты, как Swagger UI, Redoc или Postman, чтобы визуально исследовать доступные эндпоинты, параметры, схемы ответов и сообщения об ошибках.
pyVmomi — это Python SDK для API управления VMware vSphere, который позволяет быстро создавать решения, интегрированные с VMware ESX и vCenter Server.
vCenter Server
Библиотека VMware vCenter Server содержит клиентские привязки для автоматизационных API VMware vCenter Server.
VMware vSAN Data Protection
Библиотека VMware vSAN Data Protection содержит клиентские привязки для управления встроенными снапшотами, хранящимися локально в кластере vSAN, восстановления ВМ после сбоев или атак вымогателей и т.д.
Библиотека VMware SDDC Manager содержит клиентские привязки к автоматизационным API для управления компонентами инфраструктуры программно-определяемого датацентра (SDDC).
Установщик VMware Cloud Foundation (VCF Installer)
Модуль VCF Installer в составе VCF SDK содержит библиотеки для проверки, развертывания, преобразования и мониторинга установок VCF и VVF с использованием новых или уже существующих компонентов.
Каналы распространения
Unified VCF SDK доступен через различные каналы распространения. Это сделано для того, чтобы удовлетворить потребности разных типов сред и разработчиков — каждый может получить доступ к SDK в наиболее удобном для него месте. Ниже перечислены доступные каналы, откуда можно загрузить VCF SDK.
Портал разработчиков Broadcom
VCF Python SDK доступен для загрузки на портале разработчиков Broadcom. Вы можете распаковать содержимое ZIP-архива vcf-python-sdk-9.0.0.0-24798170.zip, чтобы ознакомиться с библиотеками SDK, утилитами и примерами. Однако сторонние зависимости не входят в состав архива — они перечислены в файле requirements-third-party.txt, находящемся внутри vcf-python-sdk-9.0.0.0-24798170.zip.
Файлы .whl компонентов VCF SDK находятся в папках ../pypi/*, а примеры кода для компонентов расположены в директориях вида /<имя_компонента>-samples/.
PyPI
VCF SDK доступен в PyPI, что позволяет разработчикам устанавливать и обновлять модуль онлайн. Это самый быстрый способ начать работу с VCF SDK.
Чтобы установить VCF SDK, выполните следующую команду:
$ pip install vcf-sdk
Пакеты, установленные через pip, можно автоматически обновлять. Чтобы обновить VCF SDK, используйте команду:
$ pip install --upgrade vcf-sdk
Чтобы установить конкретную библиотеку из состава VCF SDK, выполните:
Модуль vCenter в составе VCF SDK предоставляет операции, связанные с контент-библиотеками, развертыванием ресурсов, тегированием, а также управлением внутренними и внешними сертификатами безопасности.
Управление виртуальной инфраструктурой (VIM)
Модуль VIM (Virtual Infrastructure Management) предоставляет операции для управления вычислительными, сетевыми и хранилищными ресурсами. Эти ресурсы включают виртуальные машины, хосты ESXi, кластеры, хранилища данных, сети и системные абстракции, такие как события, тревоги, авторизация и расширения через плагины.
SSOCLIENT
Модуль единого входа (Single Sign-On) взаимодействует с сервисом Security Token Service (STS) для выдачи SAML-токенов, необходимых для аутентификации операций с API vCenter.
VMware vSAN Data Protection (vSAN DP)
С помощью встроенных снимков, локально хранящихся в кластере vSAN, модуль защиты данных vSAN обеспечивает быстрое восстановление ВМ после сбоев или атак вымогателей. API защиты данных vSAN управляет группами защиты и обнаруживает снимки виртуальных машин.
Управление жизненным циклом виртуального хранилища (VSLM)
Модуль VSLM (Virtual Storage Lifecycle Management) предоставляет операции, связанные с First Class Disks (FCD) — виртуальными дисками, не привязанными к конкретной виртуальной машине.
Служба мониторинга хранилища (SMS)
Модуль SMS (Storage Monitoring Service) предоставляет методы для получения информации о доступной топологии хранилищ, их возможностях и текущем состоянии. API Storage Awareness (VASA) позволяет хранилищам интегрироваться с vCenter для расширенного управления. Провайдеры VASA предоставляют данные о состоянии, конфигурации и емкости физических устройств хранения. SMS устанавливает и поддерживает соединения с провайдерами VASA и извлекает из них информацию о доступности хранилищ.
Управление на основе политик хранения (SPBM)
Модуль SPBM (Storage Policy Based Management) предоставляет операции для работы с политиками хранения. Эти политики описывают требования к хранению для виртуальных машин и возможности провайдеров хранения.
vSAN
Модуль vSAN предоставляет средства конфигурации и мониторинга vSAN-кластеров хранения и связанных сервисов на хостах ESXi и экземплярах vCenter Server. Включает функции работы с виртуальными дисками, такие как монтирование, разметка, безопасное удаление и создание снимков.
Менеджер агентов ESX (EAM)
Менеджер агентов ESX (ESX Agent Manager) позволяет разработчикам расширять функциональность среды vSphere путём регистрации пользовательских программ как расширений vCenter Server. EAM действует как посредник между vCenter и такими решениями, управляя развертыванием и мониторингом агентских ВМ и установочных пакетов VIB.
SDDC Manager
Модуль SDDC Manager предоставляет операции для управления и мониторинга физической и виртуальной инфраструктуры, развернутой в рамках VMware Cloud Foundation.
Установщик VMware Cloud Foundation (VCF Installer)
Модуль VCF Installer предоставляет операции для проверки, развертывания, преобразования и мониторинга установок VCF и VVF с использованием новых или уже существующих компонентов.
Каналы распространения
Аналогично Python SDK, JAVA SDK также доступен через различные каналы распространения, что позволяет использовать его в самых разных средах.
Портал разработчиков Broadcom
VCF Java SDK доступен для загрузки на портале разработчиков Broadcom. Вы можете распаковать содержимое ZIP-архива vcf-java-sdk-9.0.0.0-24798170.zip, чтобы ознакомиться с библиотеками SDK, утилитами и примерами.
Файлы привязок SDK .jar, утилит .jar, а также BOM-файлы находятся в папке:
../maven/com/vmware/*
Maven
Артефакты VCF SDK доступны в Maven Central под groupId: com.vmware.sdk. В таблице ниже указаны данные об артефактах VCF SDK для версии 9.0.0.0.
Чтобы начать работу с VCF SDK, добавьте зависимость в файл pom.xml вашего проекта:
С выходом VCF 9.0 VMware начала публиковать журнал изменений API. В нём отражаются все изменения: новые API, обновления существующих и уведомления об устаревании. Ознакомиться с журналом изменений можно здесь.
С выпуском VMware Cloud Foundation 9.0 объединение различных библиотек в один SDK с улучшенной документацией, примерами кода и спецификацией OpenAPI — это важный шаг к простому, расширяемому и согласованному опыту для разработчиков.
Следующий шаг за вами — попробуйте Unified VCF SDK 9.0 и поделитесь с нами своими отзывами.
Не секрет, что решение ChatGPT прочно вошло в ежедневный набор инструментов ИТ-специалистов, особенно разработчиков ПО. Администраторы VMware vSphere - не исключение, ведь им часто приходится разрабатывать сценарии на базе различных фреймворков и SDK, что часто включает в себя шаблонные задачи, которые вполне можно автоматизировать средствами ChatGPT.
Эрик Слуф недавно занялся этим вопросом. Начал он со следующего промта:
Could you develop a Python script for VMware vCenter to retrieve the virtual machines and allow the user to control their power states? The server details are: host name 'vc.ntpro.local', username 'administrator@ntpro.local', password 'VMware1!' Please ignore certificate errors and use tls.
Ответ ChatGPT оказался продуктивным, с рекомендацией использовать библиотеку pyvmomi для взаимодействия с VMware vCenter. Он дал совет установить библиотеку pyvmomi через pip, если это еще не сделано. Полный код на Python можно найти по этой ссылке.
Для управления проектами на Python можно использовать PyCharm Community Edition. Модуль pyvmomi важен для подобных задач и может быть удобно установлен через терминал с помощью команды pip install pyvmomi. PyCharm также предлагает графический интерфейс для работы с пакетами Python.
После создания нового файла Python вставьте скрипт, предоставленный ChatGPT, в редактор PyCharm. Для выполнения могут потребоваться некоторые корректировки, такие как обновление версий TLS. Если возникнут ошибки, ChatGPT можно использовать для устранения неполадок и поиска новых решений. Как только усовершенствованный скрипт будет реализован, он сможет успешно извлекать и управлять состояниями питания виртуальных машин из vCenter.
На следующем этапе Эрик попросил ChatGPT интегрировать базовый графический интерфейс в скрипт, используя предустановленный модуль TKInter из Python3. Полученный интерфейс отображает список виртуальных машин с функциональными элементами управления питанием. Несмотря на небольшую проблему с "задачей ожидания" во время демонстрации, основная функциональность осталась неизменной.
Помните, что повторные запросы не обязательно приведут к одинаковым результатам при запросе кода у ChatGPT. Точность ваших вопросов повышает способность ChatGPT генерировать эффективный код. Если в вашем сценарии возникают проблемы, ChatGPT может помочь в отладке и даже подробно объяснить принципы работы скрипта.
На днях компания VMware выпутсила большое обновление утилиты vSphere Diagnostic Tool версии 2.0.1, которая теперь называется VCF Diagnostic Tool for vSphere (VDT). Напомним, что это python-скрипт, который запускает диагностические команды на виртуальном модуле Photon OS (на его базе построен, например, vCenter Server Appliance, где скрипт и нужно запускать), а также в перспективе это будет работать и в среде VMware ESXi. О предыдущем обновлении vSphere Diagnostic Tool (VDT) мы писали вот тут.
VDT 2 был переписан с нуля с целью эволюции от простой коллекции скриптов на Python к фреймворку для отчётности о состоянии инфраструктуры на основе Python. Новая версия предоставляет библиотеки, которые стандартизируют вывод и формат каждой проверки. Это означает, что скоро будет доступна совместимость с дополнительными продуктами от VMware.
Итак, с помощью скрипта вы сможете выполнить следующие проверки состояния инфраструктуры:
Вывод базовой информации о vCenter
Проверки SSO (Lookup Service и Machine ID)
Интеграция с Active Directory
Сертификаты vCenter
Функциональность VMdir
Core-файлы
Использование базы данных vPostgres
Использование дискового пространства
Функционирование DNS
Синхронизация времени и функционирование NTP
Валидность аккаунта Root
Службы vCenter
Проверка механизма VCHA
Функционирование Syslog
Проверки IWA/AD
Проверка Local Identity Source
Для начала работы вы можете воспользоваться следующими статьями базы знаний VMware
На днях компания VMware объявила о том, что решения VMware Cloud on AWS Terraform Provider и Python Automation Utility for VMware Cloud on AWS теперь поддерживают аутентификацию приложений OAuth 2.0 для VMware Cloud, что позволяет зарегистрировать средства автоматизации с поддержкой этого типа аутентификации. Теперь администраторы могут управлять учетными данными, привязанными к API-токенам доступа отдельных разработчиков, на уровне организации.
Объекты OAuth app действуют как сущности в рамках коммуникаций server-to-server и могут быть использованы в разных организациях. Только пользователь, создавший API-токен, может управлять им, а владелец OAuth app - это организация, которая управляется администратором с ролью Developer. Поэтому для использования API, где не требуется связывание токена с пользователем (например, полностью автоматизированные решения), рекомендуется не использовать API-токены персональных аккаунтов.
Это позволяет избежать ситуации, когда аккаунт этого человека был деактивирован или устарел, для него изменилась роль и т.п., что может повлиять на сервисы, использующие этот токен. Вместо этого владелец объекта Organization создает OAuth App с App ID и App Secret, чтобы дать доступ приложению по API. Детали этого процесса на платформе VMware Cloud on AWS приведены вот в этой статье.
Итак, здесь есть 2 важных шага по созданию OAuth: создать объект App и назначить его объекту Org.
Для создания App нужно сделать следующее:
Логинимся в CSP, кликаем на имя пользователя и выбираем для него View Organization
Переходим на вкладку OAuth Apps в самом верху страницы
Нажимаем Create App и выбираем Server to server app
Определяем имя приложения, описание, время жизни токена (Access Token TTL, рекомендуется 30 минут). Надо помнить, что как только токен создан - уже нет способа отозвать доступ, поэтому не надо задавать слишком большое время.
Нажимаем Create. Надо помнить, что стоит максимально ограничивать роли для сервисов и действий в рамках организации минимально необходимыми привилегиями.
Скачиваем копию App ID и App Secret.
Помните, что после этого экрана вы уже не сможете скачать App Secret, но вы можете просмотреть App ID, а сам App Secret можно сгенерировать снова. Другие свойства приложения также можно редактировать после создания.
Назначаем объект App объекту Org:
Нажимаем Add после того, как вы создали App, чтобы добавить приложение в текущую организацию.
Переходим на страницу OAuth Apps со страницы View Organization (у пользователя должны быть права по добавлению в эту организацию)
Последний релиз VMware Cloud on AWS Terraform Provider был обновлен и теперь включает два новых поля в файле переменных variables.tf: client_id и client_secret. Параметр client_id - это идентификатор объекта OAuth App, ассоциированный с организацией, а client_secret - это его пароль. Оба этих параметра вместе используются для аутентификации при вызове VMware Cloud Services API. Помимо этой комбинации, вы можете использовать и один параметр api_token.
Решение Python Automation Utility for VMware Cloud on AWS также было обновлено, чтобы поддерживать метод аутентификации OAuth 2.0 app. Чтобы использовать его, нужно указать параметры oauth_clientId и oauth_clientSecret в файле config.ini, как показано в примере ниже:
По умолчанию механизм аутентификации использует API-токен, указанный в поле refresh_Token файла config.ini. Чтобы использовать новый метод аутентификации OAuth app, нужно добавить параметр -oauth при запуске команд, указанных ниже.
Пример команды для использования аутентификации по умолчанию с использованием refresh_Token:
./pyVMC.py sddc show-sddcs
А вот так нужно запускать эту команду для использования аутентификации OAuth app:
./pyVMC.py sddc show-sddcs –oauth
Для получения полного списка команд и инструкций по использованию средства Python Utility for VMware Cloud on AWS обратитесь к этому документу.
Многие Enterprise-администраторы настраивают автоматический регулярный бэкап решения для виртуализации и агрегации сетей VMware NSX-T из консоли, что описано, например, вот тут.
Между тем, как правильно заметил автор virten.net, при неудачном завершении задачи резервного копирования администратор не получает нотификации даже в дэшборде в разделе алармов.
В случае падения задачи бэкапа информация об этом доступна только в разделе Backup & Restore настроек:
В данном примере неудачно завершился процесс резервного копирования кластера, поэтому нужно смотреть не только на статусы узлов (кстати, времена указаны в миллисекундах).
Коллега с virten.net написал сценарий на Python для Nagios, который позволит вам проверить статус последнего бэкапа кластера NSX-T, а также посмотреть возраст последней имеющейся резервной копии:
usage: check_nsxt_backup.py [-h] -n NSX_HOST [-t TCP_PORT] -u USER -p PASSWORD
[-i] [-a MAX_AGE]
# python check_nsxt_backup.py -n nsx.virten.lab -u audit -p password
NSX-T cluster backup failed
NSX-T node backup is to old (1461 minutes)
На сайте проекта VMware Labs обновилась еще одна интересная штука - средство Python Client for VMware Cloud on AWS 1.2, с помощью которого пользователям публичного облака VMware Cloud on AWS можно автоматизировать операции с инфраструктурой виртуального датацентра VMConAWS SDDC.
Это средство представляет собой не клиент для работы с сервером vCenter, а средство удаленного исполнения задач в облаке, таких как создание сетей или настройка групп и правил безопасности на шлюзах Management и Compute Gateways.
Вот небольшой обзор работы утилиты от ее автора Nico Vibert:
Также у него есть подробная статья об использовании этого средства для запуска задач в облачной среде. Список доступных команд Python Client for VMware Cloud on AWS доступен в инструкции.
Вот что нового появилось в версиях 1.2 и 1.1:
Добавлен Dockerfile для построения Docker-образа, в котором будет запускаться PyVMC
На сайте проекта VMware Labs вышла очередная новая утилита - vSphere Pod Autoscaler, предназначенная для пользователей vSphere PodVM, которые хотят настроить автомасштабирование узлов PodVMs на базе использования ими памяти.
После установки у вас появится утилита vcfkite, которая позволит управлять инфраструктурой VCF через SDDC Manager. Она является кроссплатформенной и протестирована на Linux CentOS и Windows 2012.
Сама утилита это wheel-пакет, который можно развернуть с помощью нативной команды pip3:
Основное назначение данного средства - дать пользователям удобный инструмент для управления VMware Cloud Foundation API с помощью простого языка Python.
Для начала работы вам понадобится Python версии 3.6 или более поздней, а также VCF 4.0.1 или более поздняя.
Скачать Python Utility for VMware Cloud Foundation Management можно по этой ссылке.
Данный SDK представляет собой набор классов Python, предназначенных для автоматизации различных операций на уровне компонентов Cloud Assembly, Service Broker и Code Stream API при разработке новых инструментов, дополняющих средства управления облачной средой.
На сайте проекта VMware Labs появилась интересная утилитка VMFork for pyVmomi для администраторов, которые любят ставить всяческие эксперименты со скриптами. Эта утилитка позволяет создать работающую копию запущенной виртуальной машины посредством скрипта на Python, через VMware vSphere API Python Bindings (pyVmomi). Ранее эти возможности были доступны только через PowerCLI.
Напомним, что VMFork позволяет очень быстро сделать работающую копию работающей виртуальной машины на платформе VMware vSphere. Суть технологии такова, что "на лету" создается клон виртуальной машины (VMX-файл, процесс в памяти), который начинает использовать ту же память (Shared memory), что и родительская ВМ. При этом дочерняя ВМ в общую память писать не может, а для записи собственных данных используется выделенная область памяти. Для дисков аналогично - с использованием технологии Copy-on-write в дельта-диск дочерней ВМ пишутся отличия от базового диска родительской ВМ.