Открытый вебинар «Виртуальная лаборатория на Vagrant» 05.10.2018 в 20:00 | OTUS

Курсы

Специализации Курсы в разработке Подготовительные курсы
+7 499 110-61-65
Проходил 5 октября 2018 года в 20:00

Открытый вебинар курса "Администратор Linux"
Виртуальная лаборатория на Vagrant

Открытый вебинар онлайн

Учимся разворачивать виртуальную лабораторию в считанные минуты. Обсуждаем возможности и особенности использования Vagrant и Git. Для полноценного вовлечения рекомендуется установить следующее ПО предпочтительно последних версий:

VirtualBox - https://www.virtualbox.org/wiki/Downloads
Git - https://git-scm.com/downloads
Vagrant - https://www.vagrantup.com/downloads.html
Ansible - https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

Слушателям также предлагается зарегистрироваться на GitHub - https://github.com

Наличие ПО и регистрация на GitHub необязательны, но позволят участникам самостоятельно выполнять действия, демонстрируемые в ходе вебинара.
Преподаватель
Леонид Альбрехт

Запись

О курсе

Администратор Linux
80 000 ₽ 68 000 ₽
5 месяцев
Начало 28 апреля
  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Программа курса
Модуль 1
Архитектура Linux
Модуль 2
Управление, безопасность и мониторинг
Модуль 3
Linux и сеть
Модуль 4
Сервисы Linux
Модуль 5
Проект
Архитектура Linux
В этом модуле будут разбираться базовые компоненты OS Linux. Будем разбирать, что такое ядро и его модули, загрузчик, процессы, дисковая и файловая системы, inodes и daemons.
Научимся устанавливать и обновлять и восстанавливать OS, управлять загрузкой, создавать и изменять RAID массивы, управлять логическими томами

Проект на весь модуль: делаем свою загрузочную флешку readonly, со своим ядром
С чего начинается Linux
познакомиться с программой и группой;
объяснить, как работает ядро;
обновить ядро.
28 апреля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Обновить ядро в базовой системе.. В материалах к занятию есть методичка, в которой описана процедура обновления ядра из репозитория. По данной методичке требуется выполнить необходимые действия. Полученный в ходе выполнения ДЗ Vagrantfile должен быть залит в ваш репозиторий. Для проверки ДЗ необходимо прислать ссылку на него.
Для выполнения ДЗ со * и ** вам потребуется сборка ядра и модулей из исходников.
Дисковая подсистема
перечислить виды RAID массивов и их отличия;
получить информацию о дисковой подсистеме на любом сервере с ОС Linux;
собрать программный рейд и восстановить его после сбоя.
1 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
работа с mdadm. . добавить в Vagrantfile еще дисков
сломать/починить raid
собрать R0/R5/R10 на выбор
прописать собранный рейд в конф, чтобы рейд собирался при загрузке
создать GPT раздел и 5 партиций

в качестве проверки принимаются - измененный Vagrantfile, скрипт для создания рейда, конф для автосборки рейда при загрузке
* доп. задание - Vagrantfile, который сразу собирает систему с подключенным рейдом
** перенесети работающую систему с одним диском на RAID 1. Даунтайм на загрузку с нового диска предполагается. В качестве проверики принимается вывод команды lsblk до и после и описание хода решения (можно воспользовать утилитой Script).
Файловые системы и LVM
lVM - облегчить себе жизнь управления файловыми системами;
архитектура файловой системы Linux: суперблок, блоки, inodes, журналы;
разобраться в многообразии файловых систем.
5 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
Работа с LVM. на имеющемся образе
/dev/mapper/VolGroup00-LogVol00 38G 738M 37G 2% /

уменьшить том под / до 8G
выделить том под /home
выделить том под /var
/var - сделать в mirror
/home - сделать том для снэпшотов
прописать монтирование в fstab
попробовать с разными опциями и разными файловыми системами ( на выбор)
- сгенерить файлы в /home/
- снять снэпшот
- удалить часть файлов
- восстановится со снэпшота
- залоггировать работу можно с помощью утилиты script

* на нашей куче дисков попробовать поставить btrfs/zfs - с кешем, снэпшотами - разметить здесь каталог /opt
ZFS
8 мая, 20:00 — 21:30
NFS, FUSE
монтировать файловые системы с помощью FUSE;
настраивать и использовать NFS.
12 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
Vagrant стенд для NFS или SAMBA. NFS или SAMBA на выбор:

vagrant up должен поднимать 2 виртуалки: сервер и клиент
на сервер должна быть расшарена директория
на клиента она должна автоматически монтироваться при старте (fstab или autofs)
в шаре должна быть папка upload с правами на запись
- требования для NFS: NFSv3 по UDP, включенный firewall

