Jupyter Notebook – прототипирование облачной автоматизации на Python
Запросить демо
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Оставить заявку
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Узнать стоимость
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Попробовать бесплатно
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Регистрация в консоли
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Быть в теме

Jupyter Notebook – прототипирование облачной автоматизации на Python

22.07.2019 7 минут 331

В этой статье мы покажем вам как установить Jupyter, запустить ваш первый notebook и написать первый прототип скрипта, автоматизирующего работу с виртуальными машинами в облаке AWS или КРОК.

Далее вы сможете легко использовать этот подход для прототипирования абсолютно любых Python приложений!

Требования

  • Минимальное знание Python
  • Минимальное знание Linux

Что такое Jupyter

Jupyter — это проект с открытым исходным кодом, распространяющимся по лицензии BSD, который родился из проекта IPython для для поддержки интерактивной работы с данными в Data Science и Machine Learning, другими словами для BigData.

Чем он может быть полезен DevOps инженеру? Jupyter позволяет нам запускать Python код прямо в браузере, сохраняя при этом и сам код и результат его исполнения в .ipynb файле, который одинаково отображается абсолютно на любом ПК или сервере. С его появлением прототипировать Python приложения стало существенно проще. А если выложить .ipynb файл на GitHub или, например, внутрикорпоративный репозиторий исходных кодов, становится очень просто показывать коллегам примеры реализации тех или иных кусков кода и конечно же прототипировать функции, классы, отдельные приложения и сервисы.

Пример интерфейса Jupyter со структурой проекта:

Jupyter-project-structure-e1502902016316.png

Пример интерфейса Jupyter с прототипом функции (отображение эластичных IP-адресов boto):

Jupyter-prototype-example-e1502901952842.png

Установка Jupyter

Лично я предпочитаю для любого прототипа использовать отдельную директорию и отдельное виртуальное окружение, куда можно поставить все необходимые для прототипа зависимости. Соответственно, для прототипа любого автоматизирующего AWS или Облако КРОК скрипта, я всегда делаю что-то вроде:


mkdir c2_boto_test
cd c2_boto_test
virtualenv venv
source venv/bin/activate
pip install boto
pip install jupyter

Далее я скачиваю в эту же директорию c2rc.sh файл с настройками подключения к API-сервису Облака КРОК и пытаюсь реализовать нужную мне функциональность, удобно перезапуская разные блоки кода в нужной мне последовательности.

Для того, чтобы открыть в браузере интерфейс Jupyter, выполните команду:


	 jupyter notebook

Если же интерфейс Jupyter не открылся в новой вкладке вашего браузера, внимательно посмотрите на вывод команды, возможно, порт 8888 уже занят вашим приложением или же войти в интерфейс Jupyter придется самостоятельно, введя в браузер что-то вроде:


 http://localhost:8888/tree?token=b2eca56a5eb3c93cfb1f121c85223ee74226f58e75f59db5

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

Работа с эластичными (публичными) IP-адресами в boto

В качестве небольшого бонуса тем, кто дочитал статью до конца приведу пример получения списка, резервирования и освобождения эластичных (публичных) IP-адресов в boto в Облаке КРОК:

GitHub: https://github.com/andreivmaksimov/boto_examples/blob/master/boto_elastic_ip_management_example.ipynb


#!/usr/bin/env python
# coding: utf-8

import os
import boto

EC2_URL = os.environ['EC2_URL']
EC2_ACCESS_KEY = os.environ['EC2_ACCESS_KEY']
EC2_SECRET_KEY = os.environ['EC2_SECRET_KEY']


class IPManager():
    def __init__(self):
        self.conn = boto.connect_ec2_endpoint(
            EC2_URL, 
            aws_access_key_id=EC2_ACCESS_KEY,
            aws_secret_access_key=EC2_SECRET_KEY
        )
    def list_ips(self):
        eips = self.conn.get_all_addresses()
        for ip in eips:
            print ip.public_ip
    def allocate_ip(self):
        ip = self.conn.allocate_address()
        return ip.public_ip
    def release_ip(self, ip):
        self.conn.release_address(ip)


mgr = IPManager()
mgr.list_ips()

ip = mgr.allocate_ip()
print ip

mgr.list_ips()

mgr.release_ip(ip)

mgr.list_ips()

Заключение

Jupyter является отличным помощником как для начинающего, так и опытного Python разработчика или DevOps-инженера, позволяя нам быстро и эффективно прототипировать нужные функции, сервисы и даже целые приложения. Более того, Jupyter поддерживает графические библиотеки типа Seaborn, Matplotlib и Plotly, что легко позволит вам не только работать с любыми данными, но и визуализировать их.

Сервисы упоминаемые в статье

  1. Публичное облако КРОК

Не пропустите самые важные, интересные и полезные статьи недели

Ваш e-mail успешно подписан.