Table of Contents

DevOps1. Основные инструменты 2025

Программа курса

Модуль 0. Подготовка к занятию

  1. Узнать и записать свой номер стенда: X=
  2. Сообщить его в чат преподавателю

Модуль 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

server:~# sh conf/dns.sh
# 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

Вопросы

  1. Перечислите и объясните команды git

Модуль 2: Docker

Теория

Лабораторные работы: Установка docker и работа с контейнерами

2.1 Причины использования Docker

!!! Методическая рекомендация, запустить установку Docker (только на server) из лабораторной работы 2.2

2.2 Собираем docker контейнер

server# apt purge inetutils-inetd

!!! Методическая рекомендация, запустить установку GitLab из лабораторной работы 4.1

2.3 Связываем и деплоим контейнеры с помощью docker-compose

2.4 Создание образа для приложения с использованием Dockerfile

!!! Методическая рекомендация, запустить установку Golang из этой лабораторной работы

!!! Методическая рекомендация, запустить установку Vagrant из лабораторной работы 3.1

server# scp -r gowebd/ gate:

2.5 Использование Docker Registry

Вопросы

  1. Зачем нужен Docker?
  2. Чем Docker отличается от LXC?
  3. Из каких частей состоит имя образа?
  4. Чем Docker контейнер отличается от Docker образа?
  5. Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами?
  6. Зачем нужен Dockerfile?
  7. Зачем “запихивать” сразу много инструкций в команду RUN?
  8. Зачем нужен docker-compose?

Модуль 3. Инфраструктура как код

Теория

Лабораторные работы: Управление инфраструктурой

3.1 Управление инфраструктурой с использованием Vagrant

!!! Методическая рекомендация, запустить установку Ansible из лабораторной работы 3.2

3.2 Управление инфраструктурой с использованием Ansible

Вопросы

  1. Что общего и в чем отличие между Ansible, Vagrant и Terraform?
  2. Что означает термин Provision в Vagrant?
  3. Что такое module, playbook, role в Ansible?
  4. Назовите каталоги в роли Ansible
  5. Что должно быть установлено на целевой системе для управления через Ansible?
  6. Каким образом Vagrant управляет VM?
  7. Как реализован Ansible provision в Vagrant?

Модуль 4. Continuous Integration

Теория

Лабораторные работы: От Git к CI/CD

4.1 Обзор GitLab

!!! Методическая рекомендация, скачать gitlab-runner из следующей лабораторной работы

4.2 Запуск пайплайнов из .gitlab-ci в gitlab-runners

Вопросы

  1. Чем отличается GitLab от Git?
  1. Для чего нужен GitLab Runner?
  2. Как называется файл для CI/CD в GitLab?

Модуль 5. Обзор задач QA

Теория

Лабораторные работы: Задачи тестирования

5.1 Ручное тестирование функциональности и работа с ветками проекта

5.2 Программы для тестирования в пайплайне

5.3 Программы для нагрузочного и стресс тестирования

5.4 Сборка/тестирование приложения в Docker среде и управление версиями

Вопросы

  1. Что такое “ветка” в 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

Вопросы

Модуль 7. Дополнительные материалы