Управление Облаком В Python



Облака Облачные вычисления стали популярными среди масс примерно полтора-два года назад, и сервис сыграл в этом огромную роль.

Амазон EC2 .

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

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

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

На данный момент EC2, пожалуй, все еще остается лидером, но появилось еще несколько крупных игроков — думаю, такие имена, как Rackspace и GoGrid, на устах у всех, кто хотя бы поверхностно интересуется темой.

Помимо них, сейчас на рынке активно действуют еще как минимум десяток компаний, предлагающих аналогичные услуги.

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



Зачем нужен libcloud?

Неотъемлемой частью облачных сервисов является наличие API, обычно RESTful или REST-подобного, который позволяет полностью контролировать облачную инфраструктуру.

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

Когда libcloud зародился в компании Облачный удар (который, кстати, недавно купила компания Rackspace), целью было не только создать инструмент для работы с облаками на Python, но и сформулировать видение того, каким должен (может) быть обобщенный интерфейс для работы с облаками.

, как со стороны API сервисов, так и со стороны клиента при работе с разными платформами.

Например, параллельно с версией Python разрабатывается версия Java, принцип работы и концепции абсолютно такие же.

Однако я не буду углубляться в философские аспекты, а продемонстрирую, что позволяет делать libcloud.

Давайте начнем



Установка и настройка
Процесс установки вряд ли кому-то покажется новым:
  
   

easy_install apache-libcloud

Второй подготовительный этап — активация API и получение ключа и пароля.

Эта процедура различается у разных поставщиков облачных услуг и обычно описана в их документации.

Например, в случае с ракспейсом это выглядит так: заходим в Manage.rackspacecloud.com , затем в меню Ваша учетная запись -> Доступ к API .



Терминология и интерфейс
libcloud использует следующую терминологию:
  • Но да — экземпляр одного виртуального сервера.

    Провайдеры обычно называют его просто сервером

  • Размер узла — физический размер узла.

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

  • Изображение узла — образ операционной системы, который используется для загрузки узла
Возможна операция на всех объектах, описанных выше.

список — получить актуальный список объектов.

Для узлов поддерживается больше операций: их можно создавать ( создавать ), удалить ( разрушать ), и перегрузка ( перезагрузить ).



Просмотр доступных размеров и изображений узлов
Начнем с простого примера: подключаемся к сервису и получаем список всех образов CentOS, а также список всех возможных размеров узлов:

#!/usr/bin/env python from libcloud.types import Provider from libcloud.providers import get_driver from secret import access_id, secret_key if __name__ == "__main__": Driver = get_driver(Provider.GOGRID) conn = Driver(access_id, secret_key) print "images: " for image in conn.list_images(): if "CentOS" in image.name: print " %s %s" % (image.id, image.name) print "sizes: " for size in conn.list_sizes(): print size

Для начала вам нужно будет создать файл «secret.py» и объявить там переменные access_id и secret_key с необходимым пользователем и паролем для доступа к API вашего провайдера.

Обратите внимание на строку:

Driver = get_driver(Provider.GOGRID)

Здесь мы говорим, что хотим использовать драйвер GoGrid. Чтобы получить список всех поддерживаемых провайдеров, вам необходимо запустить в оболочке следующую команду:

pydoc libcloud.types.Provider



Создание и удаление узлов
Давайте рассмотрим пример создания и удаления узла.

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

В качестве образа мы снова выберем первый образ, содержащий в названии CentOS, и возьмем первый попавшийся размер.



#!/usr/bin/env python from libcloud.types import Provider from libcloud.providers import get_driver from secret import access_id, secret_key if __name__ == "__main__": Driver = get_driver(Provider.GOGRID) conn = Driver(access_id, secret_key) image = [image for image in conn.list_images() if "CentOS" in image.name][0] size = conn.list_sizes()[0] new_node = conn.create_node(name='mynode', image=image, size=size) print "node created: ", new_node new_node.destroy()



Заключение
Как видите, здесь тоже все достаточно просто и прозрачно; и двумя короткими скриптами нам удалось охватить почти весь общий интерфейс.

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

Более опытным пользователям облака, вероятно, покажется, что описанного функционала недостаточно.

Да, в большинстве случаев действительно нужно использовать что-то большее, и, конечно, все провайдерские вещи не могут быть охвачены одним интерфейсом.

При этом libcloud поддерживает в драйверах провайдеров так называемые «дополнительные» методы, которые позволяют, например, создавать пары ssh-ключей, создавать собственные образы узлов и т. д. По моим наблюдениям, драйверы от популярных провайдеров достаточно хорошо покрывают весь функционал.

и оперативно обновляются.

Информацию о том, что поддерживает каждый драйвер, можно найти в документация API самого libcloud. Надеюсь, libcloud облегчит жизнь тем, кто работает с облаками, а моя статья поможет вам быстро сориентироваться в проекте.

Теги: #Облачные вычисления #облачные технологии #облачный хостинг #libcloud #python #python

Вместе с данным постом часто просматривают: