Как правильно настроить сервер по требованиям из ТЗ?
Всем привет. Подскажите, как будет более правильно настроить окружение и какие технологии применить исходя из описания.
Для чего это нужно?
Раз в 6 месяцев проходят соревнования, где на один кабинет выделяется сервер (OS windows server).
Одновременно на машине работает до 15 человек.
На данный момент на сервере стоит Wmware и образ ubuntu на котором и работают участники.
Так же присутствует админ панель. Ее задачи:
Добавление участников: Добавляет nginx конфиг и создает директорию пользователя (папка users) в ubuntu.
Смена пароля: меняет пароль от ssh root.
Панель будет обновляться и ее функционал будет расширяться.
Требования к машине:
1) Возможность подключаться по ssh, ftp с любого ПК в одной локальной сети под своим пользователем.
2) Возможность сделать backup и развернуть на любом ПК в другой сети. (нужно для проверки заданий)
3) Быстрое обновление модулей. На данный момент это основания проблема! Нужно, чтобы обновление происходило легко и просто.
Как я это вижу:
Раз в 6 месяцев я буду брать чистый образ Ubuntu server и на него должны устанавливаться последние, сконфигурированные версии: nginx, apache, node, php, python, mysql исходя заранее написанным правилам.
В итоге нужно будет менять только версии на более новые и все, а далее все будет накатываться самостоятельно на чистый образ.
Как я вижу процесс настройки:
Устанавливается php и mysql, nginx, node, python (должна быть возможность менять значения конфигов, например, как в докере прокидываться в контейнер или заменяться при установке)
Админ панель должна будет установиться в папку пользователя (админа) из гита
Выполняется установка composer и соответственно выполняется composer install.
nginx, благодаря которому будет админка будет доступна по доменному имени в локальной сети.
Суть думаю понятна, аналог dockerfile.
5) Веб-ресурсы пользователей должны будут отображаться в браузере на любом ПК в локальной сети.
Моя задача оптимизировать создание образа, чтобы каждые полгода не заходить на сервер и не обновлять все ручками.
Рассматривал инструмент ansible, но есть сомнения подойдет ли он для моих нужд.
Если это происходит в РФ и соревнования под эгидой государства - лучше не забывать про политическую позицию Canonical и заменить бубунту на "отечественный" дистриб.
Хм. Вообще не вижу проблемы хотя бы я заменил виртуализацию на Hyper-V.
Ubunty ставите ltsc и забываете на 2-4 года.
Дальше ставите MySQL + Nginx + Node + PHP + Python.
Создаете скрипт который делает следующее:
* вносит изменение в DNS что то типа vasya.labs.loc
* добавляет пользователя vasya и устанавливает пароль
* добавляете папку /home/vasya/public_html
* добавляете конфиг /etc/nginx/sites-enabled/vasya.conf
* добавляете базу для васи и пишете пароли в файл в его домашней директории
* перезапускаете nginx
Итого установка и обновление убунты и обновлений происходит 1 раз и штатно без шаманства
Пользователь получает адрес типа vasya.labs.loc
При желании можно парсить пользователей из csv файла
Node + PHP + Python конкретной версии сам пользователь и назначает используя virtualenv, nvm, phpenv
Спасибо за ответ. ansible по сути делает тоже самое, только меня смущает, что для его работы нужен питон, а для этого его придется ручками поставить на машину и только потом запустить настройку машины. И нет уверенности, что он сможет обновить машинку на которой находится.
Еще - что будет если ваш скрипт по настройке запустить два раза подряд?
А ансибл при втором запуске ничего делать не будет, он предназначен для того, чтобы привести систему в необходимое состояние
Руслан Федосеев, Если в юните ансибла нет проверки на ошибки то тоже будет мусор.
Вообще очень мало инструментов отслеживают ошибки логики, логика это задумка.
Вот типичный пример
* вносит изменение в DNS что то типа vasya.labs.loc
Можно тупо дописать в файл.
А можно проверить файл на наличие строки и остановить программу
Раз в 6 месяцев я буду брать чистый образ Ubuntu server и на него должны устанавливаться последние, сконфигурированные версии: nginx, apache, node, php, python, mysql исходя заранее написанным правилам.
Насколько я помню при сетапе сереврной убунты можно сразу выбрать LAMP.
Останется только потом добавить ноду и питона.