що буде на курсі
Розбір бібліотек Python для DevOps.
Правила ефективного і підтримуваного коду.
Рішення конкретних завдань DevOps.
Детальна зворотний зв'язок, рев'ю коду.
програма курсу:
№ 0: введення
Навіщо: навчитися розуміти логіку програм на Python і не тільки, а так само писати прості програми - найважливіше завдання. "Саме те", якщо ви не знайомі з синтаксисом Python
Навіщо: освоїмо особливості Python-саме за їх рахунок він такий простий і практичний. Також розкриємо значення тих самих трьох букв (ми про ООП) без академічної теорії і зі зрозумілим призначенням.
Навіщо: практично кожен сервіс має інтерфейс для підключення по якомусь мережевому протоколу. А без підключення неможлива взаємодія, на щастя в екосистемі Python знайдуться модулі-клієнти практично для будь-яких протоколів.
Навіщо: підключення до Сервісу-тільки половина справи. Інша половина це обмін інформацією. А інформація часто являє собою набір текстових символів в певному форматі. Розкодувати і закодувати допоможуть модулі. Інформація не потрібна вся цілком? Витягти важливе, відкинувши інше допоможуть регулярні вирази.
Навіщо: важливість взаємодії з операційною системою не потрібно пояснювати додатково. Як подружити її з Python - в цьому уроці.
Навіщо: Ansible-потужна система управління конфігураціями, та ще й з можливістю розширення власними модулями. Який збіг, що вона сама і більшість модулів написані на Python.
Навіщо: розширимо можливості K8S під свої завдання
Навіщо: підготовка коду до деплою-одна з найважливіших завдань. Зробити цей процес гнучкіше і зручніше допомагають власні скрипти для stage пайплайнов.
Навіщо: Infrastructure as a Chat-керуй інфраструктурою з месенджера. Чи буває так? Ми спробуємо.
Розбір бібліотек Python для DevOps.
Правила ефективного і підтримуваного коду.
Рішення конкретних завдань DevOps.
Детальна зворотний зв'язок, рев'ю коду.
програма курсу:
№ 0: введення
- чому OPS ам потрібен пітон?
- У чому його принадність?
- для яких завдань Python добре підходить?
Навіщо: навчитися розуміти логіку програм на Python і не тільки, а так само писати прості програми - найважливіше завдання. "Саме те", якщо ви не знайомі з синтаксисом Python
- типи даних і змінні, мутабельні/іммутабельні і прості/складові типи даних, прийоми налагодження
- умовний оператор-логічні оператори, прості умови, вкладені умови та заміна оператора switch
- базові цикли-цикли while І for, ітератори, переривання циклів
- функції, методи рядків, списків і словників
- генерація та Обробка винятків
- Практика: набір невеликих мікрозаданий по кожному уроку
Навіщо: освоїмо особливості Python-саме за їх рахунок він такий простий і практичний. Також розкриємо значення тих самих трьох букв (ми про ООП) без академічної теорії і зі зрозумілим призначенням.
- Просунута робота з циклами-оператор yield і генератори, інсайти про цикли в Python (оператор else в циклі, оптимізації циклів comprehensions, etc.)
- спеціальні типи структур (frozendict, defaultdict, etc.)
- Базові поняття ООП: класи, екземпляри класів, інкапсуляція, спадкування і поліморфізм
- Практика: набір невеликих мікрозаданий по кожному уроку
- Просунута практика: аудит використання послуг. У CTO з'явилася підозра, що деякі послуги і сервіси вже не використовуються командами. Проблема полягає в тому, що модуль моніторингу використовуваних послуг не оновлювався останні десять років: він не може вивантажити агреговані дані, та й формат значень, що повертаються, не відповідає загальноприйнятим стандартам. Ви були обрані, щоб витягти зняті показники, агрегувати їх за типом і командою і надати дану інформацію CTO для початкової оцінки масштабів проблеми
Навіщо: практично кожен сервіс має інтерфейс для підключення по якомусь мережевому протоколу. А без підключення неможлива взаємодія, на щастя в екосистемі Python знайдуться модулі-клієнти практично для будь-яких протоколів.
- Пакет pip і установка сторонніх модулів
- модуль Paramiko для виконання команд по ssh
- модуль requests для виконання HTTP запитів
- огляд модулів для роботи з базами даних і брокерами повідомлень
- Практика розминка: Астрологи оголосили тиждень кодингу на Python. Кількість практик зросла вдвічі.
Вас помітили! Здається, ви використовували curl, щоб отримувати інформацію від білінгової системи. Саме час використовувати модуль requests, щоб виконати HTTP-запит всередині вашої програми. ДО РЕЧІ, модуль моніторингу не вміє збирати дані про ліміти з особливих хмарних сервісів SBS (Slurm Beautiful Services). Але можна запросити їх самостійно: по протоколу SSH - Практика з зірочкою. Команда розробки впроваджує вже не нову методологію: допустив виникнення алерта - отримай завдання. Аналітична підсистема шукає тільки добірні помилки і складає повідомлення про них в брокер повідомлень Kafka. Ваше завдання завершити цикл повернення багів розробникам: ваш конс'юмер повинен автоматично створювати завдання з потрібним описом і пріоритетом в Trello
Навіщо: підключення до Сервісу-тільки половина справи. Інша половина це обмін інформацією. А інформація часто являє собою набір текстових символів в певному форматі. Розкодувати і закодувати допоможуть модулі. Інформація не потрібна вся цілком? Витягти важливе, відкинувши інше допоможуть регулярні вирази.
- Модуль re і регулярні вирази
- модулі роботи з даними в різних форматах: separated values, json, yaml, xml
- Використання аргументів командного рядка: модуль argparse
- Практика: створення джерела даних про використання послуг
В ході аудиту використання Послуг ви виявили важливу для бізнесу інформацію, зацікавився навіть CEO. Було прийнято рішення проаналізувати втрачені гроші і більше не допускати таких ситуацій. Для цього потрібно дати аналітикам інструмент отримання даних, щоб вони підготували звіти. Проблема полягає в тому, що Модуль моніторингу повертає ліміти по послугах за окремим запитом у форматах yaml, а ціни за послуги повертаються білінгової системою у форматі xml. Необхідно зростити дані про поточне завантаження з лімітами і цінами. Агреговану інформацію відділ аналітики запросив у форматі JSON з можливістю вказати інтервал часу і крок агрегації
Навіщо: важливість взаємодії з операційною системою не потрібно пояснювати додатково. Як подружити її з Python - в цьому уроці.
- читання та запис файлів.
- модуль os-читання environment variables, робота з директоріями і правами, робота з процесами
- модуль subprocess для інтерактивної взаємодії з процесами
- Практика: автоматичне надання доступів до серверів
В ході кампанії з відмови від невикористовуваних послуг виникла курйозна ситуація: сервер продуктової команди відключили, але інфраструктурна команда періодично використовувала його в якості хоста для стейджінга. З'ясувалося, що продуктова команда не використовувала його тому що періодично хтось перезаписував їх налаштування своїми. Було вирішено, що тепер ресурс буде закріплюватися тільки за членами однієї команди, а уникнути помилок допоможе автоматика. Вам, як заварившему цю кашу, необхідно написати агент, який буде періодично опитувати систему управління правами і вносити зміни в конфігурації прав всередині встановлених сервісів і в разі потреби давати сервісам команду перечитати конфігурації
Навіщо: Ansible-потужна система управління конфігураціями, та ще й з можливістю розширення власними модулями. Який збіг, що вона сама і більшість модулів написані на Python.
- написання своїх модулів для ansible
- Практика: написання модуля управління правами
Давним-давно, в далекій-далекій галактиці ви вже писали агент для видачі прав до певних сервісів. Прийшов час поміняти pull на push і в цьому допоможе ansible. Все що потрібно - лише модуль
Навіщо: розширимо можливості K8S під свої завдання
- покажемо як робити це не тільки на Go
Навіщо: підготовка коду до деплою-одна з найважливіших завдань. Зробити цей процес гнучкіше і зручніше допомагають власні скрипти для stage пайплайнов.
- Створення REST API на Flask
- створення свого Prometheus exporter з Prometheus Python Client і Flask
- Практика: вивантаження даних в сторонню систему моніторингу.
Витрати на невикористовуване обладнання перевищили навіть песимістичні прогнози. Тепер у команди інженерів є ще одна зона відповідальності-моніторинг невикористовуваних послуг. Для цього вам необхідно періодично опитувати білінгову систему через ваш скрипт і передавати дані в Prometheus. Формат одержуваних даних все ще не підходить. Вам необхідно реалізувати коннектор. А заодно і написати ендпоінт, щоб Відділ аналітики завжди мав під рукою актуальну інформацію у форматі JSON
- використання сторонніх модулів на прикладі інтеграції в пайплайни GitLab
- Використання pygit для отримання інформації про зміни в коді
- Практика: генерація change log з коммитов
Ваші рішення настільки сподобалися команді інженерів, що вони надихнулися ними і почали писати свої. Тільки ось опису до релізів зробити завжди забувають. Для цього командою було прийнято рішення впровадити commit conventions і генерувати ченджлоги прямо з комітів при злитті dev-бранчу з релізних, а якщо назва коміта не відповідає commit conventions - не допускати merge-request до merge
Навіщо: Infrastructure as a Chat-керуй інфраструктурою з месенджера. Чи буває так? Ми спробуємо.
- за дві години робимо чатопс в прямому ефірі
- ви можете автоматизувати своє завдання, а ми обіцяємо зробити рев'ю вашого коду. Якщо ідей або завдань немає - ми допоможемо їх придумати!.
https://privatelink.de/?https://slurm.io/course-python-for-ops