Перейти к основному содержимому

Развертывание в демонстрационной среде Атомкод

Чтобы развернуть Атомкод в полнофункциональной среде демонстрации возможностей требуется провести подготовку.

к сведению

При развертывании в полнофункциональной среде демонстрации возможностей Атомкод все роли объединены на одном сервере (стенде).

к сведению

Для работы с проектами, включающими более трех тысяч классов, необходимо дополнить конфигурацию PostgreSQL, исходя из следующего положения: произведение параметров max_connections и max_locks_per_transaction должно быть больше общего количества классов во всех проектах, умноженного на 2,5. Например, если во всех проектах Атомкод создано 50000 классов, значение произведения должно быть 125000. Рекомендуемое значение параметра max_connections равно 500, а значение параметра max_locks_per_transaction должно быть равно 250.
По умолчанию при установке Атомкод:

  • max_connections = 500;
  • max_locks_per_transaction = 64.

Значения этих параметров можно изменить в файле group_vars/all.yml директории инсталлятора в переменной postgres_run_params.

Подготовка к развертыванию

предупреждение

Убедитесь, что сервер отвечает минимальным системным требованиям, указанным в разделе Аппаратные и программные требования. Убедитесь, что сервер имеет записи в DNS-сервере, и что на всех серверах стенда, а также на компьютерах пользователей стенда, используется именно этот DNS-сервер.

При помощи программы для передачи файлов по ssh (например, WinSCP) переместите архив с дистрибутивом Атомкод в директорию /opt. Перейдите в консоль ssh на стенде.

Повысьте права командой

sudo -i
к сведению

Для корректной работы Атомкод Атомкод необходимо задать значение параметра fs.inotify.max_user_instances в операционной системе не меньше, чем 524288.

Чтобы задать значение параметра, выполните команду

echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Измените имя хоста с помощью утилиты hostnamectl:

hostnamectl set-hostname "test.pmd.local"

Обеспечьте разрешение имени сервера на самом сервере. Для проверки корректности разрешения имени сервера воспользуйтесь командой:

ping <Имя Стенда>

где:

  • Имя Стенда: FQDN стенда, например, test.pmd.local.

В результате выполнения команды должен отображаться ip-адрес стенда.

Если ip-адрес стенда не отображается или отображается как 127.0.0.0/8, необходимо настроить используемый в сети DNS-сервер либо, при его отсутствии, добавьте имя стенда в файл /etc/hosts, командой:

echo "<IP-адрес> <Имя Стенда>" >> /etc/hosts

где:

  • Имя Стенда: FQDN стенда, например, test.pmd.local.
  • IP-адрес: ip-адрес стенда.

Перейдите в директорию /opt командой

cd /opt

Распакуйте архив с дистрибутивом

tar xzvf platformmd.*.tar.gz

Перейдите в директорию /opt/platform/scripts/ командой

cd /opt/platform/scripts/

Добавьте права на запуск файлов командой

chmod +x *.sh

Запустите скрипт подготовки системы в зависимости от ОС:

  • ./prepare_system_AstraLinux.sh;
  • ./prepare_system_Ubuntu.sh;
  • ./prepare_system_Debian.sh.

Скрипт установит или обновит Docker и прочие необходимые пакеты:

  • apt-пакеты: vim mc xxd git make build-essential python3 python3-dev python3-pip apt-transport-https ca-certificates curl wget gnupg lsb-release acl docker.io.
  • python3-пакеты: ansible docker-compose psycopg2-binary glances jmespath.
подсказка

Если на сервере отсутствует подключение к сети Интернет, но существует локальный прокси-сервер для pip-пакетов, создайте файл /etc/pip.conf с содержимым:

[global]
index-url = https://<Адрес прокси сервера>/simple/
trusted-host = <Адрес сервера с прокси>

После создания этого файла все попытки установить пакеты через pip будут выполняться через локальный прокси-сервер, а не из Интернета.

Перезагрузите систему (ответьте Y, система перезагрузится).
Повысьте права после перезагрузки командой

sudo -i

