Sdk vmware что это
The vsphere-automation-sdk-rest has been discontinued. This repo is a READ ONLY repo. Refer below links for REST API documentation and Postman samples.
VMware vSphere Automation SDK for REST
Table of Contents
The VMware vSphere Automation SDK for REST enables programmatic access to vSphere. The SDK includes Postman examples.
Supported vCenter Releases:
All samples support vCenter 6.7. Tagging samples also support vCenter 6.0.
The VMware vSphere Automation SDK for REST is intended for the following audiences:
- Developers looking for REST samples for the REST APIs
What’s in the SDK?
The VMware vSphere Automation SDK for REST provides a client SDK that contains samples that demonstrate how to use the vSphere Automation REST API and sample code. The following table contains a brief description of the contents of the vSphere Automation SDK for REST.
Directory structure (under VMware-vSphere-Automation-SDK-REST):
Directory | Contents |
---|---|
samples/postman | Postman samples that demonstrate how to construct REST API requests for Virtual Machine Operations. |
Developer Certificate of Origin
Before you start working with this project, please read our Developer Certificate of Origin. All contributions to this repository must be signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on as an open-source patch.
The following information must be included in the README.md or in the sample docstring in case a README already exists in same folder.
- Author Name
- This can include full name, email address or other identifiable piece of information that would allow interested parties to contact author with questions.
- Date the sample was originally written
- What does the sample do?
The following information should be included when possible. Inclusion of information provides valuable information to consumers of the resource.
- vSphere version against which the sample was developed/tested
- SDK version against which the sample was developed/tested
- Additional Version information for any dependencies against which the sample was developed/tested
- Follow the GitHub process
- Please use one branch per sample or change-set
- Please use one commit and pull request per sample
- Please post the sample output along with the pull request
- If you include a license with your sample, use the project license
Ownership of any and all submitted samples are maintained by the submitter.
Any bugs or other issues should be filed within GitHub by way of the repository’s Issue Tracker.
Any community member can resolve issues within the repository, however only the board member can approve the update. Once approved, assuming the resolution involves a pull request, only a board member will be able to merge and close the request.
VMware Sample Exchange
Sample Exchange can be allowed to access your GitHub resources, by way of a linking process, where they can be indexed and searched by the community. There are VMware social media accounts which will advertise resources posted to the site and there's no additional accounts needed, as the VMware Sample Exchange uses MyVMware credentials.
Repository Administrator Resources
Board members are volunteers from the SDK community and VMware staff members, board members are not held responsible for any issues which may occur from running of samples from this repository.
- Ravi Chadalawada (VMware)
- J.R. Garcia (VMware)
Approval of Additions
Items added to the repository, including items from the Board members, require 2 votes from the board members before being added to the repository. The approving members will have ideally downloaded and tested the item. When two “Approved for Merge” comments are added from board members, the pull can then be committed to the repository.
About
REST (Postman and JavaScript) samples and API reference documentation for vSphere using the VMware REST API
VMware vSphere Automation SDK for Python
Table of Contents
This document describes the vSphere Automation Python SDK samples that use the vSphere Automation python client library. Additionally, some of the samples demonstrate the combined use of the vSphere Automation and vSphere APIs. To support this combined use, the vSphere Automation Python SDK samples require the vSphere Management SDK packages (pyVmomi) to be installed on the client. The samples have been developed to work with python 2.7.x and 3.3+
Supported OnPrem vCenter Releases
vCenter 6.0, 6.5, 6.7, 7.0, 7.0U1, 7.0U2 and 7.0U2 mp1. Certain APIs and samples that are introduced in 6.5 release, such as vCenter, Virtual Machine and Appliance Management. Please refer to the notes in each sample for detailed compatibility information.
Supported NSX-T Releases
NSX-T 2.2, 2.3, 3.0 and VMC 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.14
VMware Cloud on AWS Support
The VMware Cloud on AWS API and samples are currently available as a preview and are subject to change in the future.
Quick Start Guide
Prepare a Python Development Environment
We recommend you to install latest Python and pip on your system.
A Python virtual environment is also highly recommended.
Installing Required Python Packages
Be sure to upgrade to the latest pip and setuptools.
NOTE: The SDK also requires OpenSSL 1.0.1+ if you want to connect to vSphere 6.5+ in order to support TLS1.1 & 1.2
Connect to a vCenter Server
Output in a Python Interpreter:
NOTE: If you are using Bash, be sure to use single quote for username and password to preserve the values. If you use double quote, you will have to escape special characters, such as "$". See Bash manual
Connect to VMware Cloud on AWS
Output in a Python Interpreter:
Run SDK Samples
In this section we will walk you through the steps to run the sample code for vSphere and VMware Cloud on AWS APIs.
First, set PYTHONPATH to use SDK helper methods
Run VMware Cloud on AWS Samples
Run vSphere Samples
A vSphere test environment is required with the following configuration:
- 1 vCenter Server
- 2 ESX hosts
- 1 NFS Datastore with at least 3GB of free capacity
Note Please have the details of these available but do not have any configuration pre-created on vCenter server or ESXi Hosts, for example there should be no existing datacenters, clusters or attached hosts on the vCenter server.
Running the SDK Sample Setup Script
Before executing the samples we'll need to setup the vSphere test environment using one of the sample scripts (samples/vsphere/vcenter/setup/main.py). The script will perform the following:
- Create 2 test Datacenters
- Create a test Cluster
- Create Test Folders for VM Storage
- Attach the hosts
- Create a Distributed Switch
- Create a Distributed Portgroup
- Attach the NFS datastore (if Selected) to the hosts
- Copy the Photon OS ISO image downloaded from VMware's bintray server to the datastore
- Create directories to add sample ports
First, edit settings in samples/vsphere/vcenter/setup/testbed.py and replace everything in < > brackets with your environment information. Leave the rest of the settings in this file at their default values.
At this point, we're ready to run the setup script:
After completion you will see from the output and also the vSphere Client that the environment has now been fully setup and is ready to easily run further samples.
To view other available command-line options:
Run the vAPI vCenter sample suite:
Run a specific sample in a standalone mode:
vSphere API Documentation
VMware Cloud on AWS API Documentation
NSX API Documentation
Common issues you may run into while installing the sdk and running samples are listed here
Repository Administrator Resources
Board members are volunteers from the SDK community and VMware staff members, board members are not held responsible for any issues which may occur from running of samples from this repository.
- Anusha Hegde (VMware)
- Pavan Bidkar (VMware)
About
Python samples, language bindings, and API reference documentation for vSphere, VMC, and NSX-T using the VMware REST API
В нашем блоге на Хабре мы много рассказываем о внедрении подходов DevOps и разработанных нами инструментах автоматизации разработки и тестирования. Сегодня речь пойдет о том, как мы решали проблему взаимодействия с VMware vSphere.
Немного истории
В vSphere работают все наши виртуальные машины — как сборочные, так и тестовые серверы.
Пару лет назад до появления нашей собственной системы Continuous Integration большая часть наших сборок была перенесена на инструмент TeamCity. На тот момент у нас не было тестовых и деплойных конфигураций, однако необходимость их развития становилась все более явной.
На середину 2014 года нам было известно два решения для автоматизации работы с виртуальными машинами: использование собственного API VMware для работы с vSphere (библиотека VIX API) и применение библиотеки pysphere. У каждого из этих инструментов были недостатки.
У VIX API был слишком высокий для нас порог вхождения:
- Инструмент представлял собой набор сложных и плохо документированных C-библиотек.
- Всю интеграцию с нашими CI-системами пришлось бы писать самостоятельно на C.
- инструмент написан под Python 2.7;
- отсутствовал интерфейс командной строки;
- продукт представлял собой набор разрозненных классов, хаотично раскиданных по скриптам пакета;
- проект только развивался и содержал множество багов.
Проект vSphereTools
Прежде чем начать программировать, мы составили требования к набору инструментов автоматизации.
- продукт должен был поддерживать работу из консоли с широким набором команд;
- иметь понятное API для возможности его импорта как обычной python-библиотеки;
- быть встроенным в TeamCity в качестве метараннеров, доступных для выбора в шагах конфигураций.
Все довольно просто: инициатор, которым может быть пользователь или скрипт, отправляет команды, полученные через командную строку, инструменту vSphereTools, который переправляет данные библиотеке pysphere. Дальше запрос попадает в vSphere, где обрабатывается и отправляется виртуальной машине, которая выдает то, что нам нужно («стейты», атрибуты и т.п.)
Требования к окружению для vSphereTools были минимальны:
- нужен служебный пользователь для доступа к vSphere;
- с машины, на которой запускается vSphereTools, должен быть доступен сервис vcenter, а также ESX, на котором работает целевая виртуальная машина.
- на целевой «виртуалке» должны быть также установлены инструменты VMware Tools;
- на машине, на которой запускаются vSphereTools, должен быть установлен Python 2* версий 2.7 или старше.
В настоящий момент метараннеры и скрипты vSphereTools используются при разработке и тестировании практических всех крупных продуктов Positive Technologies — например, MaxPatrol SIEM, PT Application Firewall и Application Inspector и во многих других проектах.
Ограничения и возможные доработки
Как у любого инструмента у нашего продукта vSphereTools есть и свои ограничения:
- Последняя доступная в индексе версия pysphere 0.1.8, а именно она лежит в основе vSphereTools.
- Новые методы для vSphereTools приходится реализовывать только силами DevOps-отдела компании.
- Новые версии VMware vSphere возможно не будут поддерживать старый API.
- В настоящий момент наши скрипты работают только с Python 2* (2.7 и выше).
P. S. Рассказ о проекте vSphereTools был представлен в рамках DevOps-митапа, который состоялся осенью в Москве.
В нашей компании активно используется платформа для виртуализации VMware vSphere. В ней живут тестовые среды продуктов, демонстрационные стенды, эмуляторы различных инфраструктур заказчиков и прочие не менее важные «виртуалки». Несмотря на достаточную мощность нашей инфраструктуры, доступ большого числа человек к управлению виртуальными машинами постоянно приводит к конфликтам и снижению производительности фермы. Разделение пулов между отделами (инженерами, тестировщиками, сейлами и разработчиками) проблему до конца не решает, поэтому периодически приходится разбираться, кто всем мешает и кто съел все ресурсы. При количестве виртуальных машин далеко за сотню сделать это вручную бывает проблематично, поэтому мы научились использовать API. VMware vSphere имеет довольно богатое API, которое незаслуженно слабо освещено на Хабре, хотя прикладная область применения довольна широка.
В данной статье будут приведены примеры взаимодействия в рамках задач администрирования с помощью Python.
А в следующей статье рассмотрим администрирование с использованием Ansible.Для Python есть библиотека под названием pyVmomi от самой VMware.
Подготовка
В папке проекта создадим конфигурационный файл config.txt следующего содержания:
Для его чтения используем модуль configparser.
Чтобы подключиться к сфере, используются методы pyVim.connect.SmartConnect и pyVim.connect.SmartConnectNoSSL. Второй применяется для самоподписанных сертификатов.Список машин по месту на датасторах
Предположим, на датасторах закончилось место. Эту проблему мы сейчас будем решать. Цель — получить список виртуальных машин, отсортированный по убыванию размера занятого места на датасторах. Также выведем максимальный размер файла, до которого может вырасти диск виртуальной машины, и количество места, занятого в гостевой системе.
Получить список виртуальных машин можно следующим образом:
Как можно было заметить, возвращается список объектов класса VirtualMachine. Сейчас его и реализуем:
Вывод данных уже зависит от необходимости. Самое простое — вывести в консоль:Размеры и количество снапшотов
С размерами виртуальных машин разобрались. Предположим, мы хотим узнать, сколько снапшотов имеет каждая виртуальная машина, и сколько места они занимают.
Логика предыдущего примера сохраняется, только теперь наш класс VirtualMachine будет выглядеть так:
И вывод будет отсортирован уже по размеру или по количеству:Восстановление снапшота
Раз пошла речь про снапшоты, то поговорим об их восстановлении.
Гипотетическая задача — восстановить последние созданные снапшоты, в названии которых присутствует строка infra.
Для восстановления снапшота необходимо создать задачу RevertToSnapshot_Task().
Сперва получим необходимый список машин:
Для получения последнего созданного снапшота вернем последний элемент списка vm.snapshot.rootSnapshotList, отсортированного по полю createTime:
Теперь же можем восстановить этот снапшот:
Теперь все объединим:Включение/выключение по списку
Для выключения виртуальной машины необходимо создать задачу PowerOffVM_Task().
Напишем функцию выключения машины, если она включена:
Такое выключение машины будет принудительным. Гораздо правильнее будет вызвать задачу ShutdownGuest():Читайте также: