====== Все что должен знать DevOps про Python ======
* [[https://habr.com/ru/articles/571786/|Про DevOps для тех, кто изучает Python]]
===== Реклама =====
* Всем привет! Продолжаем цикл вебинаров на тему "Что должен знать 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
server# docker run -ti python:3.9-alpine sh
* [[Управление ПО в Linux#APK Alpine Linux]]
/ # 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