В дистрибутиве в директории /opt/platform/files/ находятся файлы сертификатов:

  • external-certificate.pem: цепочка сертификатов серверов домена pmd.local, включающая сертификат сервера test.pmd.local, а также все промежуточные УЦ и корневой УЦ для внешнего домена. Используется для взаимодействия с https://test.pmd.local.
  • external-certificate.key.pem: ключ сертификата серверов домена pmd.local.
  • external-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ для внешнего домена.
  • git-root.crt: корневой сертификат, которым подписан сертификат внешнего git-репозитория проектов devtools, если такой сертификат используется.
  • llm-root.crt: корневой сертификат, которым подписаны сертификаты, использующиеся на LLM, если такой сертификат используется.
  • internal-certificate.pem: цепочка сертификатов серверов домена pmd.local, включающая сертификат сервера test.pmd.local, а также все промежуточные УЦ и корневой УЦ для внутреннего домена. Используется для внутреннего межсервисного взаимодействия.
  • internal-certificate.key.pem: ключ сертификата серверов домена pmd.local.
  • internal-root.crt: цепочка сертификатов, включающая в себя все промежуточные УЦ и корневой УЦ для внутреннего домена.
предупреждение

В составе дистрибутива эти файлы относятся к серверу только в домене pmd.local.
Если стенд находится в другом домене, то содержимое файлов с префиксом external следует заменить.
Также можно заменить содержимое файлов с префиксом internal. Внутренние сертификаты могут не совпадать с внешними.

Запустите скрипт, который скопирует файлы сертификатов командами, установит portainer, загрузит docker-образы в локальный docker-registry и установит ansible:

cd /opt/platform/scripts/
./prepare_monostand.sh
подсказка

После выполнения скрипта переопределите при необходимости пароль для portainer, перейдя по адресу https://test.pmd.local:9000.
Предустановленные логин и пароль: логин: admin пароль: zaq1!QAZxsw2.

Выполните скрипт подготовки Inventory-стенда:

к сведению

Если вы планируете использовать большие языковые модели, то предварительно разверните сервер vLLM.

./make_inventory.sh -s <имя стенда> -t <FQDN стенда> -b <FQDN стенда> -u <пароль пользователя с правами администратора postgres> -l <пароль пользователя сервисов Атомкод в postgres> -v <версия устанавливаемого релиза Атомкод> -a <ветка> -h <git-хост> -r <репозиторий> -m <расположение git>

где:

  • имя стенда: имя стенда используется для удобства работы с inventory. Имя директории стенда в inventory совпадает с именем стенда, так что следует избегать символов, недопустимых в имени директорий.
  • пароль пользователя с правами администратора postgres: пароль для postgres-пользователя с логином postgres, который обладает правами superuser в postgres на сервере;
  • пароль пользователя сервисов Атомкод в postgres: пароль для postgres-пользователя с логином platform, который будет владельцем баз данных Атомкод в postgres на сервере;
  • версия устанавливаемого релиза Атомкод: например, 4.1.0 без кавычек;
  • ветка: ветка git-репозитория проектов devtools, например, develop;
  • git-хост: адрес сервера с git-репозиториями проектов devtools, например, внутренний хост стенда в домене pmd.local: _http://devtoolsgit.pmd.local:80/git_;
  • репозиторий: имя репозитория проектов devtools, например локально на стенде по-умолчанию создаётся pmd-repo;
  • расположение git: указание на используемый git-репозиторий, если используется внутренний git-репозиторий стенда, то указывается local, если внешний — external.

Пример:

./make_inventory.sh -s test.pmd.local -t test.pmd.local -b test.pmd.local -u Pass1 -l Pass2 -v 4.0.2 -a develop -h http://devtoolsgit.pmd.local:80/git -r pmd-repo -m local

Скопируйте свой файл лицензии в директорию /opt/platform/installer/files, переименовав его в license.lic.

к сведению

Если у Вас нет файла лицензии, установите лицензию позже, после развертывания Атомкод.

Изменение комплекта устанавливаемых сервисов при развертывании Атомкод

Вы можете изменить комплект устанавливаемых сервисов в файле /opt/platform/installer/inventory/<Имя стенда>/group_vars/all.yml. Чтобы изменить комплект устанавляваемых сервисов:

  • перейдите в директорию /opt/platform/installer/group_vars/editions
  • в этой директории найдите файлы, имена которых совпадают с названием комплекта сервисов;
  • просмотрите содержимое этих файлов, чтобы увидеть, какие сервисы и devtools-проекты входят в состав каждого из комплектов;
  • закомментируйте ненужные строки в файлах.

