Skip to content

rus-99-pk/static_server

Repository files navigation

Тестовое задание (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. Роль для заливки статики, она должна любым удобным способом
размещать статику на сервере.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published