* Настроить аутентификацию через KERBEROS
Загрузка системы
объяснить как происходит загрузка системы, в чем разница между BIOS/UEFI;
настраивать GRUB2;
управлять initrd с помощью dracut;
работать с udev;
восстанавливать сломанный загрузчик.
15 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
Работа с загрузчиком. 1. Попасть в систему без пароля несколькими способами
2. Установить систему с LVM, после чего переименовать VG
3. Добавить модуль в initrd

4(*). Сконфигурировать систему без отдельного раздела с /boot, а только с LVM
Репозиторий с пропатченым grub: https://yum.rumyantsev.com/centos/7/x86_64/
PV необходимо инициализировать с параметром --bootloaderareasize 1m
Инициализация системы. Systemd.
писать сценарии автозагрузки демонов;
учимся обращаться с systemctl и journalctl.
19 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
Systemd. Выполнить следующие задания и подготовить развёртывание результата выполнения с использованием Vagrant и Vagrant shell provisioner (или Ansible, на Ваше усмотрение):
1. Написать service, который будет раз в 30 секунд мониторить лог на предмет наличия ключевого слова (файл лога и ключевое слово должны задаваться в /etc/sysconfig);
2. Из репозитория epel установить spawn-fcgi и переписать init-скрипт на unit-файл (имя service должно называться так же: spawn-fcgi);
3. Дополнить unit-файл httpd (он же apache) возможностью запустить несколько инстансов сервера с разными конфигурационными файлами;
4*. Скачать демо-версию Atlassian Jira и переписать основной скрипт запуска на unit-файл.
Bash
писать скрипты на языка bash.
22 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
Пишем скрипт. написать скрипт для крона
который раз в час присылает на заданную почту
- X IP адресов (с наибольшим кол-вом запросов) с указанием кол-ва запросов c момента последнего запуска скрипта
- Y запрашиваемых адресов (с наибольшим кол-вом запросов) с указанием кол-ва запросов c момента последнего запуска скрипта
- все ошибки c момента последнего запуска
- список всех кодов возврата с указанием их кол-ва с момента последнего запуска
в письме должно быть прописан обрабатываемый временной диапазон
должна быть реализована защита от мультизапуска
grep, sed, awk и другие
работать с многочисленными консольными утилитами в Linux, такими как grep, find, set, cut, tr, vim и так далее;
писать скрипты на awk.
26 мая, 20:00 — 21:30
Управление пакетами. Дистрибьюция софта
устанавливать софт в Linux;
собирать из исходников;
репозитории, yum и rpm;
dnf
snap
29 мая, 20:00 — 21:30
Домашние задания: 1
ДЗ
Размещаем свой RPM в своем репозитории. 1) создать свой RPM (можно взять свое приложение, либо собрать к примеру апач с определенными опциями)
2) создать свой репо и разместить там свой RPM
реализовать это все либо в вагранте, либо развернуть у себя через nginx и дать ссылку на репо

