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

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

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

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

к сведению

Для работы с проектами, включающими более трех тысяч классов, необходимо дополнить конфигурацию 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, на серверы с ролями Сервер БД, Сервер Приложений и Ansible мастер.

Дополнительные действия для сервера под управлением ОС Astra Linux 1.7.5 и выше

Если сервер работает под управлением ОС Astra Linux 1.7.5 и выше для установки Атомкод выполните следующие действия:

Создайте директорию /etc/docker/ командой

mkdir -p /etc/docker/

Создайте файл /etc/docker/daemon.json командой

nano /etc/docker/daemon.json

со следующим содержимым:

{
"debug" : true,
"astra-sec-level" : 6
}

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

Подготовка к развертыванию на сервере с ролью Сервер Приложений

Перейдите в консоль 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

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

ping <Имя Сервера>

где:

  • Имя Сервера: FQDN сервера с ролью Сервер Приложений, например, test.pmd.local.

В результате выполнения команды должен отображаться 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 и прочие необходимые пакеты.

подсказка

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

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

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

Перезагрузите систему (ответьте Y, система перезагрузится).

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

sudo -i

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

  1. Для создания сертификата воспользуйтесь Руководством по генерации самоподписанных сертификатов или Вашим удостоверяющим центром.

  2. Для использования сертификатов перейдите в директорию /opt/platform/files/ дистрибутива. Для использования своих сертификатов необходимо заменить содержимое файлов сертификатов на свои данные. В директории /opt/platform/files/ находятся описания следующих сертификатов:

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

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

Запустите скрипт, который скопирует файлы сертификатов командами:

cd /opt/platform/scripts/
./copy_certs.sh

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

./install_portainer_and_images.sh
подсказка

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

Подготовка к развертыванию на сервере с ролью Сервер БД

Перейдите в консоль ssh на сервер с ролью Сервер БД.

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

sudo -i

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

ping <Имя Сервера>

где:

  • Имя Сервера: FQDN сервера с ролью Сервер Приложений, например, test.pmd.local.

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

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

cd /opt

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

tar xzvf platformmd.*.tar.gz

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

cd /opt/platform/scripts/

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

chmod +x *.sh

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

  1. Для создания сертификата воспользуйтесь Руководством по генерации самоподписанных сертификатов или Вашим удостоверяющим центром.

  2. Для использования сертификатов перейдите в директорию /opt/platform/files/ дистрибутива. Для использования своих сертификатов необходимо заменить содержимое файлов сертификатов на свои данные. В директории /opt/platform/files/ находятся описания следующих сертификатов:

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

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

Запустите скрипт, который скопирует файлы сертификатов командами:

cd /opt/platform/scripts/
./copy_certs.sh

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

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

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

подсказка

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

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

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

Перезагрузите систему (ответьте Y, система перезагрузится).

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

sudo -i

Перейдите в директорию с docker-образами командой

cd /opt/platform/docker

Импортируйте docker-образы командой

docker load --input platformmd_DBserver.tar

Подготовка к развертыванию на сервере с ролью Ansible мастер

Перейдите в консоль ssh на сервер с ролью Ansible мастер.

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

sudo -i

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

ping <Имя Сервера>

где:

  • Имя Сервера: FQDN сервера с ролью Сервер Приложений, например, test.pmd.local.

В результате выполнения команды должен отображаться 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 и прочие необходимые пакеты.

подсказка

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

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

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

Перезагрузите систему (ответьте Y, система перезагрузится).

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

sudo -i

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

  1. Для создания сертификата воспользуйтесь Руководством по генерации самоподписанных сертификатов или Вашим удостоверяющим центром.

  2. Для использования сертификатов перейдите в директорию /opt/platform/files/ дистрибутива. Для использования своих сертификатов необходимо заменить содержимое файлов сертификатов на свои данные. В директории /opt/platform/files/ находятся описания следующих сертификатов:

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

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

Выполните команды, при помощи которых операционная система будет доверять сертификатам:

cp /opt/platform/files/external-root.crt /usr/local/share/ca-certificates/platformmd-external-root.crt
cp /opt/platform/files/external-root.crt /usr/local/share/ca-certificates/platformmd-internal-root.crt
update-ca-certificates

Выполните скрипт установки ansible:

cd /opt/platform/scripts/
./install_ansible.sh

Скопируйте открытый ключ пользователя ansible из файла /home/ansible/.ssh/id_rsa.pub с сервера с ролью Ansible-мастер на серверы с ролями Сервер Приложений и Сервер БД в содержимое файла /home/ansible/.ssh/authorized_keys.

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

к сведению

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

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

где:

  • имя сервера Приложений: имя стенда, которое используется для удобства работы с inventory. Имя может как совпадать с FQDN Сервера Приложений так и отличаться. Имя директории стенда в inventory совпадает с именем стенда, так что следует избегать символов, недопустимых в имени директорий;
  • имя сервера БД: полное доменное имя сервера с ролью Сервер БД, например, dbserver.pmd.local;
  • адрес сервера Приложений: FQDN сервера с ролью Сервер Приложений
  • пароль пользователя с правами администратора 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 appServer -t appServer.pmd.local -b dbServer.pmd.local -u Pass1 -l Pass2 -v 4.1.0 -a develop -h http://devtoolsgit.pmd.local:80/git -r pmd-repo -m local

Откройте в текстовом редакторе файл /opt/platform/installer/inventory/<Имя стенда>/group_vars/all.yml и проверьте, что значения всех параметров заданы верно, следуя комментариям в файле. Проверьте, что в файле /opt/platform/installer/inventory/<Имя стенда>/hosts.yml указаны верные имена серверов с ролями Сервер Приложений и Сервер БД.

Если необходимо сменить имя внутреннего домена Атомкод, создайте файл /opt/platform/installer/inventory/<Имя стенда>/group_vars/nginxproxy.yml с содержимым: internal_domain: <внутренний домен> , где <внутренний домен>, например, vector.local.

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

к сведению

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

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

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

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

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

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

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

./run_ansible_playbooks_multistand.sh -s <Имя стенда> -d <Внутренний домен Атомкод> -b <Имя сервера БД>

где:

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

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

Дополнительные действия по настройке после развертывания Атомкод

Добавление лицензии вручную

Если файл license.lic не был добавлен в директорию /opt/platform/installer/files перед установкой, установите лицензию вручную. Для установки лицензии после развертывания Атомкод:

  • перейдите в консоль администрирования (также Platform AdminTools);
  • введите логин и пароль администратора, возьмите их из раздела Проверка результата.
к сведению

Если пользователь admin отсутствует, воспользуйтесь пользователем install с паролем Install123$567.

  • В административной консоли перейдите в раздел Licenses.
  • Нажмите кнопку +Add license.
  • Нажмите кнопку Browse, выберите файл с лицензией и нажмите кнопку Открыть.
  • Нажмите кнопку Apply License.