Skip to content

Commit

Permalink
update templates
Browse files Browse the repository at this point in the history
  • Loading branch information
Yaroslav Alenchyk committed Jan 4, 2025
1 parent fab797a commit c2e355e
Show file tree
Hide file tree
Showing 47 changed files with 1,106 additions and 752 deletions.
38 changes: 19 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
## DevOps Trainee Tasks
# DevOps Trainee Tasks

### Linux
епозиторий с заданиями для стажей DevOps-инженеров. :)
## Linux

[Task 1.1](Task_1.1/description_task1_1.md)
[Task 1.2](Task_1.2/description_task1_2.md)
[Task 1.3](Task_1.3/description_task1_3.md)
[Task 1.4](Task_1.4/description_task1_4.md)
[Task 1.5](Task_1.5/description_task1_5.md)
[Task 1.6](Task_1.5/description_task1_6.md)
[Task 1.1](Task_1.1/description_Task_1_1.md) [Task 1.2](Task_1.2/description_Task_1_2.md) [Task 1.3](Task_1.3/description_Task_1_3.md) [Task 1.4](Task_1.4/description_Task_1_4.md) [Task 1.5](Task_1.5/description_Task_1_5.md) [Task 1.6](Task_1.6/description_Task_1_6.md)

### Git
[Task 2.1](Task_2.1/description_task2_1.md)
[Task 2.2](Task_2.1/description_task2_2.md)
[Task 2.3](Task_2.1/description_task2_3.md)
[Task 2.4](Task_2.1/description_task2_4.md)
[Task 2.5](Task_2.1/description_task2_5.md)
## Git

### Docker
[Task 3.1](Task_3.1/description_task3_1.md)
[Task 2.1](Task_2.1/description_Task_2_1.md) [Task 2.2](Task_2.2/description_Task_2_2.md) [Task 2.3](Task_2.3/description_Task_2_3.md) [Task 2.4](Task_2.4/description_Task_2_4.md) [Task 2.5](Task_2.5/description_Task_2_5.md) [Task 2.6](Task_2.6/description_Task_2_6.md) [Task 2.7](Task_2.7/description_Task_2_7.md)

### CI/CD
## Docker

### Ansible
[Task 3.11](Task_3.11/description_Task_3_11.md) [Task 3.12](Task_3.12/description_Task_3_12.md) [Task 3.13](Task_3.13/description_Task_3_13.md) [Task 3.14](Task_3.14/description_Task_3_14.md) [Task 3.15](Task_3.15/description_Task_3_15.md) [Task 3.16](Task_3.16/description_Task_3_16.md) [Task 3.17](Task_3.17/description_Task_3_17.md) [Task 3.18](Task_3.18/description_Task_3_18.md) [Task 3.19](Task_3.19/description_Task_3_19.md) [Task 3.20](Task_3.20/description_Task_3_20.md) [Task 3.21](Task_3.21/description_Task_3_21.md) [Task 3.22](Task_3.22/description_Task_3_22.md) [Task 3.23](Task_3.23/description_Task_3_23.md) [Task 3.24](Task_3.24/description_Task_3_24.md) [Task 3.25](Task_3.25/description_Task_3_25.md) [Task 3.26](Task_3.26/description_Task_3_26.md) [Task 3.27](Task_3.27/description_Task_3_27.md) [Task 3.28](Task_3.28/description_Task_3_28.md) [Task 3.29](Task_3.29/description_Task_3_29.md) [Task 3.30](Task_3.30/description_Task_3_30.md) [Task 3.31](Task_3.31/description_Task_3_31.md) [Task 3.32](Task_3.32/description_Task_3_32.md) [Task 3.33](Task_3.33/description_Task_3_33.md) [Task 3.34](Task_3.34/description_Task_3_34.md) [Task 3.35](Task_3.35/description_Task_3_35.md) [Task 3.36](Task_3.36/description_Task_3_36.md) [Task 3.37](Task_3.37/description_Task_3_37.md) [Task 3.38](Task_3.38/description_Task_3_38.md) [Task 3.39](Task_3.39/description_Task_3_39.md) [Task 3.40](Task_3.40/description_Task_3_40.md) [Task 3.41](Task_3.41/description_Task_3_41.md)

### Terraform
## CI/CD