* реализовать дополнительно пакет через docker
Управление процессами
объяснить, что такое процесс, его атрибуты, жизненный цикл процесса;
объяснить чем потоки отличаются от процессов;
мониторить процессы, в каком они состоянии, понимать чем они сейчас заняты;
изучить команды ps/top, подсистему /proc, а также команды gdb/strace/ltrace;
менять приоритеты с мощью команд nice, ionice;
посылать различные сигналы процессам.
2 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
работаем с процессами. Задания на выбор
1) написать свою реализацию ps ax используя анализ /proc
- Результат ДЗ - рабочий скрипт который можно запустить
2) написать свою реализацию lsof
- Результат ДЗ - рабочий скрипт который можно запустить
3) дописать обработчики сигналов в прилагаемом скрипте, оттестировать, приложить сам скрипт, инструкции по использованию
- Результат ДЗ - рабочий скрипт который можно запустить + инструкция по использованию и лог консоли
4) реализовать 2 конкурирующих процесса по IO. пробовать запустить с разными ionice
- Результат ДЗ - скрипт запускающий 2 процесса с разными ionice, замеряющий время выполнения и лог консоли
5) реализовать 2 конкурирующих процесса по CPU. пробовать запустить с разными nice
- Результат ДЗ - скрипт запускающий 2 процесса с разными nice и замеряющий время выполнения и лог консоли
Механизмы изоляции и аккаунтинга Linux (namespaces и cgroups)
5 июня, 20:00 — 21:30
Работа с памятью
разобраться как работают механизмы управления памятью в Linux;
находить какие процессы занимают память;
разобраться в статистической информации по памяти.
9 июня, 20:00 — 21:30
Управление, безопасность и мониторинг
В этом модуле мы рассмотрим задачи и рабочие инструменты для управления системой, обеспечения безопасности, контроля прав и доступов. Также мы рассмотрим инструменты для мониторинга, логгирования и анализа проблем производительности и сбоев. Будем учится решать проблемы и производить ретроспективный анализ.
Пользователи и группы. Авторизация и аутентификация
рассмотреть механизмы авторизации и аутентификации;
объяснить какие бывают права у пользовталей;
управлять правами с помощью sudo, umask. sgid, suid и более сложными инструментами как PAM и ACL, PolicyKit.
12 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
PAM. 1. Запретить всем пользователям, кроме группы admin логин в выходные (суббота и воскресенье), без учета праздников
* дать конкретному пользователю права работать с докером
и возможность рестартить докер сервис
SELinux - когда все запрещено.
разобраться, что такое SELinux.
16 июня, 20:00 — 21:30
Автоматизация администрирования. Ansible-1.
автоматизировать рутинные задачи администрирования;
изучить ansible - инвентори, модули, плейбуки, роли, переменные; объяснить разницу с другими инструментами - chef/puppet/salt.
19 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Первые шаги с Ansible. Подготовить стенд на Vagrant как минимум с одним сервером. На этом сервере используя Ansible необходимо развернуть nginx со следующими условиями:
- необходимо использовать модуль yum/apt
- конфигурационные файлы должны быть взяты из шаблона jinja2 с перемененными
- после установки nginx должен быть в режиме enabled в systemd
- должен быть использован notify для старта nginx после установки
- сайт должен слушать на нестандартном порту - 8080, для этого использовать переменные в Ansible
* Сделать все это с использованием Ansible роли

Домашнее задание считается принятым, если:
- предоставлен Vagrantfile и готовый playbook/роль ( инструкция по запуску стенда, если посчитаете необходимым )
- после запуска стенда nginx доступен на порту 8080
- при написании playbook/роли соблюдены перечисленные в задании условия
Автоматизация администрирования. Ansible-2.
писать ansible роли, использовать ansible-vault, использовать AWX.
23 июня, 20:00 — 21:30
Docker
писать Dockerfile;
создать docker-compose;
запустить docker swarm.
26 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Docker, docker-compose, dockerfile. Описание ДЗ в документе
Docker - 2
30 июня, 20:00 — 21:30
Мониторинг производительности
мониторить занятые ресурсы: CPU, память, диск, сеть;
изучить инструменты ps, top , sar, htop, atop, netstat, ss, vmstat, iostat, iotop, pidstat;
посмотреть, что находится в /proc;
объяснить, что делать с неотзывчивой системой.
3 июля, 20:00 — 21:30
Мониторинг и алертинг
изучить Zabbix;
познакомиться с Prometheus.
7 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Настройка мониторинга. Настроить дашборд с 4-мя графиками
1) память
2) процессор
3) диск
4) сеть

настроить на одной из систем
- zabbix (использовать screen (комплексный экран))
- prometheus - grafana

* использование систем примеры которых не рассматривались на занятии
- список возможных систем был приведен в презентации

в качестве результата прислать скриншот экрана - дашборд должен содержать в названии имя приславшего
Сбор и анализ логов
разобрать настройку логгирования с помощью rsyslog и logrotate;
познакомиться с модными система логгирования - ELK, graylog.
10 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Настраиваем центральный сервер для сбора логов. в вагранте поднимаем 2 машины web и log
на web поднимаем nginx
на log настраиваем центральный лог сервер на любой системе на выбор
- journald
- rsyslog
- elk
настраиваем аудит следящий за изменением конфигов нжинкса

все критичные логи с web должны собираться и локально и удаленно
все логи с nginx должны уходить на удаленный сервер (локально только критичные)
логи аудита должны также уходить на удаленную систему


* развернуть еще машину elk
и таким образом настроить 2 центральных лог системы elk И какую либо еще
в elk должны уходить только логи нжинкса
во вторую систему все остальное
Резервное копирование
обсудить политики и методики резерного копирования;
работать с инструментами rsync, tar, dd и bacula.
14 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Настраиваем бэкапы. Настроить стенд Vagrant с двумя виртуальными машинами server и client.

Настроить политику бэкапа директории /etc с клиента:
1) Полный бэкап - раз в день
2) Инкрементальный - каждые 10 минут
3) Дифференциальный - каждые 30 минут

