Microsoft — мировой лидер в области ПО и ИТ-услуг
763,09
рейтинг
8 июля 2014 в 11:32

Разработка → Как управлять облачными ресурсами с помощью Python? Поднимаем кластеры по запросу через несколько строк кода tutorial

Библиотека Simple Azure позволяет управлять облачными ресурсами, в том числе созданием, управлением и удалением виртуальных машин в облачном окружении. Вы можете использовать данную библиотеку для любых целей: от развертывания песочницы для целей Dev&Test до размещения и управления решениями в промышленной эксплуатации.

С помощью Simple Azure вы можете легко поднять ipython notebook и кластеры ipython в облачном окружении, развернуть готовые виртуальные машины на выбор из сотен представленных в каталоге VMDepot.

Ниже представлено краткое введение и примеры использования Simple Azure для простых задач и задачи развертывания кластера IPython в облаке.

Установка


$ pip install simpleazure 
$ simpleazure-cluster start mycluster

Развертывание виртуальных машин


from simpleazure.simpleazure import SimpleAzure as saz 
  
azure = saz() 
azure.get_config() 
azure.create_vm()

Видео:



Смена виртуальной машины на выбор:
azure.set_image(label="Ubuntu Server 12.04.2 LTS")

Размещение нескольких машин


azure = saz() 
azure.get_config() 
azure.create_cluster(num=5) 
  
my-cluster-vm-0-87412 
{'request_id': '88c94c00288d42acaf877783f09c4558'} 
my-cluster-vm-1-61293 
{'request_id': 'abfd563c2c4f4926872b6b1dba27a93b'} 
my-cluster-vm-2-96085 
{'request_id': '29b55f6cb5e94cfdbf244a7c848c854d'} 
my-cluster-vm-3-46927 
{'request_id': 'b1a3446ebafe47a295df4c9d1b7d743c'}

Размещение машин из каталога сообщества VMDepot


В этом примере кода из каталога сообщества VMDepot выбирается виртуальная машина Azure Data Science Core на базе OpenSUSE с настроенным окружением для работы с большими данными, HPC и следующими пакетами: cython, ipython, matplotlib, networkx, nltk, nodejs, numpy, pandas, pytables, redis, scikit-image, scikit-learn, scipy, statsmodels, sympy.

azure = saz() 
azure.get_config() 
q = azure.get_registered_image(name="Azure-Data-Science-Core") 
azure.set_image(image=q) 
azure.create_vm()

Поддержка командной строки


Simple Azure поддерживает команды в шелле Linux. Например, вы можете создать кластеры виртуальных машин типа StarCluster следующей командой:
$ simpleazure-cluster start mycluster

Включение кластера IPython


В этом руководстве описывается как за несколько шагов развернуть в облаке кластер IPython.

Шаг первый:
from simpleazure.simpleazure import SimpleAzure as saz 
  
azure = saz() 
azure.get_config()

Шаг второй – создание трех узлов для кластера с ADSC:
adsc = azure.get_registered_image(name="Azure-Data-Science-Core") 
azure.set_image(image=adsc) 
azure.set_location("West Europe") 
azure.create_cluster(3)

Шаг третий – импорт плагина IPython:
from simpleazure.plugin import ipython 
  
ipy = ipython.IPython()

Настройка SSH:
ipy.set_username(azure.get_username()) 
ipy.set_private_key(azure.get_pkey())

Шаг четвертый – настройка узлов master и engine:
from simpleazure import config 
master = config.get_azure_domain(azure.results['master']) 
engines = [ config.get_azure_domain(x) for x in azure.results.keys()]

Привязка имен в плагине IPython:
ipy.set_master(master) 
ipy.set_engines(engines)

Установка SSH-подключения к узлам:
ipy.init_ssh()

ipy.connect_nodes()

Создания профиля IPython:
ipy.create_profile()

Запуск IPController на master:
ipy.run_ipcontroller()

Натсройка узлов engine:
ipy.copy_pkey_to_nodes() # <- Temporary function to distribute id_rsa private key to node(s) 
ipy.copy_json2engines()

Последний шаг – исполнение ipengine на каждом узле engine, чтобы они начали взаимодействие с master:
ipy.run_ipengine()

ipy.apply_ipcluster(azure)

Дополнительная информация


Еще больше руководств вы можете найти по следующей ссылке. Тонкости установки и настройки библиотеки описаны тут. Вы можете получить исходные коды библиотеки и присоединиться к разработке проекта на GitHub. Свежие новости и информацию о проекте вы всегда может найти на официальном сайте Simple Azure.

Дополнительные ссылки


Работая с Python, какие темы вам более интересны?

