vSphereTools: Як ми створювали відкритий інструмент для автоматизації роботи з vSphere



В нашому блозі на Хабре ми багато розповідаємо про впровадження підходів DevOps і розроблених нами інструментах автоматизації розробки і тестування. Сьогодні мова піде про те, як ми вирішували проблему взаємодії з VMware vSphere.

Трохи історії
В vSphere працюють всі наші віртуальні машини — як складальні, так і тестові сервери.

Пару років тому до появи нашій власній системи Continuous Integration велика частина наших збірок була перенесена на інструмент TeamCity. На той момент у нас не було тестових і деплойных конфігурацій, проте необхідність їх розвитку ставала все більш очевидною.

На середину 2014 року нам було відомо два рішення для автоматизації роботи з віртуальними машинами: використання власного API VMware для роботи з vSphere (бібліотека VIX API) та застосування бібліотеки pysphere. У кожного з цих інструментів були недоліки.

У VIX API був надто високий для нас поріг входження:

  • Інструмент представляв собою набір складних і погано документованих C-бібліотек.
  • Всю інтеграцію з нашими CI-системами довелося б писати самостійно на C.
Бібліотека pysphere взагалі була фактично недокументованій і з рядом проблем:

  • інструмент написаний під Python 2.7;
  • відсутній інтерфейс командного рядка;
  • продукт представляв собою набір розрізнених класів, хаотично розкиданих по скриптам пакета;
  • проект тільки розвивався і містив безліч багів.
Однак якщо порівнювати pysphere з VIX API, то у першого були і свої переваги:

  • Він працює набагато швидше за рахунок використання http rest api для доступу до функцій vSphere.
  • Експертиза в Python у нас в компанії набагато вище, так що поріг входження для використання цього інструмента нижче.
  • Відгуки про нашу самописною бібліотеці PT.VIX поверх VIX API не витримували ніякої критики в плані підтримки та надійності її роботи.
Тому було вирішено використовувати цю бібліотеку та на її базі створити власне рішення.

Проект vSphereTools
Перш ніж почати програмувати, ми склали вимоги до набору інструментів автоматизації.

  • продукт повинен підтримувати роботу з консолі з широким набором команд;
  • мати ясна API для можливості його імпорту як звичайної python-бібліотеки;
  • бути вбудованим в TeamCity як метараннеров, доступних для вибору в кроках конфігурацій.
Концептуальна модель взаємодії vSphereTools з самої «Сферою» представлена нижче:



Все досить просто: ініціатор, яким може бути користувач або скрипт, відправляє команди, отримані через командний рядок, інструменту vSphereTools, який переправляє дані бібліотеці pysphere. Далі запит потрапляє в vSphere, де обробляється і відправляється віртуальній машині, яка видає те, що нам потрібно («стейты», атрибути і т. п.)

Вимоги до оточення для vSphereTools були мінімальні:

  • потрібен службовий користувач для доступу до vSphere;
  • з машини, на якій запускається vSphereTools, повинен бути доступний сервіс vcenter, а також ESX, на якому працює цільова віртуальна машина.
  • на цільовий «виртуалке» повинні бути також встановлені інструменти VMware Tools;
  • на машині, на якій запускаються vSphereTools, повинен бути встановлений Python 2* версій 2.7 або старше.
Повна документація з прикладами доступна в відкритому співтоваристві DevOpsHQ. У підсумку скрипти vSphereTools реалізують безліч функцій від старту і зупинки віртуальних машин до копіювання локального файлу всередину потрібної виртуалки або запуску на ній конкретної програми.

Зараз метараннеры і скрипти 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 і вище).
Тому ми плануємо і ряд доопрацювань. Наприклад, хочемо переписати vSphereTools на VMware vCloud Suite SDK for Python for vSphere 6.0. Документація цього інструменту вже доступна, також є і python-api для нього — бібліотека pyvmomi.

p.s. Розповідь про проект vSphereTools був представлений в рамках DevOps-митапа, який відбувся восени в Москві.



посилання представлені презентації 16 доповідей, представлених в ході заходу. Всі презентації та відео виступів будуть додані в таблицю в кінці цього топіка-анонсу.

Автор: Тимур Гильмуллин
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.