[Task 4.11](Task_4.11/description_Task_4_11.md) [Task 4.12](Task_4.12/description_Task_4_12.md) [Task 4.13](Task_4.13/description_Task_4_13.md)

## Ansible

[Task 5.1](Task_5.1/description_Task_5_1.md) [Task 5.2](Task_5.2/description_Task_5_2.md) [Task 5.3](Task_5.3/description_Task_5_3.md) [Task 5.4](Task_5.4/description_Task_5_4.md)

## Terraform

[Task 6.11](Task_6.11/description_Task_6_11.md) [Task 6.12](Task_6.12/description_Task_6_12.md) [Task 6.13](Task_6.13/description_Task_6_13.md) [Task 6.14](Task_6.14/description_Task_6_14.md) [Task 6.15](Task_6.15/description_Task_6_15.md) [Task 6.16](Task_6.16/description_Task_6_16.md) [Task 6.17](Task_6.17/description_Task_6_17.md) [Task 6.18](Task_6.18/description_Task_6_18.md) [Task 6.19](Task_6.19/description_Task_6_19.md) [Task 6.20](Task_6.20/description_Task_6_20.md) [Task 6.21](Task_6.21/description_Task_6_21.md) [Task 6.22](Task_6.22/description_Task_6_22.md)
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
## Чекпоинты задачи:

