-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Yaroslav Alenchyk
committed
Jan 4, 2025
1 parent
fab797a
commit c2e355e
Showing
47 changed files
with
1,106 additions
and
752 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 пользователя | ||
|
@@ -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` устанавливая в нем например: | ||
|
||
|
@@ -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 | ||
|
@@ -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 | ||
|
@@ -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 | ||
|
@@ -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]:~ | ||
|
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.