Запустить систему на два часа. Для сдачи ДЗ приложить list jobs, list files jobid=<id>
и сами конфиги bacula-*

* Настроить доп. Опции - сжатие, шифрование, дедупликация
Linux и сеть
Настраиваем и работаем с сетью в Linux. От хоста до маршрутизатора и брандмауэра.
Архитектура сетей
освоить команды ip/tc/ss/nstat, вспомним ifconfig/netstat/route, заглянем в /etc/sysconfig/network-scripts, поснифферим через tcpdump и ngrep.
17 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
разворачиваем сетевую лабораторию.
# otus-linux
Vagrantfile - для стенда урока 9 - Network

# Дано
https://github.com/erlong15/otus-linux/tree/network
(ветка network)

Vagrantfile с начальным построением сети
- inetRouter
- centralRouter
- centralServer

тестировалось на virtualbox

# Планируемая архитектура
построить следующую архитектуру

Сеть office1
- 192.168.2.0/26 - dev
- 192.168.2.64/26 - test servers
- 192.168.2.128/26 - managers
- 192.168.2.192/26 - office hardware

Сеть office2
- 192.168.1.0/25 - dev
- 192.168.1.128/26 - test servers
- 192.168.1.192/26 - office hardware


Сеть central
- 192.168.0.0/28 - directors
- 192.168.0.32/28 - office hardware
- 192.168.0.64/26 - wifi

```
Office1 ---\
-----> Central --IRouter --> internet
Office2----/
```
Итого должны получится следующие сервера
- inetRouter
- centralRouter
- office1Router
- office2Router
- centralServer
- office1Server
- office2Server

# Теоретическая часть
- Найти свободные подсети
- Посчитать сколько узлов в каждой подсети, включая свободные
- Указать broadcast адрес для каждой подсети
- проверить нет ли ошибок при разбиении

# Практическая часть
- Соединить офисы в сеть согласно схеме и настроить роутинг
- Все сервера и роутеры должны ходить в инет черз inetRouter
- Все сервера должны видеть друг друга
- у всех новых серверов отключить дефолт на нат (eth0), который вагрант поднимает для связи
- при нехватке сетевых интервейсов добавить по несколько адресов на интерфейс



DHCP, PXE
настроить запуск серверов с загрузкой ОС по сети.
21 июля, 20:00 — 21:30
DNS- настройка и обслуживание
узнать как завести домен;
управлять зонами (bind/powerdns);
обслуживать свой домен самостоятельно;
разобрать dig/host/nslookup.
24 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
настраиваем split-dns. взять стенд https://github.com/erlong15/vagrant-bind
добавить еще один сервер client2
завести в зоне dns.lab
имена
web1 - смотрит на клиент1
web2 смотрит на клиент2

завести еще одну зону newdns.lab
завести в ней запись
www - смотрит на обоих клиентов

настроить split-dns
клиент1 - видит обе зоны, но в зоне dns.lab только web1

клиент2 видит только dns.lab

*) настроить все без выключения selinux
Фильтрация трафика - firewalld, iptables
настраивать файрвалл с использованием iptables/firewalld
настраивать NAT
пробрасывать порты
настраивать взаимодействие с роутингом
понимать работу таблиц и цепочек
28 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сценарии iptables. 1) реализовать knocking port
- centralRouter может попасть на ssh inetrRouter через knock скрипт
пример в материалах
2) добавить inetRouter2, который виден(маршрутизируется (host-only тип сети для виртуалки)) с хоста или форвардится порт через локалхост
3) запустить nginx на centralServer
4) пробросить 80й порт на inetRouter2 8080
5) дефолт в инет оставить через inetRouter

* реализовать проход на 80й порт без маскарадинга
Фильтрация трафика - nftables
31 июля, 20:00 — 21:30
LDAP. Централизованная авторизация и аутентификация
объяснить, что такое LDAP и зачем нужен; разобрать базовую настройку LDAP на примере.
4 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
LDAP. 1. Установить FreeIPA;
2. Написать Ansible playbook для конфигурации клиента;
3*. Настроить аутентификацию по SSH-ключам;
4**. Firewall должен быть включен на сервере и на клиенте.

В git - результирующий playbook.
Статическая и динамическая маршрутизация, OSPF
понимать принцип работы multicast;
настраивать статическую и динамическую маршрутизацию;
понимать принципы работы протоколов OSPF BGP;
настраивать динамическую маршрутизацию с помощью quagga.
7 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
OSPF. - Поднять три виртуалки
- Объединить их разными vlan
1. Поднять OSPF между машинами на базе Quagga
2. Изобразить ассиметричный роутинг
3. Сделать один из линков "дорогим", но что бы при этом роутинг был симметричным

