Описание манифест файла Воркспейса¶
Для работы Воркспейса используется манифест файл в формате JSON, который описывает основные настройки воркспейса, требуемые для его работы.
Манифест воркспейса может иметь любое имя. По умолчанию используется имя
manifest.json.
Расположение манифеста определяет директорию, которая содержит файловую подсистему для работы воркспейса в Linux контейнере.
Пример базового варианта манифест файла¶
{
"container": {
"ip": "10.0.3.15",
"cpu": 6,
"memory": 33685016576,
"ports": {},
"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¶
Блок container позволяет настроить работу Linux контейнера.
IPv4 адрес контейнера¶
required|string
Для работы Linux контейнера используется LXC подсеть 10.0.3.0/24, которая автоматически назначает IPv4 адрес контейнеру. Для эмуляции статической привязки адреса, при поднятии контейнера мы дополнительно привязываем IPv4 адрес, выбор которого за вами.
Обычно мы выбираем адреса начиная с 10.0.3.15,
а LXC обычно назначает автоматически контейнерам адреса начиная с 10.0.3.100.
Но бывают конфликты. Для их исключения смотрите вывод команды sudo lxc-ls -f.
Так вы можете понять какие адреса уже заняты и обойти их.
Gateway¶
string
Адрес шлюза контейнера в формате IPv4. Значение по умолчанию - 10.0.3.1.
CPU¶
required|integer
Ограничивает количество воркеров служб Optimacros.
Не ограничивает память Linux контейнера.
Обычно указываем количество ядер хост сервера.
Memory¶
required|integer
Память в байтах.
Используется для некоторых ограничений служб Optimacros.
Используется для формирования счетчика памяти Optimacros расположенного на Drive Landing. Не используется для ограничения Linux контейнера.
При работе одного воркспейса на сервере, обычно указывается значение из вывода
команды free -b.
При работе нескольких воркспейсов, указывается в нужных пропорциях между всеми воркспейсами.
Ports¶
object
Параметр позволяет настроить переадресацию портов. При этом можно гибко указать конкретный адрес интерфейса хоста.
При использовании воркспейса с Логин Центром на одном хосте, обычно мы не
используем переадресацию портов на воркспейсе контейнере, так как используется
Nginx Логин Центра в качестве reverse proxy.
Обычно переадресация портов воркспейса используем при установке воркспейса отдельно от Логин Центра.
Для внешнего взаимодействия с воркспейсом используются порты: 80, 443,
8080, 8081.
{
...
"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
},
...
}
Для работы на конкретном интерфейсе, замените 0.0.0.0 на соответствующий
IPv4 адрес.
Для переадресации портов должна быть установлена утилита redir.
Hosts¶
Параметр позволяет настроить файл контейнера /etc/hosts
(man).
DNS¶
object
Параметр позволяет настроить DNS для контейнера, файл /etc/resolv.conf
(man).
dns.search - string[] См. в man пункт о search.
dns.nameServers - object[] Каждый объект
коллекции содержит информацию об одном DNS сервере.
dns.nameServers[n].ip - required|string IPv4 адрес DNS сервера.
{
...
"dns": {
"search": [
"example.com"
],
"nameServers": [
{
"ip": "8.8.8.8"
},
{
"ip": "8.8.4.4"
}
]
},
...
}
Можно использовать dnsmasq (man)
на хосте:
Routes¶
object[]
Данный параметр позволяет кастомизировать таблицу маршрутов контейнера. (man)
FreeTDS¶
object[]
Параметр позволяет настроить программный интерфейс freetds
(man) для работы Optimacros с MS SQL.
Данный интерфейс используется Optimacros макросами при пользовании коннектором MS SQL с драйвером DBLIB (Выбран по умолчанию).
freetds[n].hosts - required|string[] Хост MS SQL. Каждый элемент порождает
отдельную запись конфигурации freetds.
freetds[n].port - integer Порт MS SQL.
freetds[n].ntlmv2 - boolean При использовании Active Directory авторизации,
возможно потребуется включить в true. См. man.
{
...
"freetds": [
{
"hosts": [
"instance1.example.com",
"instance2.example.com"
],
"port": 1433,
"ntlmv2": true
}
],
...
}
Пример сгенерированной конфигурации freetds на основе параметров выше:
...
[instance1.example.com]
host = instance1.example.com
port = 1433
use ntlmv2 = yes
[instance2.example.com]
host = instance2.example.com
port = 1433
use ntlmv2 = yes
Tunnel¶
object
tunnel.status - required|boolean если включен, система будет использовать
vpn, настроенный на хост-машине.
Limits¶
object
limits.nofile - integer количество дескрипторов.
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Process Properties
limits.nproc - integer ограничивает количество дочерних systemd процессов.
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Process%20Properties
Synced Folders¶
object
syncedFolders.^[a-z0-9_]+$ - Вместо регулярного выражения подставить id
встроенной папки, по которому к ней можно будет обращаться.
syncedFolders.^[a-z0-9_]+$.externalPath - required|string Путь до
встраиваемой папки на хост-машине (вне vagrant контейнера).
Cgroup¶
object
cgroup.version - enum: ["auto"|"v1"|"v2"] В этом параметре нужно указать
текущую версию cgroup для совместимости с lxc. Если есть затруднения с
определением, лучше оставить значение "auto", которое выбирается по умолчанию.
Proxy¶
object
Параметр позволяет настроить proxy для сервисов.
{
...
"proxy": {
"http": "http://test1.com",
"https": "https://test2.com",
"ftp": "ftp://test3.com",
"ignore": [
"http://test4.com",
"http://test5.com"
]
}
...
}
далее отформатировать
Checks¶
object
Параметр позволяет включить/выключить проверки при запуске команды up дистрибутива. Если параметр не задействован, проверки будут произведены в зависимости от значения по умолчанию.
checks.avx - boolean если включен, будет произведена проверка
AVX инструкций. Используемая в проекте
MongoDB 5 требует включенных на процессоре AVX инструкций и падает при запуске
если их не находит. Значение по умолчанию - true.
Блок workspace¶
Блок workspace позволяет настроить работу воркспейс приложения Optimacros
внутри контейнера.
{
"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"
}
}
Id¶
required|string
Идентификатор воркспейса из Логин Центра.
Name¶
required|string
Имя воркспейса из Логин Центра.
Web¶
required|object
web.url - required|string Полный web адрес воркспейса, включая схему.
http|https.
web.ssl - object Настройки SSL сертификата.
SSL¶
object
Настройки SSL сертификата.
При использовании SSL сертификата, внешнее взаимодействие с воркспейсом возможно на портах 80, 443 и 8081.
При отсутствии SSL сертификата внешнее взаимодействие с воркспейсом возможно на портах 80 и 8080.
web.ssl.cert - required|string Абсолютный путь к сертификату
X.509 на хосте.
web.ssl.key - required|string Абсолютный путь к ключу от сертификата
X.509 на хосте.
{
...
"web": {
"url": "https://test.example.com",
"ssl": {
"cert": "/om/workspace1/cert/bundle.crt",
"key": "/om/workspace1/cert/crt.key"
}
}
...
}
Login Center¶
required|object
Настройка взаимодействия воркспейса с Логин Центром.
loginCenter.url - required|string Полный адрес Логин Центр, будет
использоваться для формирования ссылок на профиль, выход из системы и
переадресация пользователя при необходимости авторизации.
loginCenter.token - required|string Секретный токен воркспейса из Логин
Центра.
loginCenter.apiUrl - required|string Адрес Websocket API точки Логин Центра
для обслуживания воркспейсов.
{
...
"loginCenter": {
"url": "https://lc.company.ru/",
"token": "4aed337a0ac34dd13716c476a4c7",
"apiUrl": "wss://lc.company.ru/api/ws/v1/"
}
...
}
Admin¶
required|object
Настройка супер администратора воркспейса или сервисной учетной записи.
admin.email - required|string Email пользователя.
Console¶
object
Креденшенелы без которых команда не выполнится.
commands.<command>.user - string
commands.<command>.token - string
commands.frontend-build.autoBuildOnContainerStart - boolean если true -
собирает frontend при запуске контейнера.
commands.container-workspace-setting-update.excludeCubesInfo - boolean если
true - исключает параметр cubeInfos из информации по кубам.
commands.container-workspace-setting-update.excludeDashboardDefinition -
boolean если true - исключает параметр
dashboardsInfo.dashboardInfos.n.dashboardDefinitionJsonString из информации
по дашборду.
commands.container-workspace-setting-update.excludeContextTableDefinition -
boolean если true - исключает параметр
contextTablesInfo.contextTableInfos.n.contextTableDefinitionJsonString из
информации по контекстным таблицам.
container-php-config-update.opcache.status - boolean если true - будет
включено php кэширование через opcache.
container-app-config-update.lockModelStatus - boolean может ли пользователь
"залочить" модель. Если false - то модель перейдет в "disabled" при попытке это
сделать.
container-app-config-update.smtp.maxAttachmentSize - integer максимальный
размер файлов прикрепленных к отсылаемым по протоколу smtp письмам (указывается
в количестве байт).
{
...
"commands": {
"cxp-build": {
"user": "username",
"token": "token123"
},
"encode-source": {
"user": "username",
"token": "token123"
},
"cppmw-build": {
"user": "username",
"token": "token123"
},
"frontend-build": {
"user": "username",
"token": "token123",
"autoBuildOnContainerStart": true,
"appConfig": {
"socketSecurityPort": 1111,
"socketPort": 2222
},
"relativeUrlPrefix": "urlprefix/"
},
"container-workspace-setting-update": {
"excludeCubesInfo": true,
"excludeDashboardDefinition": true,
"excludeContextTableDefinition": true
},
"container-php-config-update": {
"opcache": {
"status": true
}
},
"container-app-config-update": {
"lockModelStatus": true,
"smtp": {
"maxAttachmentSize": 50000000
}
}
}
...
}
Backup Archive¶
object
backupArchive.status - boolean если true, то при удалении модели происходит
предварительное сохранение ее бэкапа.
Flags¶
string[]
Позволяет указать массив любых строк, которые будут отображаться в admin/settings в виде флагов. Например, можно автоматизированно передавать строку “ok”, если с воркспейсом все в порядке. Кроме того, некоторые значения оказывают влияние на работу системы. Список таких значений:
fun_loader_message_off - отключение забавных надписей при загрузке приложения.
flip_sidebar - перемещает sidebar влево.
Глобальные темы:
interface_theme_optimacrosinterface_theme_olapsoftinterface_theme_advexcel
Цветовые темы:
color_scheme_advexcelcolor_scheme_optimacroscolor_scheme_olapsoftcolor_scheme_corplancolor_scheme_ovkcolor_scheme_tvelcolor_scheme_orangecolor_scheme_domrfcolor_scheme_darkcolor_scheme_yadromaincolor_scheme_yadrolight
Языки:
interface_language_RUinterface_language_ENinterface_language_DEinterface_language_TR
Определяет список доступных на WS языков на выбор, последовательность указания флагов имеет значение: определяет порядок в выпадающем меню (первый язык в списке является дефолтным).
support_email_support@optimacros.com - где support@optimacros.com является
почтой, указываемой в модальных окнах при появлении ошибок в интерфейсе.
prod - наличие этого флага убирает некоторые элементы в Header Menu для
демонстрации, так же добавляет в некоторых местах модальное окно, которое
просит ввести пароль ввиду триальной версии.
WinAgent¶
object
winAgent.commandUrl - required|string устанавливает url агента, на который
будут подаваться команды.
winAgent.downloadUrl - required|string устанавливает url, по которому можно
будет скачивать результирующие документы.
winAgent.auth.type - required|enum: ["basic"|"digest"|"ntlm"] тип
аутентификации, по которому можно будет подключиться к winAgent.
winAgent.auth.user - required|string имя пользователя, под которым можно
установить соединение с winagent.
winAgent.auth.password - required|string пароль для этого пользователя.
{
...
"winAgent": {
"commandUrl": "url",
"downloadUrl": "url",
"auth": {
"type": "basic|digest|ntlm",
"user": "username",
"password": "pass"
}
}
...
}
Mysql¶
object
mysql.memory - integer то же самое, что и oltp.mysql.memory.
Oltp¶
object
mysql¶
oltp.mysql.memory - integer объем памяти, используемый для кэширования. Чем
больше выделено памяти на кэширование - тем больше производительность работы с
базой. Под капотом устанавливает значение для innodb_buffer_pool_size.
oltp.mysql.web.status - required|boolean позволяет включить или выключить
доступ к базе через phpmyadmin.
oltp.mysql.web.captcha - object позволяет настроить google recaptcha капчу
при входе в phpmyadmin.
oltp.mysql.web.captcha - object позволяет настроить google recaptcha капчу
при входе в phpmyadmin.
oltp.mysql.ssl.ca - required|string абсолютный путь к центру сертификации
PEM на хосте.
oltp.mysql.ssl.cert - required|string абсолютный путь к сертификату
PEM на хосте.
oltp.mysql.ssl.key - required|string абсолютный путь к ключу от сертификата
PEM на хосте.
{
...
"oltp": {
"mysql": {
"memory": 123,
"ssl": {
"ca": "/om/workspace1/cert/ca.pem",
"cert": "/om/workspace1/cert/server-cert.pem",
"key": "/om/workspace1/cert/server-key.pem"
},
"userPasswords": {
"root": "pass",
"admin": "pass",
"phpmyadmin": "pass",
"writer": "pass",
"reader": "pass"
},
"web": {
"status": true,
"captcha": {
"publicKey": "key",
"privateKey": "key"
}
}
}
}
...
}
https://workspace.domain/oltp/mysql/ - строка доступа из браузера.
PostgreSQL¶
Info
Доступно с версий >= 2.15.0
oltp.postgresql.service.status - required|boolean позволяет включить или
выключить сервис postgresql по умолчанию при загрузке воркспейса.
oltp.postgresql.web.status - required|boolean позволяет включить или
выключить доступ к базе через phppgadmin.
{
...
"oltp": {
"postgresql": {
"service": {
"status": true
},
"web": {
"status": true
},
"userPasswords": {
"admin": "ToyHTC4AQft2V0HKG",
"reader": "NTiL4mu0Xah5qGw9",
"writer": "uW7FmbKm8QKpGw2t"
}
}
}
...
}
ClickHouse¶
{
...
"clickhouse": {
"service": {
"status": true
},
"web": {
"status": true
},
"userPasswords": {
"default": "vq0xnn6zJ1ttJ9day1"
}
}
...
}
Mongod¶
object
Influxdb¶
object
Audit¶
object
audit.status - boolean позволяет включить или выключить аудит.
audit.saveClientRequestMessage - boolean сохранять ли пользовательские
запросы в аудит.
audit.saveClientResponseMessage - boolean сохранять ли ответы, отсылаемые
пользователям в аудит.
audit.mongodb.dsn - string определяет dsn для подключения к базе аудита
mongodb (формат: mongodb://{hostname}:{port}/{authenticationDatabase}).
audit.worker.count - integer количество инстансов-сервисов воркеров аудита,
которое будет запущено.
audit.logger.count - integer количество инстансов-сервисов логгеров аудита,
которое будет запущено.
{
...
"audit": {
"status": true,
"saveClientRequestMessage": true,
"saveClientResponseMessage": true,
"mongodb": {
"dsn": "dsn"
},
"worker": {
"count": 5
},
"logger": {
"count": 5
},
}
...
}
Nginx¶
object
nginx.realIpHeader - string
http://nginx.org/ru/docs/http/ngx_http_realip_module.html#set_real_ip_from
nginx.allowRealIpFrom - string
http://nginx.org/ru/docs/http/ngx_http_realip_module.html#real_ip_header
nginx.wsExternalMode - boolean, не обязательное. определяет режим работы
websockets. true - вебсокет будет работать на портах 8080/8081(в зависимости
от ssl настроек), ws entry point: /. false - работа на портах 80/443, entry
point - /ws. В случае отсутствия поля - принимается как false и вебсокеты
работают на портах 80 или 443.
nginx.clientMaxBodySize - string
http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
Значение по умолчанию - "2G".
{
...
"nginx": {
"realIpHeader": "X-Forwarded-For",
"allowRealIpFrom": [
"255.255.255.255",
"0.0.0.0"
],
"wsExternalMode": false,
"clientMaxBodySize": "5G"
}
...
}
Server Status¶
object
serverStatus.status.refresh - integer как часто монитор показателей сервера
будет обновляться. Указывается в секундах. Значение по умолчанию - 1 секунда,
минимум - 1 секунда.
serverStatus.status.retention - integer определяет количество дней, после
истечении которых, данные метрики influxdb считаются устаревшими и могут быть
удалены. Значение по умолчанию - 7 дней, минимум - 1 день.
Model Allowed Unsaved Interval¶
integer
Определяет количество времени от последнего сохранения модели, после исчерпания которого модель будет помечена как подверженная риску до следующего сохранения. Значение по умолчанию - 10800.
Shared Folders¶
object
Подключение хост папок для использования в системе макросов.
{
...
"sharedFolders": {
"myFolder1": {
"src": "/mnt/samba1"
},
"anotherFolder": {
"src": "/mnt/ftp1"
}
}
...
}
myFolder1 или anotherFolder - Это пример, как может называться папка (ID),
которая будет доступна в системе макросов.
sharedFolders.n.src - required|string Абсолютный путь к папке на хосте,
которая будет доступна в макросах под именем n.
Настройка appConfig FE-сборки¶
В манифесте можно сконфигурировать appConfig для FE-сборки.
console.commands.frontend-build.appConfig.tileserver.host - string адрес
сервера, с которого FE будет загружать карты.
console.commands.frontend-build.appConfig.tileserver.token - string
уникальный ключ UUID4, который подтверждает доступ к host.
console.command.frontend-build.appConfig.flags - string[] список флагов
appConfig для FE-сборки.
{
...
"console": {
"commands": {
"frontend-build": {
"user": "username",
"token": "token123",
"autoBuildOnContainerStart": true,
"appConfig": {
"socketSecurityPort": 1111,
"socketPort": 2222,
"tileserver": {
"host": "https://example.com",
"token": "uuid4_token"
},
"flags": [
"interface_language_EN",
"interface_language_RU",
"interface_language_DE",
"interface_language_TR"
]
},
"relativeUrlPrefix": "urlprefix/"
}
}
}
...
}