Table of Contents

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

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

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

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

Теория

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

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

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

Вопросы

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

Теория

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

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

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

2.2 Знакомимся с SCM Gitea

2.3 Знакомимся с Jenkins 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

cmd> route add 172.16.1.0 mask 255.255.255.0 10.5.N.178

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

external-host# echo "GET http://172.16.1.X" | vegeta attack -duration=20s -rate=100 | 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
или
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 Deploy в k8s

Вопросы

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