[1) Поднять ubuntu на VirtualBox/VMware/Cloud.](#Step-1)
[2) Создать там пользователей Raymond и John.](#Step-2)
[3) Raymond должен заходить только по SSH ключу на инстанс. А John должен каждый раз вводить свой пароль при попытке зайти на инстанс и не иметь возможности зайти по ssh ключу.](#Step-3)
[4) Raymond должен иметь доступ к sudo, а John не сможет использовать его.](#Step-4)
[5) Из под пользователя Raymond создать документ, используя права доступа сделать так, чтобы пользователь John не смог редактировать содержимое документа, но смог его прочитать. Из под пользователя John создать shell скрипт(с любой командой) и дать возможность запускать его пользователю Raymond.](#Step-5)
[6) Поменять интерпретатор по умолчанию пользователю John(сделать, чтобы был bash). Создать нового пользователя так, чтобы у него сразу был интерпретатор sh по умолчанию.](#Step-6)
[7) Добавить нового пользователя в группу пользователя John, проверить, сможет ли он запускать созданный ранее shell скрипт.](#Step-7)
[8) Создать на своей хостовой машине файл, после чего прокинуть его на инстанс с помощью scp.](#Step-8)
[1) Поднять ubuntu на VirtualBox/VMware/Cloud.](#Point-1)
[2) Создать там пользователей Raymond и John.](#Point-2)
[3) Raymond должен заходить только по SSH ключу на инстанс. А John должен каждый раз вводить свой пароль при попытке зайти на инстанс и не иметь возможности зайти по ssh ключу.](#Point-3)
[4) Raymond должен иметь доступ к sudo, а John не сможет использовать его.](#Point-4)
[5) Из под пользователя Raymond создать документ, используя права доступа сделать так, чтобы пользователь John не смог редактировать содержимое документа, но смог его прочитать. Из под пользователя John создать shell скрипт(с любой командой) и дать возможность запускать его пользователю Raymond.](#Point-5)
[6) Поменять интерпретатор по умолчанию пользователю John(сделать, чтобы был bash). Создать нового пользователя так, чтобы у него сразу был интерпретатор sh по умолчанию.](#Point-6)
[7) Добавить нового пользователя в группу пользователя John, проверить, сможет ли он запускать созданный ранее shell скрипт.](#Point-7)
[8) Создать на своей хостовой машине файл, после чего прокинуть его на инстанс с помощью scp.](#Point-8)
#### Ход работы
1. #### Step 1.
1. #### Point 1.
#### Поднять ubuntu на VirtualBox/VMware/Cloud.

Использую AWS EC2-инстанс (Ubuntu 24.04.1 LTS), ssh-клиент - MobaXterm

2. #### Step 2.
2. #### Point 2.
#### Создать там пользователей Raymond и John.

Переходим в root пользователя
Expand Down Expand Up @@ -109,7 +109,7 @@ su: Permission denied
После чего копируем файл user_password.txt на локальную машину.


3. #### Step 3.
3. #### Point 3.
#### Raymond должен заходить только по SSH ключу на инстанс. А John должен каждый раз вводить свой пароль при попытке зайти на инстанс и не иметь возможности зайти по ssh ключу.
Создадим для этого правила авторизации/аутентификации на сервере по SSH создав и редактируя файл (в моем случае) `/etc/ssh/sshd_config.d/61-users-settings.conf` устанавливая в нем например:

Expand Down Expand Up @@ -252,12 +252,12 @@ raymond@ip-172-31-30-89:~$
```
4. #### Step 4.
4. #### Point 4.
#### Raymond должен иметь доступ к sudo, а John не сможет использовать его.
см. выше п.2
5. #### Step 5.
5. #### Point 5.
#### Из под пользователя Raymond создать документ, используя права доступа сделать так, чтобы пользователь John не смог редактировать содержимое документа, но смог его прочитать. Из под пользователя John создать shell скрипт(с любой командой) и дать возможность запускать его пользователю Raymond.
Создаем из под юзера Raymond файл test.txt и назначаем на него права для чтения в группе users и права на директорию `/home/raymond` минимум для исполнения:
```bash
Expand Down Expand Up @@ -307,7 +307,7 @@ raymond@ip-172-31-30-89:~$ /home/john/test.sh
test script
```
6. #### Step 6.
6. #### Point 6.
#### Поменять интерпретатор по умолчанию пользователю John(сделать, чтобы был bash). Создать нового пользователя так, чтобы у него сразу был интерпретатор sh по умолчанию.
У пользователя John по умолчанию установлен /bin/bash.
Создаем нового юзера с /bin/sh
Expand All @@ -323,7 +323,7 @@ root@ip-172-31-30-89:~# pass=$(openssl rand -base64 6) && echo "bill:$pass"
root@ip-172-31-30-89:~#
```
7. #### Step 7.
7. #### Point 7.
#### Добавить нового пользователя в группу пользователя John, проверить, сможет ли он запускать созданный ранее shell скрипт.
```bash
root@ip-172-31-30-89:~# usermod -a -G john bill
Expand All @@ -341,7 +341,7 @@ $ /home/john/test.sh
test script
$
```
8. #### Step 8.
8. #### Point 8.
#### Создать на своей хостовой машине файл, после чего прокинуть его на инстанс с помощью scp.
```bash
yarik@Innowise-work:~$ scp -i raymond_key trace.log [email protected]:~
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
79 changes: 79 additions & 0 deletions Task_2.2/description_Task_2_2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
### Чекпоинты

[1) Создай две новые ветки и измени nginx.conf в ветке develop.](#Point-1)
[2) Добавь изменения в ветке feature/new-site и добавь тег на ветку develop.](#Point-2)
[3) Добавь файл .gitignore и проверь изменения.](#Point-3)
[4) Загрузи изменения на GitLab.](#Point-4)
[5) Загрузи тег на хостинг и проверь его наличие.](#Point-5)
[6) Проверь присутствие директории tmp в ветке feature/new-site.](#Point-6)

---

1. #### Point 1
#### Создай две новые ветки и измени nginx.conf в ветке develop.
**Задача:**
1. В репозитории `devops-task1` создай две новые ветки:
- `develop`;
- `feature/new-site`;
2. Перейди в ветку `develop` с помощью команды:
```bash
git checkout -b develop
```
3. В ветке `develop` измени настройки в `nginx.conf`:
- Замени `worker_connections` на `16384`.
- Закоммить изменения.
4. В ветке `develop` измени `nginx.conf`, включив сжатие ответа для типа `application/json`, и закоммить изменения.

---

2. #### Point 2
#### Добавь изменения в ветке feature/new-site и добавь тег на ветку develop.
**Задача:**
1. В ветке `feature/new-site` добавь файл `conf.d/mysite.domain.com.conf` с базовым описанием статического сайта и закоммить изменения.
2. Добавь легковесный тег `v0.1` на последний коммит в ветке `develop` (где изменялся `nginx.conf`), используя команду:
```bash
git tag v0.1
```

---

3. #### Point 3
#### Добавь файл .gitignore и проверь изменения.
**Задача:**
1. В ветке `feature/new-site` добавь файл `.gitignore`, который исключает из репозитория папку `tmp` и все ее содержимое.
2. Создай локально папку `tmp` с несколькими файлами в ней, используя команды:
```bash
mkdir tmp
touch tmp/file1 tmp/file2
```
3. Закоммить изменения, включая файл `.gitignore` и папку `tmp`.

---

4. #### Point 4
#### Загрузи изменения на GitLab.
**Задача:**
1. Загрузи обе ветки (`develop` и `feature/new-site`) на GitLab с помощью команд:
```bash
git push origin develop
git push origin feature/new-site
```

---

5. #### Point 5
#### Загрузи тег на хостинг и проверь его наличие.
**Задача:**
1. Загрузи тег `v0.1` на хостинг `https://devops-gitlab.inno.ws` с помощью команды:
```bash
git push origin v0.1
```
2. Проверь наличие тега в репозитории на GitLab.

---

6. #### Point 6
#### Проверь присутствие директории tmp в ветке feature/new-site.
**Задача:**
1. Проверь, присутствует ли директория `tmp` в ветке `feature/new-site`.
- После загрузки изменений на GitLab и выполнения команды push, папка `tmp` должна быть исключена, так как она указана в `.gitignore`.
51 changes: 51 additions & 0 deletions Task_2.3/description_Task_2_3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
### Чекпоинты

[1) Объедини ветку develop с веткой master из предыдущего задания.](#Point-1)
[2) Клонируй репозиторий и смерджи ветку feature в ветку develop.](#Point-2)
[3) Смерджи ветку develop в ветку master.](#Point-3)
[4) Создай новый репозиторий на GitLab и загрузи изменения.](#Point-4)

---

1. #### Point 1
#### Объедини ветку develop с веткой master из предыдущего задания.
**Задача:**
1. Объедини ветку `develop` с веткой `master`, используя команду:
```bash
git checkout master
git merge develop
```
2. Разреши возможные конфликты и запушь изменения в удаленный репозиторий.

---

2. #### Point 2
#### Клонируй репозиторий и смерджи ветку feature в ветку develop.
**Задача:**
1. Клонируй репозиторий `https://devops-gitlab.inno.ws/ilya.sergienko1/git-merge` с помощью команды:
```bash
git clone https://devops-gitlab.inno.ws/ilya.sergienko1/git-merge
```
2. Перейди в репозиторий и смерджи ветку `feature` в ветку `develop`. Разреши конфликты, выбирая последнее по времени изменение в обеих ветках, проверяя их с помощью `git log`.

---

3. #### Point 3
#### Смерджи ветку develop в ветку master.
**Задача:**
1. Смерджи ветку `develop` в ветку `master`.
- При разрешении конфликта выбери последнее по времени изменение в ветках `develop` и `master`.
- Исключи из сравнения только что сделанный merge коммит, который появился в ветке `develop` после выполнения шага 2.
2. Запушь изменения в удаленный репозиторий.

---

4. #### Point 4
#### Создай новый репозиторий на GitLab и загрузи изменения.
**Задача:**
1. Создай новый репозиторий с именем `devops-task-merge` в своем аккаунте на GitLab.
2. Загрузи все изменения, сделанные в репозиториях, в этот новый репозиторий с помощью команды:
```bash
git remote add origin https://gitlab.com/your-username/devops-task-merge.git
git push -u origin master
```
Empty file.
Empty file.
Empty file.
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ Commercial support is available at
</html>
ubuntu@ip-172-31-30-89:~$
```
---
2. #### Point 2
#### Останови ранее запущенный контейнер командой: docker stop rbm-dkr-01. Выполни команду docker ps, тем самым проверь произошедшие изменения в списке запущенных контейнеров - список контейнеров должен быть пуст. При помощи утилиты curl запроси адрес http://127.0.0.1:28080 - сейчас должна быть ошибка, поскольку мы уже удалили контейнер и ничего не слушается на этом порту.

Expand All @@ -205,7 +206,7 @@ nginx-01
ubuntu@ip-172-31-30-89:~$ curl http://localhost:28080
curl: (7) Failed to connect to localhost port 28080 after 0 ms: Couldn't connect to server
```
---
3. #### Point 3
#### При помощи команды docker ps -a выведи список всех контейнеров в системе - в списке будет твой остановленный контейнер. Останови запись в файл и загрузите полученные логи в репозиторий на gitlab.
Expand Down
Loading

0 comments on commit c2e355e

Please sign in to comment.