Проголосовало 58 человек. Воздержалось 24 человека.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Автор: @XaocCPS
Microsoft
рейтинг 763,09
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии (18)

  • +1
    Очень странно видеть майкрософт, хвалящий питон.

    Питон надо ставить, видимо, из ехе файла, а модули к нему с помощью pip install? Никаких пакетных менеджеров, без возможности безболезненно откатить назад непонравившуюся версию.

    Про особенности установки модулей с бинарными сишными вставками и говорить нечего. Оно и на линуксе не очень приятно (apt-get install build-essential и пачку -dev библиотек), а уж как это всё на диске Цэ выглядеть будет…
    • 0
      Судя по видео, нужно залогиниться при помощи PuTTY на какой-нибудь линукс и там уже спокойно работать. Одной статьи мало чтобы судить, но не начало ли это новой политики привлечения хипстоты в ряды пользователей MS-решений?
      • +1
        Для этого MS придётся столько исправить в базовой системе… Помойка с логами, конфигами и данными приложений, отсутствие нормального пакетного менеджера с зависимостями, атавистический шелл… Адаптация GNU core/fileutils, FSH (не обязательно линуксувую, хоть какую-то внятную) и порт какой-нибудь приличной терминалочки сделает жизнь в системе много более выносимой.

        У меня, собственно, помимо проприетарщины, главная претензия к MS — совершеннейшая рудиментарность нормального шелла. И powershell его не заменяет, ибо всё равно рудиментарен (readline нет, shift-pgup нет).
    • 0
      Скорее чтобы привлечь не Microsoft friendly пользователей.
      С .net и powershell и так все понятно давным давно.
    • 0
      Такие модули например python-mysql ставится через easy_install который качает собранный в ехе пакет.
      • +2
        facepalm. Откатить или обновить его безопасно по отношению с существующим модулям его, очевидно, не получится. Удаление его молча сломает пакет без предупреждений… Тяжка и неказиста жизнь виндовогого питониста…
        • 0
          Да, поэтому слез на мак
          • 0
            А там с депенденсами лучше? (Я не в курсе, brew умеет правильно решать кого апгрейдить, кого нет?)
            • 0
              Ну elasticsearch я даунгрейдил недавно, норм.
              Но с зависимостями не видел проблем собственно.
              • 0
                Эм, вы проблем с зависимостями не видели, или вам система управления зависимостями их правильно разрулила?

                Потому что главное, что есть в aptitude'е, это не «о, мне нужно вордпрессик, а похапешечку и апачик оно само подтянет», а очень и очень правильный алгоритм разрешения зависимостей при их конфликте.

                Например, если для установки нужно libfoo и libbar, такие, что свежие версии libfoo требуют libzzz <= 32.1, а libbar требуют libzzz >=33.

                aptitude в этом случае либо скажет «нельзя» (скучно), либо предложит поставить версии постарее, которые вместе совместимы.

                Это, конечно, некоторой болью отзывается у мейнтейнеров пакетов (которые это всё должны прописывать), но пользоваться дебианом при этом крайне приятно.

                Моим самым сильным впечатлением от этого была попытка самому собрать и вкрутить bluez5 в систему, которая его не поддерживала. Я совершил ужасные головоломные комбинации с установкой bleeding-edge пакетов, многократной пересборкой и переустановкой кучи разных версий. Любая другая система была бы в состоянии «легче переставить», а в случае с debian'ом просто удалил кривой самособранный bluez5, вернул на место библиотеки как было и поставил bluez4 — и через 15 минут у меня всё работало как раньше. Не смотря на то, что я на уши поставил весь аудиостек, порядка двух десятков системных библиотек, «силком» (с поломкой dependence) поставил несовместимую версию какой-то библиотеки. Убрал назад — стало как было.
                • 0
                  Проблем не видел.

                  Тут разница в том что поставить 5-10 пакетов для разработки это не большая проблема и с зависимостями вряд-ли возникнут проблемы, как в вашем примере.
                  • 0
                    (вздохнув)

                    В конкретно «один пакетик для азуры», может и не возникнут. Вообще же в devops'е обычно возникают проблемы такого адского масштаба, что даже deb/rpm не всегда помогает. Потому что хочется и на ёлку взлезть (иметь свежие пакеты с фиксами багов и security) и попу не оцарапать (ни в коем случае не сломать из-за изменений в библиотеке).

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

                    Я, честно, MS не понимаю. Но реализовали бы posix shell нормальный, половина бы ненависти прошла бы к ним.
                    • 0
                      Ну тогда вагрант :)

                      Ну будет посикс шелл. Тот же питон вряд-ли будет нормально устанавливаться без бинарников.
                      • 0
                        posix shell, нормальный репозиторий opensrource'ных проектов, coreutils/fileutils. Получившееся можно даже будет, наверное, использовать как серверную ОС.

                        В принципе, в связи с грядущей поттеризацией всех линуксоидов, всякие нестандартные event log'и даже не сильно глаз резать будут.

                        И ведь никак и ничем положению microsoft на рынке «типа энтерпрайз делайте как 20 лет делали» не угрожает, и усилий на это надо не так уж много…
        • 0
          Сейчас модно уже pip install --wheel. Правда, колес с бинарниками для многого еще нет. Но «мы работаем над этим» ©
    • 0
      >> Очень странно видеть майкрософт, хвалящий питон.

      Вы сильно отстали от жизни. Примерно на три года :)
      • 0
        Я думаю, нагонять можно будет в тот момент, когда Microsoft выпустит ещё один телефон на Андроиде и портирует hyper-v (не драйвера) в апстрим Ядра.

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

Самое читаемое Разработка