В случае необходимости добавления нового дополнительного Воркспейса, стоит учесть, что дополнительно добавить можно только воркспейс, находящийся на отдельном сервере, т.е. не на том, где стоит Логин Центр.
Первым этапом, нам понадобится сделать добавление новой связи в базе mongodb, Логин Центра. К сожалению на данный момент, визуальных инструментов для этого не имеется и всё предстоит сделать вручную.
Неосторожное обращение с базами данных, может привести к необратимым последствиям!!!
Далее воспользуемся командами:
docker exec -it optimacros_db /bin/bash
Затем введём команду:
mongo --port 27017 -u DB_USERNAME -p --authenticationDatabase 'admin'
Где DB_USERNAME это имя пользователя базы данных. Затем нужно будет ввести пароль к базе данных. После чего вводим команду:
use logincenter
Вся информация о подключаемых воркспейсах хранится в коллекции workspace, одной связи соответствует один документ.
Для просмотра всех документов коллекции workspace, используйте команду:
db.workspace.find({})
Формат документа:
{
"_id": сгенерировано базой данных автоматически
"id": "8522aedecc6b4219ee87ee28", случайное 16-ричное число длиной не менее 24 знаков, используется для проверки подключения воркспейса. !Не путать с полем _id!
"name": "TEST", используется для навигации в UI Логин Центра и воркспейсов
"description": "Тестовый воркспейс", описание показывается в UI Логин Центра
"authenticationRedirectUrl": "https://om.test.workspace.ru/auth?token={userToken}", url воркспейса, путь /auth?token={userToken} всегда постоянный, домен (имя или IP адрес) должен соотв. добавляемому воркспейсу
"domains": ["om.test.workspace.ru"], домен воркспейса без протокола http:// или https://
"token": "4aed337a0ac34dd13716c476a4c7" СЕКРЕТНОЕ!!! случайное 16-ричное число длиной не менее 24 знаков, используется для проверки подключения воркспейса.
}
При необходимости добавить новую связь создается новый документ и заполняется по схеме выше.
Пример команды добавления документа:
db.workspace.insertOne({
"id": "477182c89c7abb4ce434451361df",
"name": "ATOMS",
"locations": [
{
"userUrl": {
"id": "b5be4d7ab271778c09fe868fee9c",
"url": "https://ws888.optimacros.com/",
"authenticationUrl": "auth?token={userToken}"
}
}
],
"token": "f5df0e3b6e8e29ef30c981a6e442"
})
После всех манипуляций, с базой вводим:
exit
После добавления нового воркспейса в админке Логин Центра на странице воркспейса http://.../admin/workspace/<ID>
необходимо подтвердить связь кнопкой Grant Approval
.
Далее устанавливаем дистрибутив воркспейса Optimacros на отдельном от Логин Центра сервере.
Далее вероятно это ничего не нужно, так как по сути дублирует страницу с инструкцией по установке воркспейса
Предполагается, что на сервере уже установлен весь необходимый софт для работы воркспейса и скачан архив с официальной версией дитрибутива Optimacros в директорию /home/user/installer-версия.tar. С предварительными установками ПО можно ознакомиться на странице документации: Предварительные установки ПО необходимые для работы Optimacros
Для начала применим правила хорошего тона утверждённые командой Optimacros, касательно структуры и нейминга директорий воркспейса.
Создаем директории:
mkdir -p /om/workspace1 /om/workspace-installer/current
На этом этапе, можно считать, что фундамент структуры директорий воркспейса, мы уже заложили.
Затем перемещаемся в директорию workspace1
с помощью команды cd /om/workspace1
и создаём в ней файл manifest.json
с помощью команды nano manifest.json
после выполнения, которой попадаем в режим редактирования данного файла. Вот стандартный вид файла manifest.json
:
{
"container": {
"ip": "10.0.3.15",
"cpu": 6,
"memory": 33685016576,
"ports": {
"0.0.0.0:80": 80,
"0.0.0.0:443": 443,
"0.0.0.0:8080": 8080,
"0.0.0.0:8081": 8081
},
"hosts": {},
},
"workspace": {
"id": "8522aedecc6b4219ee87ee28",
"name": "TEST",
"web": {
"url": "https://om.test.workspace.ru"
},
"loginCenter": {
"url": "https://lc.company.ru/",
"token": "4aed337a0ac34dd13716c476a4c7",
"apiUrl": "wss://lc.company.ru/api/ws/v1/"
},
"admin": {
"email": "admin@optimacros.com"
}
}
}
Подробнее о манифест файле тут
container.cpu
соответствует количеству ядер процессора на текущем сервере, это мы можем узнать например воспользовавшись утилитой
htop введя команду htop
Считаем ядра и видим, что их 6 на данном воркспейсе значит в cpu
вводим значение 6.
Теперь мы должны посмотреть значение свойства memory
, которое соответствует количеству оперативной памяти сервера в байтах.
Для этого воспользуемся командой free
Где в выводе 32895524 это значение количества памяти в килобайтах, умножаем это на 1024, чтобы узнать в байтах и
получаем: 33685016576 вводим это значение в memory в нашем манифесте.
workspace.id
указываем атрибут id
, который ранее использовали для добавления mongodb документа
workspace.name
указываем атрибут name
, который ранее использовали для добавления mongodb документа
Переходим к заполнению настроек Логин Центра в файле манифест:
workspace.loginCenter.url
вводим URL нашего Логин Центра
workspace.loginCenter.token
указываем атрибут token
, который ранее использовали для добавления mongodb документа
workspace.loginCenter.apiUrl
вводим URL вида wss://нашДоменЛогинЦентра/api/ws/v1/
, где вместо нашДоменЛогинЦентра
указываем домен нашего Логин Центра
workspace.admin.email
указываем строку с email учётной записи администратора воркспейса.
Шпаргалка с краткими комментариями по некоторым свойствам файла манифест (подробнее тут):
{
"container": {
"ip": "10.0.3.15", // данный IP остаётся неизменным
"cpu": 6, // количество ядер на сервере
"memory": 33685016576, //количество оперативной памяти
"ports": { //проброс портов, без Логин Центра в качестве reverse proxy, необходимо пробрасывать порты (можно обойти правилами iptables или использовать встроенный механизм переадресации портов)
"0.0.0.0:80": 80,
"0.0.0.0:443": 443,
"0.0.0.0:8080": 8080,
"0.0.0.0:8081": 8081
},
"hosts": {},
},
"workspace": {
"id": "8522aedecc6b4219ee87ee28", // берётся в адресной строке прямо в Логин Центре при переходе к воркспейсу
"name": "TEST", // название воркспейса
"web": {
"url": "https://om.test.workspace.ru" // URL создаваемого воркспейса
},
"loginCenter": {
"url": "https://lc.company.ru/", // URL относящегося к воркспейсу Логин Центра
"token": "4aed337a0ac34dd13716c476a4c7", // URL относящегося к воркспейсу Логин Центра
"apiUrl": "wss://lc.company.ru/api/ws/v1/" // изменяем только домен на свой, оставляя протокол и путь
},
"admin": {
"email": "admin@optimacros.com" // почтовый ящик пользователя администратора воркспейса
},
"console": {
"commands": {
"frontend-build": {
"appCongig": {
"flags": [
"fun_loader_message_off", // отключает "веселые" сообщения при первичной загрузке
"interface_theme_optimacros", // по умолчанию фиолетовая тема с тайтлом Optimacros и своим фавиконом
"color_scheme_advexcel", // цветовая схема advexcel доступна для выбора в настройках
"color_scheme_optimacros", // цветовая схема optimacros доступна для выбора в настройках
"color_scheme_olapsoft", // цветовая схема olapsoft доступна для выбора в настройках
"color_scheme_corplan", // цветовая схема corplan доступна для выбора в настройках
"color_scheme_orange", // цветовая схема orange доступна для выбора в настройках
"interface_language_RU", // руский язык доступен для выбора в настройках
"interface_language_EN", // английский язык доступен для выбора в настройках
"support_email_support@optimacros.com", // email для связи support@optimacros.com
]
}
}
}
}
}
}
Переходим к установке воркспейса используя дистрибутив
Распаковываем архив с дистрибутивом в директорию current где
/home/user/installer-версия.tar
это путь к скачанному ранее дистрибутиву:
tar -xf /home/user/installer-версия.tar -C /om/workspace-installer/current
Затем запускаем команду поднятия воркспейса:
/om/workspace-installer/current/install workspace --path /om/workspace1/manifest.json up
И наблюдаем чтобы весь процесс поднятия прошёл успешно, по окончанию процесса видим такой вывод:
После этих действий, Логин Центр начнёт взаимодействовать с вашим новым воркспейсом.
Для генерации 16-ричных чисел для значений полей id и token можно использовать онлайн-сервисы, например:
https://onlinehextools.com/generate-random-hex-numbers