Статьи

От виртуализации VMWare до публичного облака – теперь гибридное облако

[Эта статья была написана Йорамом Вайнребом .]
OpenStack VMWare |  VMWare OpenStack |  Гибридное Облако |  vCloudAir |  VMWare Public |  Облако vCloud

vCloud, OpenStack & Cloudify

VMWare уже много лет находится на переднем крае пространства виртуализации и, безусловно, является самым популярным решением для виртуализации предприятий .

В последние годы, когда облачные технологии стали популярными, VMWare выпустила линейку продуктов vCloud для частных облаков.

Совсем недавно VMware также вышла в публичное облачное пространство со своим продуктом vCloudAir.

Во многих публикациях мы продемонстрировали, как Cloudify имеет широкую поддержку для управления приложениями в различных облаках, наиболее популярными из которых являются облака на основе OpenStack и EC2.


Гибридная облачная оркестровка — от VMWare до OpenStack и обратно с Cloudify.  
Идти


Очевидно, что добавление поддержки облака vCloudAir было для нас важной целью.

Плагины VMWare vSphere и vCloudAir позволяют выделять ресурсы в vCloudAir, а также поддерживают гибридное облако в гетерогенных средах, в которых параллельно работают облака VMWare / Openstack .

Он может даже управлять приложениями, которые охватывают VMWare и Openstack в одном и том же развертывании.

Изучение API vCloudAir показало, что API vCloudAir находился под сильным влиянием традиционных продуктов VMWare и клиентской базы.

По сравнению с OpenStack и EC2, он в большей степени ориентирован на ИТ-операции, чем на разработчиков и DevOps .

Это означает, что API предоставляет огромное количество возможностей для настройки и управления, но в то же время завершает операцию, которая принимает пару простых вызовов API, преобразованных во многие другие вызовы в vCloud.

Чтобы поддерживать новое облако в Cloudify, мы должны создать или настроить плагин, который будет предоставлять различные объекты и интерфейсы / операции, которые мы можем выполнять с этим облаком.

В моем случае, поскольку времени было мало, и я хотел начать работу как можно быстрее, я решил использовать существующий плагин, который предоставляет Apache LibCloud, который сам по себе позволяет вам взаимодействовать с различными облачными API из python.

Cloudify уже имеет плагин LibCloud, который использовался для EC2 API.

Я просто расширил его, чтобы выставить объекты vCloudAir тоже.

Эта работа еще не завершена, и в настоящее время у меня есть только объекты сервера (server_plugin), которые можно увидеть здесь:

Плагин Libcloud

Тестируя работу, которую я проделал с реальной учетной записью vCloud, я обнаружил, что некоторые функции, которые я использовал в драйвере LibCloud vCloud (версия 0.15.1), не соответствовали API, используемому для моей учетной записи. Например, мне не удавалось получить информацию о сети, но список сетей работал.

Из-за этого мне пришлось раскошелиться на репозиторий LibCloud и внести некоторые изменения, чтобы обойти эти проблемы.

Моя модифицированная версия находится по адресу:

Модифицированный Libcloud

Я использовал пример проекта Cloudify .

Весь код остается прежним, и единственное отличие было сосредоточено на проекте YAML

import the libcloud plugin definition: 
imports: 
- http://www.getcloudify.org/spec/cloudify/3.1m5/types.yaml 
- libcloud.yaml 
Change the VM type definition to vCloud: 
vm_host: 
derived_from: cloudify.libcloud.server 
properties: 
cloudify_agent: 
default: 
user: ubuntu 
key: /home/ubuntu/id_rsa 
server: 
default: 
### if defined, will serve as the hostname for the started instance, 
### otherwise, the node_id will be used 
#name: no_name ### HOST_NAME"" 
# image: Ubuntu Server 12.04 LTS (amd64 20140619) 
# image_name: Ubuntu Server 12.04 LTS (amd64 20140619) 
image_name: ubuntu_1204_64bit 
image: ubuntu_1204_64bit 
ram: 4096 ### FLAVOR_NAME 
management_network_name: CFY-Internal ### Network name 
connection_config: 
default: 
cloud_provider_name: vcloud 
access_id: **************@vmware.com@*************** 
secret_key: *************** 
host: ***vcd.vchs.vmware.com 
port: 443 

Остальная часть YAML остается точно такой же. Я просто удалил определение групп безопасности и плавающих IP-адресов, которые у меня еще не были готовы, в моем плагине vCloud.

Поскольку Cloudify позволяет вам определять оркестровку облачного приложения независимым образом, нежели фактическое облачное IaaS, на котором будет работать приложение, очень легко запустить одно и то же приложение в разных облаках практически без изменений.

nodecellar

Использование общего управления и оркестровки в качестве абстракции для VMware и OpenStack обеспечивает общую инфраструктуру управления и развертывания.

Приложение осведомлено о том, работает ли оно в OpenStack или VMware. Однако, поскольку вызовы каждого из компонентов инфраструктуры теперь централизованы в одном драйвере для каждой среды, он управляется один раз для всех приложений.

Кроме того, для встроенных типов существует реализация по умолчанию, поэтому в большинстве случаев пользователю необходимо иметь дело с деталями реализаций каждого типа элемента только для конкретных настроек.