Skip to content

Latest commit

 

History

History
90 lines (82 loc) · 5.62 KB

README.md

File metadata and controls

90 lines (82 loc) · 5.62 KB

Тестовое задание (cервер статики)

Запуск проекта:

bash ./start_everything.sh

Дерево проекта:

├── configure_infra (каталог с Ansible-проектом)
│   ├── inventory (файл Inventory)
│   ├── playbook.yaml (основной playbook)
│   ├── user_vars (переменные пользователей)
│   └── roles
│       ├── nginx_confstall (раскатка nginx)
│       ├── packages_install (обновление пакетов и установка дополнительных утилит)
│       ├── ssh_conf (настройка ssh)
│       ├── static_deploy (заливка статики)
│       ├── user_conf (создание/удаление пользователей/групп)
│       └── zsh_install (установка zsh и ohmyzsh)
├── docker-compose.yaml
├── Dockerfile
├── README.md
├── .env (переменные окружения)
└── start_everything.sh (скрипт запуска проекта)

Задание:

Вам предстоит написать плейбук и роли Ansible для настройки сервера
раздачи статики. Нужно будет сделать базовую настройку сервера и
установить/настроить nginx, который должен раздавать изображения по пути
/images, использовать эту подборку:
https://drive.google.com/file/d/1L9hsq9ZFB5VbXYJ3kEKH47x9nhxxZEnI

Тестовое окружение:

В качестве тестового окружения, к которому будет подключаться Ansible,
используйте Docker-контейнер, запускаемый через Docker Compose. Для
этого контейнера необходимо написать Dockerfile, используя в качестве
базового образа официальный Ubuntu 24.04. Вместе с ОС должен быть
установлен openssh-server для доступа по SSH. Также нужно описать
конфигурацию Docker Compose с пробросом необходимых портов.

Ожидаемый результат:

Решенное тестовое задание ожидается в виде публичного github/gitlab
репозитория.
Все роли должны быть написаны с учётом идемпотентности.

Процесс тестирования развертывания окружения должен выглядеть следующим образом:

1. Развернуть тестовое окружение через docker compose up
2. Запустить плейбук со всеми необходимыми vars файлами и с заранее
подготовленным inventory файлом (сами плейбуки заворачивать в docker
container не обязательно)
4. На 80 порту, по пути /images должна отображаться структура файлов, а
по пути /images/filename отображаться изображение
5. SSH порт должен быть открыт для подключения

Какие роли необходимо реализовать для Ansible плейбука:

1. Роль для создания/удаления пользователей/групп пользователей,
состояние пользователей и список кастомных групп необходимо
указывать в vars файле. Через vars’ы должно быть возможно
устанавливать пользователям следующие параметры:
	a. Имя
	b. Оболочка (bash/zsh/etc)
	c. Состояние (удален/создан)
	d. Публичный ключ (для подключения по ssh)
	e. Пароль
	f. Список групп в которых состоит пользователь (в том числе кастомные
	группы, которые задаются в vars)

2. Роль для установки zsh/ohmyzsh для пользователей, устанавливать
только для пользователей с соответственным shell

3. Роль для настройки ssh, необходимо будет:
	a. Запретить вход с пользователя root
	b. Запретить пустые пароли
	c. Выставить логгирование в режим VERBOSE
	d. Отключить X11Forwarding

4. Обновление пакетов и установка дополнительных утилит, список должен
быть легко расширяем:
	a. htop
	b. ncdu
	c. git
	d. nano

5. Роль для раскатки nginx, в котором nginx устанавливается, настраивается, создается vhost с нужными нам locations, из настроек нужно:
	a. Настроить gzip’ирование для статики
	b. Логирование запросов
	c. Добавить кэширование с сроком истечение 1 час

6. Роль для заливки статики, она должна любым удобным способом
размещать статику на сервере.