Python for Ops, разработчикам вход воспрещён
Инженеру нужен не только bash, да вы и сами в курсе. Наверняка в закладках пара курсов по основам python, может и книжку Марка Лутца купили.
На курсе «Python для инженеров» вы НЕ будете решать абстрактные задачки вроде: переверните список, не используя reverse (). В нашей практике только то, что применимо в работе, примеры:
— Написать агент, который будет опрашивать систему управления правам и вносить изменения в конфигурации прав внутри установленных сервисов.
— Написать скрипт для извлечения данных из биллинга и передачи данных в Prometheus. Формат данных не подходит. Необходимо ещё реализовать коннектор.
— Генерация change log из заголовков коммитов.
На все строчки кода получите подробную обратную связь и код-ревью от спикера.
А чтобы полученные знания не ушли в стол — закрепим проектом. На выбор будет несколько вариантов для инженера или свой проект. Будет круто, если захотите решить задачу с вашего рабочего проекта.
- Почему OPS’ам нужен питон?
- В чем его прелесть?
- Для каких задач Python хорошо подходит?
№1: основы синтаксиса и структур в Python.
Зачем: научиться понимать логику программ на Python и не только, а так же писать простые программы — важнейшая задача. «Самое то», если вы не знакомы с синтаксисом Python.
- Типы данных и переменные, мутабельные/иммутабельные и простые/составные типы данных, приемы отладки.
- Условный оператор — логические операторы, простые условия, вложенные условия и замена оператора switch.
- Базовые циклы — циклы while и for, итераторы, прерывания циклов.
- Функции, методы строк, списков и словарей.
- Генерация и обработка исключений.
- Практика: набор небольших микрозаданий по каждому уроку.
№2: улучшенное владение Python: оптимизации и ООП.
Зачем: Освоим особенности Python — именно за их счет он так прост и практичен. Также раскроем значение тех самых трех букв (мы про ООП) без академической теории и с понятным предназначением.
- Продвинутая работа с циклами — оператор yield и генераторы, инсайты о циклах в Python (оператор else в цикле, оптимизации циклов comprehensions, etc.).
- Специальные типы структур (frozendict, defaultdict, etc.).
- Базовые понятия ООП: классы, экземпляры классов, инкапсуляция, наследование и полиморфизм.
- Практика: набор небольших микрозаданий по каждому уроку.
- Продвинутая практика: аудит использования услуг. У CTO появилось подозрение, что некоторые услуги и сервисы уже не используются командами.
Проблема заключается в том, что модуль мониторинга используемых услуг не обновлялся последние десять лет: он не может выгрузить агрегированные данные, да и формат возвращаемых значений не соответствует общепринятым стандартам.
Вы были избраны, чтобы извлечь снятые показатели, агрегировать их по типу и команде и предоставить данную информацию CTO для первоначальной оценки масштабов проблемы.
№3: подключения по сети.
Зачем: Практически каждый сервис имеет интерфейс для подключения по какому-либо сетевому протоколу. А без подключения невозможно взаимодействие, к счастью в экосистеме Python найдутся модули-клиенты практически для любых протоколов.
- Пакет pip и установка сторонних модулей.
- Модуль Paramiko для выполнения команд по ssh.
- Модуль requests для выполнения HTTP запросов.
- Обзор модулей для работы с базами данных и брокерами сообщений.
- Практика разминочная. Астрологи объявили неделю кодинга на Python. Количество практик выросло вдвое. Вас заметили! Кажется, вы использовали curl, чтобы получать информацию от биллинговой системы. Самое время использовать модуль requests, чтобы выполнить HTTP-запрос внутри вашего приложения. Кстати, модуль мониторинга не умеет собирать данные о лимитах с особых облачных сервисов SBS (Slurm Beautiful Services). Но можно запросить их самостоятельно: по протоколу SSH.
- Практика со звездочкой. Команда разработки внедряет уже не новую методологию: Допустил возникновение алерта — получи задачу. Аналитическая подсистема ищет только отборные ошибки и складывает сообщения о них в брокер сообщений Kafka. Ваша задача завершить цикл возврата багов разработчикам: ваш консьюмер должен автоматически создавать задачи с нужным описанием и приоритетом в Trello.
№4: работа с текстом в различных форматах.
Зачем: Подключение к сервису — только половина дела. Другая половина это обмен информацией. А информация зачастую представляет собой набор текстовых символов в определенном формате. Раскодировать и закодировать помогут модули. Информация не нужна вся целиком? Извлечь важное, отбросив остальное помогут регулярные выражения.
- Модуль re и регулярные выражения.
- Модули работы с данными в разных форматах: separated values, json, yaml, xml.
- Использование аргументов командной строки: модуль argparse.
- Практика: создание источника данных об использовании услуг. В ходе аудита использования услуг вы выявили важную для бизнеса информацию, заинтересовался даже CEO. Было принято решение проанализировать потерянные деньги и больше не допускать таких ситуаций. Для этого нужно дать аналитикам инструмент получения данных, чтобы они подготовили отчеты.
Проблема заключается в том, что модуль мониторинга возвращает лимиты по услугам по отдельному запросу в форматах yaml, а цены за услуги возвращаются биллинговой системой в формате xml. Необходимо срастить данные о текущей загрузке с лимитами и ценами. Агрегированную информацию отдел аналитики запросил в формате JSON с возможностью указать интервал времени и шаг агрегации.
№5: взаимодействие с операционной системой.
Зачем: Важность взаимодействия с операционной системой не нужно объяснять дополнительно. Как подружить её с Python — в этом уроке.
- Чтение и запись файлов.
- Модуль os — чтение environment variables, работа с директориями и правами, работа с процессами.
- Модуль subprocess для интерактивного взаимодействия с процессами.
- Практика: автоматическое предоставление доступов к серверам. В ходе кампании по отказу от неиспользуемых услуг возникла курьезная ситуация: сервер продуктовой команды отключили, но инфраструктурная команда периодически использовала его в качестве хоста для стейджинга.
Выяснилось, что продуктовая команда не использовала его потому что периодически кто-то перезаписывал их настройки своими. Было решено, что теперь ресурс будет закрепляться только за членами одной команды, а избежать ошибок поможет автоматика.
Вам, как заварившему эту кашу, необходимо написать агент, который будет периодически опрашивать систему управления правами и вносить изменения в конфигурации прав внутри установленных сервисов и по необходимости давать сервисам команду перечитать конфигурации.
№6: пишем свой модуль для Ansible.
Зачем: Ansible — мощная система управления конфигурациями, да еще и с возможностью расширения собственными модулями. Какое совпадение, что она сама и большинство модулей написаны на Python.
- Написание своих модулей для ansible.
- Практика: написание модуля управления правами. Давным-давно, в далёкой-далёкой галактике вы уже писали агент для выдачи прав к определенным сервисам. Пришло время поменять pull на push и в этом поможет ansible. Все что нужно — лишь модуль.
№7: K8S оператор на Python. В формате live-coding stream.
Зачем: расширим возможности K8S под свои задачи.
Покажем как делать это не только на Go.
№8: создание и кейсы использования своего API.
Зачем: подготовка кода к деплою — одна из важнейших задач. Сделать этот процесс гибче и удобнее помогают собственные скрипты для stage пайплайнов.
- Создание REST API на Flask.
- Создание своего prometheus exporter с Prometheus Python Client и Flask.
- Практика: выгрузка данных в стороннюю систему мониторинга. Затраты на неиспользуемое оборудование превысили даже пессимистичные прогнозы.
Теперь у команды инженеров есть еще одна зона ответственности — мониторинг неиспользуемых услуг. Для этого вам необходимо периодически опрашивать биллинговую систему через ваш скрипт и передавать данные в Prometheus. Формат получаемых данных все еще не подходит.
Вам необходимо реализовать коннектор. А заодно и написать эндпоинт, чтобы отдел аналитики всегда имел под рукой актуальную информацию в формате JSON.
№9: взаимодействие с CVS и DevOps системами.
- Использование сторонних модулей на примере интеграции в пайплайны Gitlab.
- Использование pygit для получения информации об изменениях в коде.
- Практика: генерация change log из коммитов. Ваши решения настолько понравились команде инженеров, что они вдохновились ими и начали писать свои. Только вот описания к релизам сделать всегда забывают. Для этого командой было принято решение внедрить commit conventions и генерировать ченджлоги прямо из коммитов при слиянии dev-бранча с релизным, а если название коммита не соответствует commit conventions — не допускать merge-request до merge.
№10: chatops с Errbot на Python. В формате live-coding stream.
Зачем: Infrastructure as a Chat — управляй инфраструктурой из мессенджера. Бывает ли так? Мы попробуем.
За два часа делаем чатопс в прямом эфире.
№11: финальный проект.
Вы можете автоматизировать свою задачу, а мы обещаем сделать ревью вашего кода. Если идей или задач нет — мы поможем их придумать.
Первый поток стартует с июня, места ограничены, так что велком.
Цена курса 30к, в рассрочку на 4 месяца 7,5к.
Прочитать подробности и оставить заявку.