Изменение параметров установки Атомкод

Чтобы изменить параметры установки Атомкод в файле /opt/platform/installer/group_vars/all.yml руководствуйтесь комментариями в этом файле.

подсказка

Если для разных стендов необходимы различные значения переменных, укажите их в файле /opt/platform/installer/inventory/ИмяСтенда/group_vars/all.yml. Переменные, указанные в этом файле имеют более высокий приоритет.

Чтобы взаимодействовать на стенде с с языковыми моделями, задайте следующие значения переменных, в зависимости от используемых языковых моделей:

# LLM
llm_default_model_server: "http://<адрес сервера generation non think>:<порт, который слушает vLLM для модели non think>/v1"
llm_default_embedder_server: "http://<адрес сервера embedder>:<порт, который слушает vLLM для модели embedder>/v1"
llm_default_embedder_type: "openai" # в релизе 5.0 только такое значение
llm_default_reasoning_server: "http://<адрес сервера generation think>:<порт, который слушает vLLM для модели think>/v1"
llm_default_voiceai_server: "https://<адрес сервера с VoiceAi>:<порт, который слушает http VoiceAi сервис>"
llm_default_voiceai_socket: "wss://<адрес сервера с VoiceAi>:<порт, который слушает ws VoiceAi сервис>"
llm_rag_embedding_settings_url: "" # пусто, устаревший параметр
llm_langfuse_enabled: "false" # Если используете langfuse, укажите "true"
llm_langfuse_url: "https://langfuse.test.local" # Если используете langfuse, укажите его адрес.
llm_langfuse_environment: "{{ stand_name.split('.')[0] }}" # Можно задать environment для langfuse.
llm_langfuse_public_key: "" # Если используете langfuse, укажите публичный ключ
llm_langfuse_secret_key: "" # Если используете langfuse, укажите секретный ключ
llm_router_model_host_url: "" # пусто, устаревший параметр
llm_router_model: "" # пусто, устаревший параметр
llm_router_api_key: "" # пусто, устаревший параметр
llm_generation_model_host_url: "" # пусто, устаревший параметр
llm_generation_model: "" # пусто, устаревший параметр
llm_generation_api_key: "" # пусто, устаревший параметр
llm_agent_host_url: "http://<адрес сервера generation non think>:<порт, который слушает vLLM для модели non think>/v1"
llm_agent_model: "<Имя non think модели>"
llm_agent_main_api_key: "<API key non think модели>"
llm_fast_model_host_url: "http://<адрес сервера generation non think>:<порт, который слушает vLLM для модели non think>/v1"
llm_fast_model: "<Имя non think модели>"
llm_fast_model_api_key: "<API key non think модели>"
llm_smart_model_host_url: "http://<адрес сервера generation think>:<порт, который слушает vLLM для модели think>/v1"
llm_smart_model: "<Имя think модели>"
llm_smart_model_api_key: "<API key think модели>"
llm_doc_embedder_url: "http://<адрес сервера embedder>:<порт, который слушает vLLM для модели embedder>/v1"
llm_doc_embedder_api_key: "<API key embedding модели>"

Чтобы использовать сервис обработки голосовых данных VoiceAI на сервере с ролью сервер Приложений, задайте значение переменных:

  • llm_default_voiceai_socket: _wss://10.0.10.25:8765_
  • llm_default_voiceai_server: _https://<Адрес сервера Приложений>/services/voiceai_

Развертывание Атомкод

После выполненной подготовки вы можете приступить к развертыванию Атомкод в демонстрационной среде.

Запустите установку Атомкод командами:

cd /opt/platform/scripts/
./run_ansible_playbooks_monostand.sh -s <Имя стенда> -d <Внутренний домен Атомкод>

где:

  • Имя стенда: имя стенда, например, test.pmd.local;
  • Внутренний домен Атомкод: внутренний домен Атомкод, используемый для межсервисного взаимодействия, например, pmd.local.

Дождитесь завершения установки, это может занять 20-30 минут.

к сведению

Указанный выше внутренний домен Атомкод должен соответствовать файлам сертификатов internal-certificate.pem, internal-certificate.key.pem и internal-root.crt.