Описание манифест файла Воркспейса¶
Для работы Воркспейса используется манифест файл в формате 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",
"concurrency": 0,
"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
Имя воркспейса из Логин Центра
concurrency¶
integer
Необязательный параметр, который позволяет указать количество потоков, которые будут по-умолчанию использоваться cxp_server при работе с моделями.
Если concurrency не указано в манифесте, то это эквивалентно значению 0, т.е. будут использоваться все имеющиеся потоки.
Можно указать значение от 1 до cpu, если необходимо ограничить количество потоков, которые будут по-умолчанию использоваться cxp_server при работе с моделями.
Доступно с 2.32.0
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 - отключение забавных надписей при загрузке приложения
Глобальные темы:
interface_theme_optimacros
interface_theme_olapsoft
interface_theme_advexcel
Цветовые темы:
color_scheme_advexcel
color_scheme_optimacros
color_scheme_olapsoft
color_scheme_corplan
color_scheme_ovk
color_scheme_tvel
color_scheme_orange
color_scheme_domrf
color_scheme_dark
color_scheme_yadromain
color_scheme_yadrolight
Языки:
interface_language_RU
interface_language_EN
interface_language_DE
Определяет список доступных на воркспейсе языков на выбор, последовательность указания флагов имеет значение: определяет порядок в выпадающем меню (первый язык в списке является дефолтным)
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.
mysql.config.options - object позволяет настраивать конфигурационный файл my.cnf через передачу имени опции как ключ объекта и выставлением значения. При таком подходе меняются или добавляются отдельные опции на основе готового конфигурационного файла.
mysql.config.template - string позволяет настраивать конфигурационный файл my.cnf через передачу своего шаблона, который полностью заменит изначальный. Шаблон должен содержать все свойства из примера.
{
...
"mysql": {
"memory": 123,
"config": {
"options": {
"query_cache_size": 0
}
},
"userPasswords": {
"root": "pass",
"optimacros": "pass"
}
}
...
}
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": {
"memory": 123,
"userPasswords": {
"root": "pass",
"admin": "pass",
"phpmyadmin": "pass",
"writer": "pass",
"reader": "pass"
},
"web": {
"status": true,
"captcha": {
"publicKey": "key",
"privateKey": "key"
}
}
}
}
...
}
PostgreSQL¶
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": "NTiLf3u0Xah5qGw9",
"writer": "uW7FmbKm8QKpG5gt"
}
}
}
...
}
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 - Это пример, как может называться папка, которая будет доступна в системе макросов
sharedFolders.n.src - required|string Абсолютный путь к папке на хосте,
которая будет доступна в макросах под именем n