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

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

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

9 января 2023
1С в облаке — полет нормальный. Почему сегодня вашей ERP нужна облачная платформа

Замена зарубежной ERP на 1С – одна из наиболее горячих задач ИТ-поддержки бизнеса. Некоторые компании уже пытались ее решить, но результат оказывается неудовлетворительным, если за реализацию берется неопытная команда. 


2 минуты
338
2 декабря 2022
Четвёртая будет? Как мы развернули ещё одну зону доступности в нашем ЦОД
В начале года мы рассказали о том, как подключали третью зону доступности в нашем облаке: почему вернулись к Ethernet, как развёртывали сети и собирали честный кворум для распределённых сервисов.
1 минута
84
6 сентября 2022
«Азбука вкуса» переводит свою ИТ-инфраструктуру в Облако КРОК
Российская частная розничная компания «Азбука вкуса» перенесет свою ИТ-инфраструктуру в Облако КРОК. Соглашение о сотрудничестве и старте работ было подписано в августе. Цифровая экосистема компании включает в себя не только внутренние сервисы для организации бизнес-процессов, управления цепочками поставок, логистикой и т.д., но и системы электронной коммерции и мобильное приложение для покупателей, на которые делает ставки «Азбука вкуса» в области развития бизнеса. И теперь за стабильность работы этих систем будет отвечать команда КРОК Облачные сервисы.
3 минуты
687
16 августа 2022
Страховая компания «Пульс» цифровизует бизнес с помощью КРОК Облачные сервисы

СК «Пульс» – заметный игрок на рынке цифрового страхования – вместе с КРОК Облачные сервисы в рекордные сроки (всего за четыре месяца вместо типовых 6-12 месяцев) создала инфраструктуру на базе Облака КРОК для разработки и запуска в продуктив клиентских сервисов. Проект позволяет компании ускорить цифровизацию страхования, при которой все сервисы реализуются онлайн.

3 минуты
591
22 июля 2022
Новый сервис кеширования и другие обновления Облака КРОК
В Облаке КРОК появился новый PaaS-сервис – сервис кеширования данных. Кроме того, мы расширили возможности управления и настройки сервиса Базы данных. А для упрощения анализа затрат в отчеты биллинга теперь включается информация о назначенных ресурсам тегах.
2 минуты
529
21 апреля 2022
Ускоряем вычисления в Облаке КРОК с помощью графических процессоров NVIDIA
Портфолио КРОК Облачные сервисы пополнилось графическими процессорами NVIDIA. Их применение позволяет многократно ускорить решение задач, требующих большого объема вычислений. Услуга GPU as a Service предоставляется на базе экземпляров виртуальных машин с графическими процессорами NVIDIA и предусматривает помесячную оплату за используемые вычислительные мощности. Пользователи получают всю необходимую техническую поддержку в режиме 24/7.
2 минуты
862
scrollup