1. Практики Devops
    1. Система контроля версий как основа разработки ПО
      1. знакомство с GIT
        1. Объяснить для чего нужна система контроля версий и как с ней работать DevOPS
          1. Работа с репозиторием
          2. Локальный репозтиорий
          3. Удаленный репозторий на примере GitHUB и Bitbucket
          4. Рассказываем что можно делать в репозитории
          5. Исправление коммитов
          6. Решение конфликтов
          7. Работа с ветками
          8. Делаем commit, push, pull в Github
      2. Локальное окружение инженера
        1. ChatOPS и визуализация рабочего окружения инженера
        2. Настроить локальный репозиторий
        3. Сделать интеграцию с Travic CI и Slack
    2. Основные сервисы Google Cloud Platform (GCP)
      1. Ручной деплой тестового приложения
      2. Написать bash скрипт для автоматизации задач настройки VM и деплоя приложения
    3. Проанализировать основные практики безопасного доступа к ресурсам
      1. Создать виртуальную машину в GCP Computer Engine
      2. VPN
        1. Настройка OpenVPN для доступа к проектам
      3. SSH
        1. Настройка подкючения SSH через Bastion HOST
  2. Управление инфраструктурой
    1. Модель управления инфраструктой Packer
      1. Что это такое и зачем нужно
      2. Что еще есть у HashiCorp
      3. Используем Packer
        1. Собираем готовый образ с установленным приложением с помощью Packer
        2. Деплоим на GCP
    2. Terraform
      1. Задание №1
        1. Описать GCP инфраструктуры в виде кода
        2. Принципы и подходы IaC
      2. Задание №2
        1. Описать и настроить нескольких окружений в Terraform
        2. Настроить remote backend
    3. Управление конфигурацией. Asible
      1. Обзор инструментов
        1. Chef
        2. Ansible
        3. Puppet
        4. Salt
      2. Задание №1
        1. Произвести сборку образа с помощью Ansible и Packer
      3. Задание №2
        1. Написание своих плейбуков
        2. формирование инвентарей
        3. templates
        4. handlers
        5. dynamic inventory
        6. vault
        7. tags
      4. Задание №3
        1. Управление настройками нескольких окружений
        2. best practies
      5. задание №4
        1. Разработка Ansible ролей с Vagrant
        2. Тестирование конфигураций
          1. Molecula
          2. Testinfra
          3. bagrant
  3. CI/CD
    1. Docker
      1. Введение в Docker
        1. Отличие Docker от виртуализации
        2. Зачем нужен Docker
        3. Задание
          1. Создать образ и запустить контейнер
      2. Работа с Docker
        1. Создать образ приложения
        2. Загрузить образ на Dockerhub
      3. Микросервисы
        1. Разбить приложения на микросервисы
        2. Собрать для каждого приложения отдельный образ
          1. Использовать Dockerfile
      4. сети Docker
        1. Создавать и управлять сетями
        2. Subtopic 2
    2. Непрерывная поставка приложений
      1. Для чего нужна
      2. Как ее внедрить в рабочий процесс
    3. Gitlab CI
      1. Настройка Gitlab
      2. Написать pipeline
  4. Fast Feedback Loop
    1. Как правильно мониторить сервисы. Соверменный подход
    2. Настройка Prometheus
      1. Настройка exportes
    3. Настройка мониторинга веб-сервера Nginx
      1. Визуализация полученных данных
    4. Инструменты для работы с логами
      1. Обработка структурированных логов
      2. Обработка неструктурированных логов
      3. Создание системы централизованного логгирования
  5. Контейнерная оркестрация
    1. Kubernetes
      1. Развернуть компоненты
      2. Основные модели безопасности и компоненты
      3. Ingres контроллеры и сервисы
        1. Настройка балансировщика нагрузки
      4. Kubernetes в Gitlab CI
      5. Мониторинг и логгирование