DevOps1. Основные инструменты 2025
Программа курса
Модуль 0. Подготовка к занятию
Узнать и записать свой номер стенда: X=
Сообщить его в чат преподавателю
Модуль 1: Введение и развертывание стенда
Теория
Лабораторные работы: Развертывание стенда и инициализация репозитория Git
1.1 Схема стенда, импорт, настройка и запуск VM gate и server
Запустите с правами Administrator
C:\cmder\cmder.exe
bash
cd
test -d conf && rm -r conf
git clone http://val.bmstu.ru/unix/conf.git
cd conf/virtualbox/
!!! 8 - это номер курса, вместо X укажите Ваш номер стенда, если не знаете его, спросите преподавателя !!!
./setup.sh X 8
1.2 Настройка сети VM gate и server
# sh net_gate.sh
# init 6
# sh net_server.sh
# init 6
1.3 Инициализация репозитория Git
Сервис Git, команды init, add, commit для каталога /etc на server
server:~# sh conf/dns.sh
Настройка клиента
DNS на gate и server
# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10
# nslookup ns
1.4 Работа с репозиторием Git
server# cat /etc/bind/corpX.un
...
webd A 192.168.X.10
Вопросы
Перечислите и объясните команды git
Модуль 2: Docker
Теория
Лабораторные работы: Установка docker и работа с контейнерами
2.1 Причины использования Docker
!!! Методическая рекомендация, запустить установку Docker (только на server) из лабораторной работы 2.2
2.2 Собираем docker контейнер
server# apt purge inetutils-inetd
Установка Docker из базового репозитория на server и из репозитория вендора на gate
!!! Методическая рекомендация, запустить установку GitLab из лабораторной работы 4.1
2.3 Связываем и деплоим контейнеры с помощью docker-compose
2.4 Создание образа для приложения с использованием Dockerfile
!!! Методическая рекомендация, запустить установку Golang из этой лабораторной работы
!!! Методическая рекомендация, запустить установку Vagrant из лабораторной работы 3.1
server# scp -r gowebd/ gate:
2.5 Использование Docker Registry
Вопросы
Зачем нужен Docker?
Чем Docker отличается от LXC?
Из каких частей состоит имя образа?
Чем Docker контейнер отличается от Docker образа?
Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами?
Зачем нужен Dockerfile?
Зачем “запихивать” сразу много инструкций в команду RUN?
Зачем нужен docker-compose?
Модуль 3. Инфраструктура как код
Теория
Лабораторные работы: Управление инфраструктурой
3.1 Управление инфраструктурой с использованием Vagrant
!!! Методическая рекомендация, запустить установку Ansible из лабораторной работы 3.2
3.2 Управление инфраструктурой с использованием Ansible
Вопросы
Что общего и в чем отличие между Ansible, Vagrant и Terraform?
Что означает термин Provision в Vagrant?
Что такое module, playbook, role в Ansible?
Назовите каталоги в роли Ansible
Что должно быть установлено на целевой системе для управления через Ansible?
Каким образом Vagrant управляет VM?
Как реализован Ansible provision в Vagrant?
Модуль 4. Continuous Integration
Теория
Лабораторные работы: От Git к CI/CD
4.1 Обзор GitLab
!!! Методическая рекомендация, скачать gitlab-runner из следующей лабораторной работы
4.2 Запуск пайплайнов из .gitlab-ci в gitlab-runners
Используя GitLab Pipeline Editor добавляем в проект openvpn1
Пример shell ansible Pipeline и наблюдаем “выкатку” в “прод” после Commit в ветку main
Вопросы
Чем отличается GitLab от Git?
Для чего нужен GitLab Runner?
Как называется файл для CI/CD в GitLab?
Модуль 5. Обзор задач QA
Теория
Лабораторные работы: Задачи тестирования
5.1 Ручное тестирование функциональности и работа с ветками проекта
Добавляем параметры dhcp-option,block-outside-dns и Commit в test с созданием Merge requests и наблюдаем “выкатку” в “тестовую” среду, проверяем работу сервиса в ней
Одобряем Merge requests и наблюдаем “выкатку” в “прод”
5.2 Программы для тестирования в пайплайне
-
Автоматизируем сборку образа, используя
Проверка синтаксиса и
Пример shell docker GitLab CI/CD, не забыв назначить метки Gitlab Runner. Можно обсудить добавление переменных в проект и вывод их через env
5.3 Программы для нагрузочного и стресс тестирования
5.4 Сборка/тестирование приложения в Docker среде и управление версиями
Вопросы
Что такое “ветка” в Git и почему переименовали master в main?
Модуль 6. Kubernetes
Теория
Лабораторные работы: Зачем нужен Kubernetes
6.1 Установка minikube
6.2 Создание deployment и service
ext-host:~# echo "GET http://webd.corpX.un" | vegeta attack -duration=20s -rate=400 -connect-to webd.corpX.un:80:172.16.1.X:80 | vegeta report
5.3 Continuous deployment в k8s
Вопросы
Почему Kubernetes часто обозначают K8s?
Чем K8s отличается от Docker-Compose?
Что используется для описания состояния объектов в K8s?
Как связаны понятия Deployment, Replica Sets, Pods?
Для чего используются Namespace?
Модуль 7. Дополнительные материалы
Вход в Jenkins и процесс непрерывной интеграции для администратора Linux
-