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

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

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

12 декабря 2023
KT.Team создала полностью автоматизированную систему маркировки товаров для FM Logistic на базе Облака КРОК
KT.Team разработала для международной логистической корпорации FM Logistic решение, помогающее максимально упростить процесс взаимодействия производителей и продавцов с Государственной информационной системой мониторинга оборота товаров (ГИС МТ). Решение называется “Paradigma” и развернуто на базе Облака КРОК, которое обеспечивает надежную платформу для его функционирования.
0 минут
447
8 декабря 2023
КРОК Облачные сервисы поможет компаниям защитить свою облачную инфраструктуру
КРОК Облачные сервисы совместно с «К2 Кибербезопасность» запустили Cloud Security Services (CSS) – комплекс мер и сервисов по обеспечению защиты ИТ-инфраструктуры клиента в облачных средах. Он позволяет выявлять, приоритизировать и митигировать риски и решать проблемы соответствия требованиям регуляторов по защите ИТ-инфраструктуры.
2 минуты
434
1 декабря 2023
КРОК Облачные сервисы первыми из облачных провайдеров получили сертификат PCI DSS 4.0

КРОК Облачные сервисы стал первым облачным провайдером в России, который получил сертификат соответствия новому стандарту безопасности данных платежных карт PCI DSS 4.0. Эта версия станет обязательной к исполнению с 2025 года вместо стандарта PCI DSS 3.2.1., действующего с 2018 г.  За прошедшее время, угрозы и методы защиты данных ушли далеко вперед. В стандарте PCI DSS 4.0 углублен и расширен базовый уровень операционных и технических требований для повышения безопасности платежей и прописаны инновационные методы для борьбы с новыми угрозами.

2 минуты
607
1 ноября 2023
Незаменимых нет. Сервис на базе Nextcloud вместо привычных корпоративных облаков

Привет, Хабр! Меня зовут Александр Фикс, я менеджер по развитию бизнеса КРОК Облачные сервисы. Сегодня поговорим о тренде локализации, о том, что происходит на рынке файлообменников с уходом западных решений и какие альтернативные продукты есть у бизнеса в данный момент.

1 минута
848
19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор по развитию КРОК Облачные сервисы Сергей Зинкевич.
1 минута
2183
scrollup