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

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

3617
7 минут

В этой статье мы покажем вам как установить 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, что легко позволит вам не только работать с любыми данными, но и визуализировать их.

4 июля 2023
Локализация как есть: переехать в облако и ничего не потерять
Локализация российских подразделений иностранных компаний стала одним из самых частых запросов на облако в 2022 году. Страховой брокер Remind, лидер цифровизации в своей отрасли, прошел этот путь вместе с Облаком КРОК.

3 минуты
394
19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор по развитию КРОК Облачные сервисы Сергей Зинкевич.
1 минута
658
19 мая 2023
Облако КРОК помогает крупной сети ресторанов увеличивать количество онлайн-заказов в пиковый период
Крупная сеть ресторанов-пиццерий, работающая в семи регионах России, перенесла в Облако КРОК мобильные сервисы онлайн-заказов. В результате проекта, который стартовал в 2021 году, заказчик получил гибко-масштабируемую инфраструктуру и обеспечил фактическую доступность онлайн-сервисов (SLA) для клиентов 24/7 равную 99,95%, то есть допустимый простой не превышает 22 минуты в месяц.
2 минуты
374
27 апреля 2023
Выручка КРОК Облачные сервисы выросла на 20% в 2022 году
Выручка КРОК Облачные сервисы за 2022 год выросла на 20% и превысила 5 млрд рублей, а количество клиентов – на 23% до 821. На новых заказчиков приходится около 60% роста выручки. Средний месячный чек на услуги вырос на 10% и составил более 500 тыс. рублей, т.к. фокусом подразделения остается крупный бизнес различных отраслевых сегментов. Оценка работы облачной платформы, менеджерской и технической поддержки составила 9,3 балла из 10, что подтверждает высокий уровень удовлетворенности клиентов.
4 минуты
592
scrollup