Формат сдачи:
Vagrantfile + ansible
BGP
11 августа, 20:00 — 21:30
Мосты, туннели и VPN
понимать что такое мосты и туннели;
настраивать мосты и туннели между сетями;
разбираться в различных типах реализаций мостов и туннелей.
14 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
VPN. 1. Между двумя виртуалками поднять vpn в режимах
- tun
- tap
Прочуствовать разницу.

2. Поднять RAS на базе OpenVPN с клиентскими сертификатами, подключиться с локальной машины на виртуалку

3*. Самостоятельно изучить, поднять ocserv и подключиться с хоста к виртуалке
Сетевые пакеты. VLAN'ы. LACP.
изучить UniCast/MultiCast/BroadCast/AnyCast;
изучить протокол LACP. Учимся аггрегировать интерфейсы через teaming и bonding;
р что такое VLAN. Знакомимся с dot1q, macvlan
освоить работу с nmcli.
18 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
строим бонды и вланы. в Office1 в тестовой подсети появляется сервера с доп интерфесами и адресами
в internal сети testLAN
- testClient1 - 10.10.10.254
- testClient2 - 10.10.10.254
- testServer1- 10.10.10.1
- testServer2- 10.10.10.1

равести вланами
testClient1 <-> testServer1
testClient2 <-> testServer2

между centralRouter и inetRouter
"пробросить" 2 линка (общая inernal сеть) и объединить их в бонд
проверить работу c отключением интерфейсов

для сдачи - вагрант файл с требуемой конфигурацией
Разворачиваться конфигурация должна через ансибл

IPv6
понимать как работает протокол Ipv6;
знать правила формирования адреса;
отличать типы адресов;
знать особенности работы и преимущества использования;
настраивать маршрутизацию и файрвалл;
21 августа, 20:00 — 21:30
Сервисы Linux
Рассмотрим настройку базовых сервисов на ОС Линукс, таких как базы данных, почта и веб сервер
Веб сервера: nginx, apache
объяснить протоколы HTTP/HTTPS, HTTP 2.0;
разобраться с SSL;
устанавливать и настраивать Apache и Nginx;
настраивать vhosts.
25 августа, 20:00 — 21:30
Nginx
настраивать upstream, proxy_pass
настройка кэша
lua
Динамический веб
разбираться в CGI/FCGI/WSGI/mod_xxx;
настраивать uwsgi/php_fpm;
понимать Ajax/Long Pooling/Websockets.
28 августа, 20:00 — 21:30
Почта: SMTP, IMAP, POP3
после занятия вы сможете:
разбирать почтовые протоколы;
устанавливать и настраивать Postfix и Dovecot;
оценить настройки безопасности.
1 сентября, 20:00 — 21:30
Mysql
устанавливать, настраивать, тестировать mysql;
понимать, на что влияют различные настройки;
понимать, как работает СУБД;
понимать какие файлы и их назначение используются mysql;
настраивать базовую репликацию.
4 сентября, 20:00 — 21:30
PostgreSQL
после занятия вы сможете:
администрировать PostgreSQL;
установить, настроить, создать пользователей и роли;
выдать права, создать базы;
мониторить, делать бекапы.
8 сентября, 20:00 — 21:30
Проект
Создание рабочего проекта
веб проект с развертыванием нескольких виртуальных машин
должен отвечать следующим требованиям
- включен https
- основная инфраструктура в DMZ зоне
- файрвалл на входе
- сбор метрик и настроенный алертинг
- везде включен selinux
- организован централизованный сбор логов
Защита проектных работ
защитить проект и получить рекомендации экспертов.
11 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
проект.
Подведение итогов курса
узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.
15 сентября, 20:00 — 21:30

Преподаватель

Леонид Альбрехт
RusLink
Системный инженер в холдинге компаний RusLink.
Опыт в отрасли более 10 лет. Работал как в частном секторе, так и в окологосударственном (Ростелеком).
Участвовал в разработке и внедрении новых продуктов и сервисов. Есть опыт в руководстве отделом тех. поддержки и администрирования.

Профессиональные навыки:
- знание современных клиентских и серверных ОС;
- установка и настройка различных СУБД (MS SQL, PostgreSQL, MySQL, MariaDB);
- администрирование веб-серверов Apache, Nginx;
- виртуализация и знание продуктов VMware, VirtualBox, Proxmox, Vagrant;
- написание скриптов на Bash;
- применение Ansible;
- знание активного сетевого оборудования Mikrotik, D-Link и др.
Преподаватель курсов:
Администратор Linux