Table of Contents

Введение в DevOps

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

Модуль 0. Подготовка стенда в классе

Модуль 1: Развертывание стенда

Теория

Лабораторные работы: Развертывание стенда

1.1 Схема стенда, импорт, настройка и запуск VM gate и server

Запустите с правами Administrator

C:\cmder\cmder.exe

bash

cd

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 настройка сервиса DNS

server:~# sh conf/dns.sh
# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10
# nslookup ns

Вопросы

Модуль 2: От Git к GitLab CI/CD

Теория

Лабораторные работы: От Git к GitLab

2.1 Вспоминаем Git

gate:~# sh conf/dhcp.sh
gate# su - student

2.2 Знакомимся с GitLab

!!! Если GitLab к этому времени не установился, начать тему Vagrant

2.3 Знакомимся с GitLab CI/CD

2.4 Работа с ветками в GitLab CI/CD

!!! в теме Ansible

Вопросы

  1. Чем отличается GitLab от Git?
  2. Что делают операции add, commit, push в Git?
  3. Для чего нужен GitLab Runner?
  4. Как называется файл для CI/CD в GitLab?
  5. Что такое “ветка” в Git и почему переименовали master в main?

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

Теория

Лабораторные работы: Использование Vagrant

3.1 Использование Vagrant

3.2 Использование Ansible

3.3 Использование Ansible в Vagrant

Вопросы

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

Модуль 4: Распространение ПО с использованием контейнеров

Теория

Лабораторные работы: Работа с контейнерами Docker

4.1 Разработка и нагрузочное тестирование приложения webd

external-host# curl http://172.16.1.X

external-host# echo "GET http://172.16.1.X" | vegeta attack -duration=60s -rate=400 | vegeta report

server# tail -f /var/log/syslog

4.2 Использование технологии Docker и docker-compose для масштабирования приложения webd на одном узле

4.3 Использование технологии Docker Registry для распространения приложения webd

Методически, достаточно показать на node1

4.4 GitLab CI для Docker images

4.5 CD приложения webd с использованием docker-compose

Вопросы

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

Модуль 5: Управление ПО с использованием Kubernetes

Теория

Лабораторные работы: Тема лабораторных работ

5.1 Установка и подключение к k8s

5.2 Базовые объекты k8s

extern-host# cat /etc/hosts
...
172.16.1.X     webd.corpX.un

5.3 Deploy в k8s

5.4 Helm в k8s (следующий курс :)

Вопросы

Дополнительные материалы