reorganize homeworks structure for parts 1-3
30
readme.md
@@ -2,21 +2,19 @@
|
||||
|
||||
## Homeworks
|
||||
|
||||
Пометки расположены в [notes.md](/src/homework/notes.md).
|
||||
|
||||
* [1.1 Введение в DevOps](/src/homework/1.1)
|
||||
* [2.1 Системы контроля версий](/src/homework/2.1)
|
||||
* [2.2 Основы Git](/src/homework/2.2)
|
||||
* [2.3 Ветвления в Git](/src/homework/2.3)
|
||||
* [2.4 Ветвления в Git](/src/homework/2.4)
|
||||
* [3.1 Работа в терминале, лекция 1](/src/homework/3.1)
|
||||
* [3.2 Работа в терминале, лекция 2](/src/homework/3.2)
|
||||
* [3.3. Операционные системы, лекция 1](/src/homework/3.3)
|
||||
* [3.4. Операционные системы, лекция 2](/src/homework/3.4)
|
||||
* [3.5. Файловые системы](/src/homework/3.5)
|
||||
* [3.6. Компьютерные сети, лекция 1](/src/homework/3.6)
|
||||
* [3.7. Компьютерные сети, лекция 2](/src/homework/3.7)
|
||||
* [3.8. Компьютерные сети, лекция 3](/src/homework/3.8)
|
||||
* [3.9. Элементы безопасности информационных систем](/src/homework/3.9)
|
||||
* [1.1 Введение в DevOps](/src/homework/01-intro/1.1)
|
||||
* [2.1 Системы контроля версий](/src/homework/02-git/2.1)
|
||||
* [2.2 Основы Git](/src/homework/02-git/2.2)
|
||||
* [2.3 Ветвления в Git](/src/homework/02-git/2.3)
|
||||
* [2.4 Ветвления в Git](/src/homework/02-git/2.4)
|
||||
* [3.1 Работа в терминале, лекция 1](/src/homework/03-sysadmin/3.1)
|
||||
* [3.2 Работа в терминале, лекция 2](/src/homework/03-sysadmin/3.2)
|
||||
* [3.3. Операционные системы, лекция 1](/src/homework/03-sysadmin/3.3)
|
||||
* [3.4. Операционные системы, лекция 2](/src/homework/03-sysadmin/3.4)
|
||||
* [3.5. Файловые системы](/src/homework/03-sysadmin/3.5)
|
||||
* [3.6. Компьютерные сети, лекция 1](/src/homework/03-sysadmin/3.6)
|
||||
* [3.7. Компьютерные сети, лекция 2](/src/homework/03-sysadmin/3.7)
|
||||
* [3.8. Компьютерные сети, лекция 3](/src/homework/03-sysadmin/3.8)
|
||||
* [3.9. Элементы безопасности информационных систем](/src/homework/03-sysadmin/3.9)
|
||||
* [4.1. Командная оболочка Bash: Практические навыки](/src/homework/4.1)
|
||||
* [4.2. Использование Python для решения типовых DevOps задач](/src/homework/4,2)
|
||||
|
||||
|
Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 243 KiB |
17
src/homework/02-git/notes.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Git
|
||||
|
||||
## Git new commands
|
||||
|
||||
В git постепенно появляются алиасы, чтобы команды становились узконаправленными. Новые полезные команды:
|
||||
1. [`git restore`](https://git-scm.com/docs/git-restore) - восстановление файлов в рабочей директории (например, откат изменений как при использовании `git checkout -- .`)
|
||||
2. [`git switch`](https://git-scm.com/docs/git-switch) - переключение веток. Более узконаправленная команда, чем `git checkout` или `git branch`.
|
||||
|
||||
## Git rebase
|
||||
|
||||
Примерный порядок действий перебазирования веток в `main`:
|
||||
1. `git switch new-branch`
|
||||
2. `git rebase main`
|
||||
3. _optional_ исправление конфликтов, выполнение команды `git rebase --continue`
|
||||
4. `git checkout main`
|
||||
5. `git merge new-branch`
|
||||
6. `git branch -D new-branch`
|
||||
@@ -48,7 +48,7 @@
|
||||
5. Что делает конструкция `[[ -d /tmp ]]`
|
||||
|
||||
Возвращает 0, если `/tmp` существует и это директория, или 1, в ином случае.
|
||||
Скрипт, проверяющий данный ответ находится в файле [double_square_braket.sh](./double_square_braket.sh).
|
||||
Скрипт, проверяющий данный ответ находится в файле [double_square_braket.sh](double_square_braket.sh).
|
||||
|
||||
4. Добейтесь в выводе type -a bash в виртуальной машине наличия первым пунктом в списке.
|
||||
|
||||
@@ -40,7 +40,7 @@ Set-Cookie: prov=a65f8cdf-ae94-33aa-2d32-b4ba53feba61; domain=.stackoverflow.com
|
||||
Наиболее долгих по загрузке запрос - это запрос на загрузку самой страницы после редиректа (`https://stackoverflow.com/`).
|
||||
Скриншот консоли браузера:
|
||||
|
||||

|
||||

|
||||
|
||||
3. Какой IP адрес у вас в интернете?
|
||||
|
||||
|
Before Width: | Height: | Size: 349 KiB After Width: | Height: | Size: 349 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
@@ -118,9 +118,9 @@ UNCONN 0 0
|
||||
|
||||
В качестве сети взята стандартная домашняя сеть с wi-fi-роутером.
|
||||
|
||||
Файл [network.xml](./network.xml) для открытия в [diagrams.net](https://diagrams.net).
|
||||
Файл [network.xml](network.xml) для открытия в [diagrams.net](https://diagrams.net).
|
||||
|
||||

|
||||

|
||||
|
||||
6. Установите Nginx, настройте в режиме балансировщика TCP или UDP.
|
||||
|
||||
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
@@ -15,7 +15,7 @@
|
||||
|
||||
3. Установите apache2, сгенерируйте самоподписанный сертификат, настройте тестовый сайт для работы по HTTPS.
|
||||
|
||||
Вместо `apache2` будем производить настройку уже установленного в виртуальную машину `nginx` (установка производилась в [дз 3.8:6](/src/homework/3.8/readme.md#Q/A)).
|
||||
Вместо `apache2` будем производить настройку уже установленного в виртуальную машину `nginx` (установка производилась в [дз 3.8:6](/src/homework/03-sysadmin/3.8sysadmin/3.8/readme.md#Q/A)).
|
||||
|
||||
Первым шагом необходимо сгенерировать сертификат:
|
||||
|
||||
@@ -265,4 +265,4 @@ scp -P 2222 vagrant@127.0.0.1:/home/vagrant/dump.pcap ./dump.pcap
|
||||
|
||||
Затем запустим графическое отображение утилиты и откроем в ней файл:
|
||||
|
||||

|
||||

|
||||
|
Before Width: | Height: | Size: 493 KiB After Width: | Height: | Size: 493 KiB |
119
src/homework/03-sysadmin/notes.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# Linux operating system
|
||||
|
||||
## Streams
|
||||
|
||||
Базовые потоки:
|
||||
* `0` - stdin (`/proc/<pid>/fd/0`)
|
||||
* `1` - stdout (`/proc/<pid>/fd/1`)
|
||||
* `2` - stderr (`/proc/<pid>/fd/2`)
|
||||
|
||||
Для перенаправления потока можно использовать `X>&Y`, где `X` поток, который нужно перенаправить,
|
||||
`Y` - поток, в который нужно направить данные (может быть стандартным файлом).
|
||||
|
||||
## Kernel
|
||||
|
||||
Версия ядра: `uname -r`.
|
||||
Версия дистрибутива: `cat /etc/issue` (debian-based), `cat /etc/redhat-release` (centos-based).
|
||||
|
||||
Посмотреть всю конфигурацию системы: `sysctl -a`.
|
||||
|
||||
Логи системы: `dmesg`, `syslog`.
|
||||
|
||||
## Systemctl
|
||||
|
||||
* `systemctl list-units --all`
|
||||
* `systemctl status <service>`
|
||||
* `systemctl cat <service>` - просмотреть файл настроек сервиса
|
||||
* `systemctl list-dependencies <service>`
|
||||
```shell
|
||||
systemctl list-dependencies docker
|
||||
|
||||
docker.service
|
||||
● ├─containerd.service
|
||||
● ├─docker.socket
|
||||
● ├─system.slice
|
||||
● ├─network-online.target
|
||||
● │ └─NetworkManager-wait-online.service
|
||||
● └─sysinit.target
|
||||
● ├─apparmor.service
|
||||
<...>
|
||||
```
|
||||
* `journalctl -f`
|
||||
* `journalctl -f -u docker`
|
||||
|
||||
## Filesystems
|
||||
|
||||
* `stat <file>`
|
||||
|
||||
### File types
|
||||
|
||||
* regular file (`ls -la` - `-`)
|
||||
* directory (`ls -la` - `d`)
|
||||
* hardlink (`ls -la` - `l`)
|
||||
|
||||
1 файл - 1 hardlink
|
||||
1 директрория - минимум 2 hardlink (у пустой директории - 2, +1 за каждую директорию внутри)
|
||||
|
||||
* symlink (`ls -la` - `l`)
|
||||
* pipe (`ls -la` - `p`)
|
||||
|
||||
Перенаправление потоков, только однонаправленный
|
||||
`mkfifo <pipe>`
|
||||
|
||||
* socket (`ls -la` - `s`)
|
||||
|
||||
Двунаправленный поток, производительнее, чем pipe. Используется для взаимодействия между процессами.
|
||||
|
||||
### File access
|
||||
|
||||
`chown`, `chmod`, `umask`
|
||||
|
||||
Права по умолчанию:
|
||||
* `file`: `666 - umask`
|
||||
* `dir`: `777 - umask`
|
||||
|
||||
Дополнительные права доступа:
|
||||
* `sticky` - создание доступно всем, удаление только файлы пользователя
|
||||
* `setuid`
|
||||
* `setgid`
|
||||
|
||||
`lsattr`/`chattr`
|
||||
|
||||
### Raid
|
||||
|
||||
`mdadm`
|
||||
|
||||
### LVM
|
||||
|
||||
`lvs`, `vgs`, `vgdisplay`, `pvdisplay`
|
||||
|
||||
### Partitions
|
||||
|
||||
`fdisk -l`/`fdisk`, `sfdisk`
|
||||
|
||||
### Filesystems
|
||||
|
||||
`mkfs`, `mount`, `/etc/fstab`
|
||||
|
||||
## Network
|
||||
|
||||
* `ping <domain/ip>`
|
||||
* `whois <ip>`
|
||||
* `whois -h whois.radb.net <ip>`
|
||||
* `bgpq3 -J <AS>`
|
||||
* `traceroute -An <ip>`
|
||||
* `mtr -zn <ip>`
|
||||
* `dig +trace @8.8.8.8 <domain>`
|
||||
* `dig -x <ip>`
|
||||
* `telnet <domain/ip> <port>`
|
||||
* `ipcalc <network ip>/<mask>`
|
||||
|
||||
### SSH
|
||||
|
||||
* `ssh-copy-id user@server` - добавление ssh-ключа на сервер для пользователя
|
||||
* `ssh-keygen -F server` - проверка ssh-сертификатов сервера
|
||||
* `ssh-keygen -R server` - удаление записи сервера из `known_hosts`
|
||||
|
||||
### Web-servers
|
||||
|
||||
* ssl config generation: https://ssl-config.mozilla.org/
|
||||
@@ -1,141 +1,3 @@
|
||||
# Git
|
||||
|
||||
## Git new commands
|
||||
|
||||
В git постепенно появляются алиасы, чтобы команды становились узконаправленными. Новые полезные команды:
|
||||
1. [`git restore`](https://git-scm.com/docs/git-restore) - восстановление файлов в рабочей директории (например, откат изменений как при использовании `git checkout -- .`)
|
||||
2. [`git switch`](https://git-scm.com/docs/git-switch) - переключение веток. Более узконаправленная команда, чем `git checkout` или `git branch`.
|
||||
|
||||
## Git rebase
|
||||
|
||||
Примерный порядок действий перебазирования веток в `main`:
|
||||
1. `git switch new-branch`
|
||||
2. `git rebase main`
|
||||
3. _optional_ исправление конфликтов, выполнение команды `git rebase --continue`
|
||||
4. `git checkout main`
|
||||
5. `git merge new-branch`
|
||||
6. `git branch -D new-branch`
|
||||
|
||||
# Linux operating system
|
||||
|
||||
## Streams
|
||||
|
||||
Базовые потоки:
|
||||
* `0` - stdin (`/proc/<pid>/fd/0`)
|
||||
* `1` - stdout (`/proc/<pid>/fd/1`)
|
||||
* `2` - stderr (`/proc/<pid>/fd/2`)
|
||||
|
||||
Для перенаправления потока можно использовать `X>&Y`, где `X` поток, который нужно перенаправить,
|
||||
`Y` - поток, в который нужно направить данные (может быть стандартным файлом).
|
||||
|
||||
## Kernel
|
||||
|
||||
Версия ядра: `uname -r`.
|
||||
Версия дистрибутива: `cat /etc/issue` (debian-based), `cat /etc/redhat-release` (centos-based).
|
||||
|
||||
Посмотреть всю конфигурацию системы: `sysctl -a`.
|
||||
|
||||
Логи системы: `dmesg`, `syslog`.
|
||||
|
||||
## Systemctl
|
||||
|
||||
* `systemctl list-units --all`
|
||||
* `systemctl status <service>`
|
||||
* `systemctl cat <service>` - просмотреть файл настроек сервиса
|
||||
* `systemctl list-dependencies <service>`
|
||||
```shell
|
||||
systemctl list-dependencies docker
|
||||
|
||||
docker.service
|
||||
● ├─containerd.service
|
||||
● ├─docker.socket
|
||||
● ├─system.slice
|
||||
● ├─network-online.target
|
||||
● │ └─NetworkManager-wait-online.service
|
||||
● └─sysinit.target
|
||||
● ├─apparmor.service
|
||||
<...>
|
||||
```
|
||||
* `journalctl -f`
|
||||
* `journalctl -f -u docker`
|
||||
|
||||
## Filesystems
|
||||
|
||||
* `stat <file>`
|
||||
|
||||
### File types
|
||||
|
||||
* regular file (`ls -la` - `-`)
|
||||
* directory (`ls -la` - `d`)
|
||||
* hardlink (`ls -la` - `l`)
|
||||
|
||||
1 файл - 1 hardlink
|
||||
1 директрория - минимум 2 hardlink (у пустой директории - 2, +1 за каждую директорию внутри)
|
||||
|
||||
* symlink (`ls -la` - `l`)
|
||||
* pipe (`ls -la` - `p`)
|
||||
|
||||
Перенаправление потоков, только однонаправленный
|
||||
`mkfifo <pipe>`
|
||||
|
||||
* socket (`ls -la` - `s`)
|
||||
|
||||
Двунаправленный поток, производительнее, чем pipe. Используется для взаимодействия между процессами.
|
||||
|
||||
### File access
|
||||
|
||||
`chown`, `chmod`, `umask`
|
||||
|
||||
Права по умолчанию:
|
||||
* `file`: `666 - umask`
|
||||
* `dir`: `777 - umask`
|
||||
|
||||
Дополнительные права доступа:
|
||||
* `sticky` - создание доступно всем, удаление только файлы пользователя
|
||||
* `setuid`
|
||||
* `setgid`
|
||||
|
||||
`lsattr`/`chattr`
|
||||
|
||||
### Raid
|
||||
|
||||
`mdadm`
|
||||
|
||||
### LVM
|
||||
|
||||
`lvs`, `vgs`, `vgdisplay`, `pvdisplay`
|
||||
|
||||
### Partitions
|
||||
|
||||
`fdisk -l`/`fdisk`, `sfdisk`
|
||||
|
||||
### Filesystems
|
||||
|
||||
`mkfs`, `mount`, `/etc/fstab`
|
||||
|
||||
## Network
|
||||
|
||||
* `ping <domain/ip>`
|
||||
* `whois <ip>`
|
||||
* `whois -h whois.radb.net <ip>`
|
||||
* `bgpq3 -J <AS>`
|
||||
* `traceroute -An <ip>`
|
||||
* `mtr -zn <ip>`
|
||||
* `dig +trace @8.8.8.8 <domain>`
|
||||
* `dig -x <ip>`
|
||||
* `telnet <domain/ip> <port>`
|
||||
* `ipcalc <network ip>/<mask>`
|
||||
|
||||
### SSH
|
||||
|
||||
* `ssh-copy-id user@server` - добавление ssh-ключа на сервер для пользователя
|
||||
* `ssh-keygen -F server` - проверка ssh-сертификатов сервера
|
||||
* `ssh-keygen -R server` - удаление записи сервера из `known_hosts`
|
||||
|
||||
### Web-servers
|
||||
|
||||
* ssl config generation: https://ssl-config.mozilla.org/
|
||||
|
||||
# Script languages
|
||||
|
||||
## Bash
|
||||
|
||||