Настройка автоматического запуска воркспейса¶
Описание функционала¶
Данный функционал реализован в версиях воркспейса 9.100.148.101, 9.200.164.260, 9.300
Упрощённо, логика работы следующая:
- После перезапуска машины, на которой установлен воркспейс, срабатывает
system-d-служба, которая ищет контейнер в состоянии
STOPPED; - сверяет манифест контейнера с манифестом воркспейса;
- завершает работу контейнера и запускает воркспейс.
Если контейнер не найден или манифесты не совпадают, служба ничего не делает.
Danger
Данная служба предназначена для запуска воркспейса при нештатных ситуациях на сервере/машине, и не заменяет работу DevOps специалистов, т.к. не может диагностировать и исправлять проблемы, возникающие при запуске воркспейса. Для штатной перезагрузки сервера/машины, на которой установлен воркспейс мы настоятельно рекомендуем выключать воркспейс и запускать его в ручную, что бы избежать возможных неисправностей.
Перезапуск машины с рабочим воркспейсом приведёт к потере данных, и возможным поломкам внутри воркспейса и неконсистентности Баз Данных.
Все необходимые файлы находятся в архиве установщика в папке autostart.

В папке находится скрипт, инструкция и systemd-файл службы.
Info
Далее в инструкции путь установщика считаем:
/om/workspace-installer/current/, путь до манифеста воркспейса считаем:
/om/workspace1/manifest.json.
Если ваша директория в которой находится установщик и воркспейс отличаются - необходимо изменить соответствующие команды и поля.
Инициализация¶
Создаем пользователя и меняем ему пароль (команда от имени суперпользователя).
Для подключения по ssh рекомендуется заранее создать директорию .ssh и файл
authorized_keys с необходимыми ssh ключами. Например взять их от
существующего пользователя:
rsync -av /home/existing-user/.shh /home/startup-workspace/
chmod -R startup-workspace:startup-workspace /home/startup-workspace/.shh
Заранее подготавливаем необходимые файлы:
touch /om/workspace1/.env
chown startup-workspace:startup-workspace /om/workspace1/.env
cd /om/workspace-installer/current/
chown -R startup-workspace:startup-workspace ./autostart
Подготавливаем права sudoers:
Создание конфигурационного файла vim /etc/sudoers.d/workspaces.
Необходимо прописать пути ко всем используемым инсталляторам через запятую в
Cmnd_Alias. (Необходимы права суперпользователя)
Cmnd_Alias WORKSPACE_INSTALLERS = /om/workspace-installer/current/install, /usr/bin/lxc-config, /usr/bin/lxc-ls, /usr/bin/cat
startup-workspace ALL=(ALL:ALL) NOPASSWD: WORKSPACE_INSTALLERS
Логинимся под ранее созданным пользователем и вводим команды:
# подготовка директорий
mkdir -p ~/.config/systemd/user
mkdir -p ~/bin
mkdir -p ~/var/log
# создание сервиса шаблона
cp /om/workspace-installer/current/autostart/workspace@.service ~/.config/systemd/user
# reload systemd
systemctl --user daemon-reload
# создание скрипта bash
cp /om/workspace-installer/current/autostart/startup-workspace.sh ~/bin
# права доступа к скрипту
chmod +x ~/bin/startup-workspace.sh
# включение авто логина для сервиса
loginctl enable-linger startup-workspace
Конфигурирование¶
Конфигурирование осуществляется через файл .env в директории, где
располагается manifest.json, который мы создали ранее: /om/workspace1/.env
Пример конфигурационного файла¶
WORK_DIR=/home/startup-workspace
WITH_SUDO=yes
WITH_SHUTDOWN_FORCE=yes
WORKSPACE_INSTALLER_PATH=/om/workspace-installer/current
MANIFEST_PATH=/om/workspace1/manifest.json
Описание переменных¶
| Наименование | Значение по умолчанию | Описание |
|---|---|---|
WORK_DIR |
/home/startup-workspace |
Рабочая директория сервиса |
WITH_SUDO |
yes |
Запуск команд через sudo |
WITH_SHUTDOWN_FORCE |
yes |
Принудительное завершение работы воркспейса (обязательно yes) |
WORKSPACE_INSTALLER_PATH |
/om/workspace-installer/current |
Путь до папки с инсталлятором |
MANIFEST_PATH |
/om/workspace1/manifest.json |
Путь к манифесту |
LOG_DIR |
${WORK_DIR}/var/log |
Директория с логам (нужен доступ на чтение и запись пользователю startup-workspace ) |
Создание сервиса¶
# Команда создания сервиса для воркспейса с конфигурацией /om/имя воркспейса/.env (запускается от имени startup-workspace)
systemctl --user enable workspace@имя_воркспейса.service
# Пример создания сервиса для воркспейса с конфигурацией /om/workspace1/.env (запускается от имени startup-workspace)
systemctl --user enable workspace@workspace1.service
После выполнения данной инструкции, когда происходит перезагрузка виртуальной машины будет срабатывать служба автозапуска, и, если во время перезагрузки был запущен воркспейс - служба попытается его перезапустить.