This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
все_что_должен_знать_devops_про_python [2025/05/16 08:02] val |
все_что_должен_знать_devops_про_python [2025/06/19 14:44] (current) val [Запись вебинара] |
||
---|---|---|---|
Line 5: | Line 5: | ||
===== Реклама ===== | ===== Реклама ===== | ||
- | * Всем привет! Продолжаем цикл вебинаров на тему "Что должен знать Ops из области Dev". Сегодня нас с Вами ждет один из популярнейших языков программирования ... | + | * Всем привет! Продолжаем цикл вебинаров на тему "Что должен знать Ops из области Dev". Сегодня нас с Вами ждет один из популярнейших языков программирования. Зачем он нужен DevOps-су? Да хотя бы потому, что Ansible и YAML имеют прямое отношение к Python. А еще, иногда не хватает возможностей Bash и Python - прекрасный кандидат на роль "когда надо в пайплайне запрограммировать что-то посложнее ..." |
===== Техническое задание ===== | ===== Техническое задание ===== | ||
- | * | + | * Научиться использовать базовые элементы языка - структуры данных, алгоритмические конструкции, файловый ввод/вывод, пакеты и модули |
+ | * Научиться использовать Python для рабы с протоколом HTTP, данными в формате JSON/YAML и регулярными выражениями | ||
+ | * Научиться использовать возможности Python в Ansible Playbooks и Jinja2 template | ||
+ | * Сделать Python привычным инструментом для автоматизации - наравне с Bash | ||
===== Запись вебинара ===== | ===== Запись вебинара ===== | ||
- | * Тэги: | + | * [[https://youtu.be/dNwCQ4xx98Q|YouTube]], [[https://rutube.ru/video/private/81a077f638a21917e0055407e84b3ee4/|RuTube]] |
+ | * Тэги: Python, Gunicorn, FastAPI, Uvicorn, Unittest, Ansible, Docker, Kubernetes | ||
===== Методическая подготовка ===== | ===== Методическая подготовка ===== | ||
+ | * С использованием образа [[https://val.bmstu.ru/unix/img/My%20Documents/debian_12.5_64_02.ova|debian_12]], выполнены 1-ый и 3-ий (student, так же, назначен администратором GitLab) шаги из статьи [[https://habr.com/ru/articles/716454/|Самый простой пример CI/CD]] | ||
+ | |||
+ | * Добавляем [[Инструмент GitLab#GitLab Docker Registry]] (IP вместо server.corpX.un) | ||
+ | |||
+ | |||
+ | ===== Где Девопс может встретиться с Python? ===== | ||
+ | |||
+ | ==== Случай 1. Развертывание Kubernetes ==== | ||
+ | |||
+ | - [[https://github.com/kubernetes-sigs/kubespray/]] | ||
+ | - [[https://github.com/kubernetes-sigs/kubespray/blob/master/docs/getting_started/getting-started.md#setting-up-your-first-cluster]] | ||
+ | - [[https://github.com/kubernetes-sigs/kubespray/blob/master/docs/getting_started/setting-up-your-first-cluster.md#set-up-kubespray]] | ||
+ | |||
+ | * [[Язык программирования Python#Виртуальная среда Python]] | ||
+ | * [[Система Kubernetes#Развертывание через Kubespray]] (kube1 заменяем на localhost) | ||
+ | |||
+ | ==== Случай 2. Тестовое задание ==== | ||
+ | |||
+ | * [[https://github.com/smenateam/assignments/blob/master/devops/docs/assignment.md|Тестовое задание DevOps разработчик]] | ||
+ | |||
+ | * [[https://metanit.com/python/fastapi/1.1.php|Основы FastAPI]] | ||
+ | * [[https://webadventures.ru/sravnenie-wsgi-serverov-uvicorn-i-gunicorn/|Сравнение WSGI-серверов:uvicorn и Gunicorn]] (узнать у ИИ, откуда название) | ||
+ | |||
+ | * Обсудить Python [[Язык программирования Python#Flask Gunicorn]] приложение pywebd (подключение модулей, декораторы, варианты запуска) | ||
+ | * Создать Python приложение [[Язык программирования Python#FastAPI Uvicorn]] pywebd2 | ||
+ | |||
+ | * [[Технология Docker#Установка]] Docker | ||
+ | * Dockerfile для [[Технология Docker#Приложение python pywebd2]] | ||
+ | |||
+ | * Docker - Настройка [[Технология Docker#Insecure Private Registry]] (IP вместо server.corpX.un) | ||
+ | * Docker - [[Технология Docker#Аутентификация в Registry]] (IP вместо server.corpX.un) | ||
+ | |||
+ | * Создаем в GitLab проект **pywebd2** (публичный, без Readme) | ||
+ | * Загружаем образ pywebd2 в GitLab - [[Технология Docker#Использование Private Registry]] (IP вместо server.corpX.un) | ||
+ | |||
+ | * Kubernetes - [[Система Kubernetes#Настройка доступа к Insecure Private Registry]] (IP вместо server.corpX.un) | ||
+ | * [[Система Kubernetes#Deployment]] и [[Система Kubernetes#Service]] для приложения pywebd2 в Kubernetes | ||
+ | ==== Случай 3. Проект ==== | ||
+ | |||
+ | * [[https://team.vk.company/projects/285/|Проект VK People Hub]] | ||
+ | ===== Для чего еще может понадобиться Python НЕ разработчику? ===== | ||
+ | |||
+ | ==== Генерация множества файлов по шаблону ==== | ||
+ | |||
+ | * [[Сервис Asterisk#Provisioning|Bash]] или Ansible [[Сервис Ansible#Провижининг IP телефонов]] на примере [[SIP Phone Panasonic KX-HDVXXX]] и [[Linksys SPA-3102]] | ||
+ | |||
+ | ==== Обработка сложных структур данных ==== | ||
+ | |||
+ | * [[Язык программирования Python#Интерактивная оболочка REPL (Read-Eval-Print Loop)]] | ||
+ | * Сервис Zabbix [[Сервис Zabbix#Статистика DHCP сервера]] | ||
+ | |||
+ | ==== Выгрузить что-то через API ==== | ||
+ | |||
+ | * Сервис Zabbix [[Сервис Zabbix#API]] | ||
+ | |||
+ | ==== Даже, для сетевых инженеров) ==== | ||
+ | |||
+ | * [[https://pyneng.readthedocs.io/ru/latest/|Python для сетевых инженеров]] | ||
+ | |||
+ | ===== Что, насчет других языков? ===== | ||
+ | |||
+ | * [[https://www.freecodecamp.org/news/learn-kubernetes-in-under-3-hours-a-detailed-guide-to-orchestrating-containers-114ff420e882|Learn Kubernetes in Under 3 Hours: A Detailed Guide to Orchestrating Containers]] | ||
+ | |||
+ | ===== Черновик ===== | ||
+ | |||
+ | ==== Темы ==== | ||
+ | |||
+ | * [[Сервис Asterisk#Asterisk ARI]] | ||
+ | * Тестирование web приложений | ||
+ | * Парсинг ответов Ansible | ||
+ | * Prometheus exporter | ||
+ | * Работа с SQL, JSON, YAML | ||
+ | * Веб сервис провиженинг для телефонов | ||
+ | |||
+ | ==== Разное ==== | ||
+ | |||
+ | * https://github.com/smenateam/assignments/blob/master/devops/docs/project_install.md | ||
+ | * gitignore | ||
+ | |||
+ | <code> | ||
+ | server# docker run -ti python:3.9-alpine sh | ||
+ | </code> | ||
+ | |||
+ | * [[Управление ПО в Linux#APK Alpine Linux]] | ||
+ | |||
+ | <code> | ||
+ | / # cd | ||
+ | |||
+ | ~ # git clone https://github.com/smenateam/assignments.git | ||
+ | |||
+ | ~ # cd assignments/devops | ||
+ | |||
+ | ~/assignments/devops # pip install poetry | ||
+ | |||
+ | ~/assignments/devops # poetry lock | ||
+ | |||
+ | ~/assignments/devops # poetry install | ||
+ | |||
+ | ~/assignments/devops # eval $(poetry env activate) | ||
+ | |||
+ | (hello-world-py3.9) ~/assignments/devops # cat Makefile | ||
+ | |||
+ | (hello-world-py3.9) ~/assignments/devops # uvicorn main:app --port=8000 --reload --host 0.0.0.0 | ||
+ | |||
+ | (hello-world-py3.9) ~/assignments/devops # gunicorn main:app --bind 0.0.0.0:8000 -k uvicorn.workers.UvicornWorker | ||
+ | |||
+ | poetry install --no-root | ||
+ | |||
+ | apk add --no-cache build-base | ||
+ | 10 pip install gunicorn | ||
+ | 11 /gunicorn.sh | ||
+ | 12 pip install uvicorn | ||
+ | 13 /gunicorn.sh | ||
+ | 14 pip install fastapi | ||
- | ===== Шаг 1. Что у нас есть для начала ===== | + | </code> |