Общие сведения о Компоненте ============================= Обозначение и наименование программы ------------------------------------ .. Подключаем раздел Название программы (name_program) .. include:: /project_dtm/doc_reuse/name_program.rst Назначение Компонента ------------------------ .. Подключаем раздел Назначение программы (lite_purpose_program.rst) .. include:: /project_dtm/doc_reuse/typical_purpose_program.rst Возможности Компонента -------------------------- В настоящий момент реализовано две конфигурации Компонента: - Стандарт; - Лайт. .. tab-set:: .. tab-item:: Возможности конфигурации Стандарт .. Подключаем раздел Возможности программы (typical_program_function) .. include:: /project_dtm/doc_reuse/typical_program_functions.rst .. tab-item:: Возможности конфигурации Лайт .. Подключаем раздел Возможности программы (lite_program_functions.rst) .. include:: /project_dtm/doc_reuse/lite_program_functions.rst Операционная система ------------------------- .. Подключаем раздел с описанием ОС .. include:: /project_dtm/doc_reuse/operation_system.rst .. _hard_soft_ware: Рекомендуемые технические и программные средства --------------------------------------------------- .. Подключаем раздел с описанием серверов .. include:: /project_dtm/doc_reuse/servers.rst Требования к серверу Prostore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Аппаратные и системные требования к Prostore подробно приведены в разделе `Минимальные системные требования `_ документации Prostore. Требования к серверу «СМЭВ3-адаптер» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На серверах должен быть настроен протокол NTP; 2. Снаружи сервер должен быть доступен по порту 22 (SSH); 3. Необходим сетевой доступ до серверов СМЭВ3 (S3, FTP, SOAP). Например, если используется адрес ``http://smev3-n0.test.gosuslugi.ru:5000/transport_1_0_2/,`` необходимо организовать к нему доступ. 4. Если формирование и проверка подписей выполняется адаптером СМЭВ3, то на используемый им JRE должен быть установлен КриптоПро JCP 2.0.41940-A. (Так же есть альтернатива использования адаптера ИУА). 5. Необходимо так же подготовить ключи (контейнер) для КриптоПро и лицензию на JCP. В случае отсутствия лицензии будет использоваться пробная лицензия. 6. Если для оформления цифровой подписи используется VipNet PKI необходимо обеспечить сетевой доступ до его сервера. Требования к серверам модулей Компонента ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На серверах должен быть настроен протокол NTP. Модули программы --------------------- Состав Модулей дистрибутива программы приведен в разделе :ref:`distr_components` документа «Техническое описание программы Компонент «Витрина данных». Подготовка к установке ====================== .. _preactions: Предварительные действия ------------------------ .. note:: Установка Программы производится в закрытом контуре (без необходимости доступа к сети Интернет). .. tab-set:: .. tab-item:: Предварительные действия для конфигурации Стандарт #. Установить на серверы одну из поддерживаемых операционных систем (см. раздел :ref:`osinstall`). #. Проверить настройки Firewall и отключить при необходимости (см. раздел :ref:`firewallset`). #. Выключить SELinux (см. раздел :ref:`SELinux_set` (только для РЕД ОС)). #. Указать соответствующий местоположению сервера часовой пояс (см. раздел :ref:`timezoneset`). #. Проверить, что на всех серверах установлен сервис синхронизации времени (см. раздел :ref:`timesync`). #. Проверить, что имена хостов (FQDN) серверов могут получать IP по имени со всех машин (см. раздел :ref:`fdqnset`); #. Установить/обновить Java SE Development Kit 17.0.7 (см. раздел :ref:`java_seventeen`) Дополнительно устанавливаются: - компонент сбора данных запросов и ответов Витрины (см. раздел :ref:`datacollect`); - сервис журналирования (см. раздел :ref:`logset`); - подсистема мониторинга (см. раздел :ref:`monitoring_install`). .. tab-item:: Предварительные действия для конфигурации Лайт #. Установить на серверы одну из поддерживаемых операционных систем (см. раздел :ref:`osinstall`). #. Создать пользователя **datamart** с правами ``sudo`` (см. раздел :ref:`datamart_user`). #. Проверить настройки Firewall и отключить при необходимости (см. раздел :ref:`firewallset`). #. Выключить SELinux (см. раздел :ref:`SELinux_set` (только для РЕД ОС)). #. Указать соответствующий местоположению сервера часовой пояс (см. раздел :ref:`timezoneset`). #. Настроить SSH-подключение к серверу, на котором планируется установка (см. раздел :ref:`ssh_putty`). #. Создать приватный и публичный SSH-ключи для пользователя *datamart* (см. раздел :ref:`ssh_key_create`). #. Скопировать публичный ключ на сервер (см. раздел :ref:`copy_ssh_key`). #. Скопировать архив программы (см. раздел :ref:`copy_lite_zip`). #. Установить Docker (см. раздел :ref:`install_docker`). #. Установить библиотеку *python-docker-py* (см. раздел :ref:`install_python_docker_py`). #. Настроить логирование (см. раздел :ref:`logging_setting_up`). #. Перезапустить Docker (см. раздел :ref:`restart_docker`). #. Добавить пользователя *datamart* в группу *docker* (см. раздел :ref:`add_user_to_docker_group`). #. Настроить Ansible (см. раздел :ref:`ansible_setting`). .. _osinstall: Установка операционной системы ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Компонент может работать на одной из операционных систем: - Astra Linux Special Edition 1.7 (уровень защищенности "Воронеж"); - Alt 8 SP Server; - РЕД ОС, версии 7.2. Подробная инструкция по установке операционной системы Astra Linux Special Edition 1.7 приведена на официальном сайте разработчика: https://astralinux.ru/products/astra-linux-special-edition/documents-astra-se/. .. note:: Для Astra Linux Special Edition 1.7 нужно временно отключить мандатный контроль командой ``astra-mic-control disable`` и перезагрузить сервер. Подробная инструкция по установке операционной системы Alt 8 SP Server приведена на официальном сайте разработчика: https://www.basealt.ru/alt-8-sp-sertifikat-fstehk/docs Подробная инструкция по установке операционной системы РЕД ОС, версии 7.2 приведена в документе `"Руководство администратора по РЕД ОС 7.2" `_ .. _datamart_user: Создание пользователя **datamart** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт только для **конфигурации Лайт** Для установки программы конфигурации Лайт рекомендуется создать отдельного пользователя, для этого следует выполнить следующие действия: - создать пользователя **datamart**; - отключить для пользователя пароль при вызове ``sudo`` (необходимо для автоматической установки); - добавление пользователя в группу администраторов ``sudo``. Создание пользователя ^^^^^^^^^^^^^^^^^^^^^^^^ Чтобы создать пользователя **datamart** и установить для него пароль, выполните команды: .. code-block:: bash sudo useradd datamart sudo password for user: sudo passwd datamart sudo password for user: Changing password for user datamart. New password: Retype new password: После успешных действий система выведет сообщение: .. code-block:: bash passwd: all authentication tokens updated successfully. Отключение пароля ^^^^^^^^^^^^^^^^^^^^^ Чтобы отключить пароль ``sudo`` для пользователя **datamart**, надо добавить в настройки (пользователя или группы) директиву ``NOPASSWD``. Для этого последовательно выполните команду: .. code-block:: bash sudo visudo В открывшемся конфигурационном файле, с помощью команд редактора ``vim``: **Для Astra Linux Special Edition 1.7** Отредактируйте следующие записи: .. code-block:: datamart ALL=(ALL) NOPASSWD: ALL Для запуска sudo без пароля выполните: .. code-block:: astra-sudo-control disable **Для РЕД ОС** Отредактируйте следующие записи: .. code-block:: datamart ALL=(ALL) NOPASSWD: ALL **Для АЛЬТ ОС** Отредактируйте следующие записи: .. code-block:: # uncomment line WHEEL_USERS ALL=(ALL) NOPASSWD: ALL Сохраните изменения и закройте файл. Добавление пользователя в группу администраторов ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Чтобы добавить пользователя в группу администраторов, у которых есть права выполнения команды ``sudo``, выполните следующую команду: .. code-block:: bash sudo usermod -aG wheel datamart Чтобы добавить пользователя в группу администраторов в Astra Linux Special Edition 1.7 выполните следующую команду: .. code-block:: bash sudo usermod -aG astra-admin datamart Для проверки вы можете переключиться в учетную запись **datamart** и вывести список содержимого директории ``/root``, которое обычно доступно только для пользователя ``root user``: .. code-block:: bash su -datamart Password: sudo ls -la /root .. _firewallset: Настройка межсетевого экрана ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для РЕД ОС ^^^^^^^^^^^^^^^^^^^^^^ Для корректной установки потребуется отключить службу ``FirewallD`` операционной системы РЕД ОС. Что просмотреть текущий статус работы приложения используйте команду ``firewall-cmd``: .. code-block:: bash sudo firewall-cmd --state В случае если служба ``FirewallD`` запущена, команда выше выведет следующее сообщение: .. code-block:: bash running Вы можете временно остановить службу ``FirewallD`` для этого выполните следующую команду: .. code-block:: bash sudo systemctl stop firewalld Следует учитывать, что данная команда только временно отключит службу, при последующей перезагрузке служба ``FirewallD`` снова будет запущена. Чтобы отключить автоматический запуск службы ``FirewallD`` при загрузке операционной системы выполните команду: .. code-block:: bash sudo systemctl disable firewalld После отключения проверьте, что статус службы изменился на ``not running``, для этого выполните команду: .. code-block:: bash sudo firewall-cmd --state not running Для AltOS ^^^^^^^^^^^^^^ По умолчанию выключен. Никаких действий не требуется. .. _SELinux_set: Отключение SELinux (только для РЕД ОС) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для корректной установки РЕД ОС необходимо отключить SELinux, для этого выполните следующие действия: 1. Проверьте параметры запуска ``SELinux`` при загрузке системы с помощью команды: .. code-block:: bash cat /etc/selinux/config 2. Если параметр ``SELINUX`` имеет значение ``enforcing``, отключите запуск ``SELinux`` при загрузке системы. Для этого в файле ``/etc/selinux/config`` укажите значение ``SELINUX=disabled`` и перезагрузите сервер. ``SELinux`` будет отключен. Открыть и отредактировать файл ``/etc/selinux/config`` можно с помощью редактора Vim, для этого выполните команду: .. code-block:: bash sudo vi /etc/selinux/config 1. Проверьте, что служба отключена. Для этого выполните команду: .. code-block:: bash sestatus В ответ вы должны получить .. code-block:: bash SELinux status: disabled .. _timezoneset: Выбор часового пояса ~~~~~~~~~~~~~~~~~~~~ Проверьте, что установлен нужный часовой пояс. В нашем случае, на команду ``timedatectl``, должна выводиться строка ``Time zone: Europe/Moscow (MSK, +0300)``. Пример команды: .. code-block:: bash timedatectl Пример ответа: .. code-block:: bash Local time: Mon 2021-12-20 12:06:39 MSK Universal time: Mon 2021-12-20 09:06:39 UTC RTC time: Mon 2021-12-20 09:06:49 Time zone: Europe/Moscow (MSK, +0300) NTP enabled: n/a NTP synchronized: no RTC in local TZ: no DST active: n/a Если результат отличается, укажите соответствующий местоположению сервера часовой пояс. Пример команды для московского часового пояса: .. code-block:: bash sudo timedatectl set-timezone Europe/Moscow .. _timesync: Установка сервиса синхронизации времени ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт только для **конфигурации Стандарт** Для корректной установки программы необходимо убедиться, что на всех серверах установлен сервис синхронизации времени. .. _fdqnset: Настройка имен хостов (FQDN) на серверах ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт только для **конфигурации Стандарт** Для корректной установки программы необходимо проверить, что имена хостов (FQDN) серверов могут взаимно получать IP по имени со всех машин. Имена хостов меняются согласно документации установленной ОС. .. _java_seventeen: Установка Java SE Development Kit 17.0.7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт только для **конфигурации Стандарт** Установка Java SE Development Kit 17.0.7 осуществляется согласно официальной документации: https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html .. _ssh_putty: Подключение к серверу через SSH-клиент PuTTY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт только для **конфигурации Лайт** Настройку SSH-подключения к серверу можно выполнить, используя клиент удаленного доступа - `PuTTY `_. .. _ssh_key_create: Создание SSH-ключей ~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** .. note:: В данном разделе описана генерация ключей: приватного и публичного. Приватный ключ использует Ansible для подключения по SSH при выполнении скриптов. Действия этого раздела необходимо выполнять под созданной учетной записью **datamart** (см. раздел :ref:`datamart_user`). Для переключения на учетную запись **datamart** выполните команду: .. code-block:: bash sudo su - datamart Для подключения Ansible к серверу по протоколу SSH необходимо создать SSH-ключи. Для аутентификации пользователя на сервере используются два ключа: - приватный; - публичный. Чтобы сгенерировать SSH-ключи для операционной системы Linux, выполните следующие действия: 1. Выполните команду: .. code-block:: bash ssh-keygen -t rsa Следует оставить все значения по умолчанию. .. note:: Если команда ``ssh-keygen`` не найдена, установите пакет ``openssh``. 2. После выполнения команды будет предложено указать имена файлов, в которые будут сохранены ключи и ввести пароль для закрытого ключа. По умолчанию используется имя ``id_rsa``, ключи будут созданы в директории ``~/.ssh``. Публичная часть ключа будет сохранена в файле с названием ``<имя_ключа>.pub``. 3. Будет выведено следующее сообщение: .. code-block:: bash Generating public/private rsa key pair. Enter file in which to save the key (/home/datamart/.ssh/id_rsa). 4. Нажмите **Enter**. После этого ключ будет сохранен в указанную директорию по умолчанию. Далее вам будет предложено ввести кодовое слово для дополнительной защиты ключа. Вы можете пропустить данный шаг и нажать **Enter**. 5. На запрос указать кодовое слово, не вводя его нажмите **Enter**. Процедура создания ключей завершена, ключи сохранены в директории ``~/.ssh/ `` в файлах ``id_rsa`` и ``id_rsa.pub``. .. _copy_ssh_key: Копирование SSH-ключей на сервер ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** .. note:: В разделе описано добавление публичного ключа в список разрешенных, чтобы дать права Ansible на подключение. Действия этого раздела необходимо выполнять под созданной учетной записью **datamart** (см. раздел :ref:`datamart_user`). Для переключения на учетную запись **datamart** выполните команду: .. code-block:: bash sudo su - datamart Для копирования SSH-ключей в список разрешенных ключей выполните команды: .. code-block:: bash cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys .. _copy_lite_zip: Копирование архива программы ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** 1. Для загрузки на сервер файла с архивом программы используйте SFTP-клиент (например, WinSCP или Filezilla). Для авторизации используйте логин и пароль учетной записи администратора (**datamart**) созданной при установке ОС (см. :numref:`datamart_user`). Загрузите файл с архивом программы в домашнюю директорию администратора ( ``~/`` ). 2. Подключитесь по SSH к серверу (см. :ref:`ssh_connect`), используя логин и пароль учетной записи администратора. 3. Переместите файл с архивом программы в домашнюю директорию пользователя **datamart** командой: .. code-block:: bash mv ~/dtm-lite-2.6.0.tgz /home/datamart/ где, - ``dtm-lite-2.6.0.tgz`` - название архива программы. - ``datamart`` - имя пользователя. .. note:: Обратите внимание, что название и версия файла с архивом может отличаться в зависимости от версии программы. Распаковка архива ~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** .. note:: Действия этого раздела необходимо выполнять под созданной учетной записью **datamart** (см. раздел :ref:`datamart_user`). Для переключения на учетную запись **datamart** выполните команду: .. code-block:: bash sudo su - datamart Чтобы распаковать архив, выполните команду: .. code-block:: bash tar -xzvf dtm-lite-2.6.0.tgz .. note:: Обратите внимание, что название и версия файла с архивом может отличаться в зависимости от версии программы. .. _install_docker: Установка Docker ~~~~~~~~~~~~~~~~ Установка Docker в РЕД ОС ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: Действия этого раздела необходимо выполнять под созданной учетной записью **datamart** (см. раздел :ref:`datamart_user`). Для переключения на учетную запись **datamart** выполните команду: .. code-block:: bash sudo su - datamart Для установки Docker выполните команду: .. code-block:: bash sudo yum install docker-ce Добавляем Docker в автозагрузку: .. code-block:: bash sudo systemctl enable docker Запускаем Docker: .. code-block:: bash sudo systemctl start docker Установка Docker в AltOS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: Действия этого раздела необходимо выполнять под созданной учетной записью **datamart** (см. раздел :ref:`datamart_user`). Для переключения на учетную запись **datamart** выполните команду: .. code-block:: bash sudo su - datamart Установить docker можно следующей командой: .. code-block:: bash sudo apt-get install docker-ce Удалить сервис ``containerd``: .. code-block:: bash sudo rm -f /lib/systemd/system/containerd.service Затем необходимо запустить соответствующую службу: .. code-block:: bash sudo systemctl unmask docker sudo systemctl start docker .. _install_python_docker_py: Установка библиотеки python-docker-py ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** **Для РЕД ОС** Для установки библиотек ``python2-docker`` выполните следующую команду: .. code-block:: bash sudo yum install python2-docker **Для АЛЬТ ОС** .. note:: В некоторых версиях "АЛЬТ Сервер 8 СП" (например, АЛЬТ Сервер 8.4 СП) в лицензионный диск с операционной системой не входят пакеты **python3-module-docker** и **python3-websocket-client**, поэтому они будут установлены из сертифицированного репозитория компании-разработчика операционной системы, для этого необходим доступ в Интернет! Для установки выполните следующую команду: .. code-block:: bash sudo /usr/bin/python3 -m pip install docker .. _logging_setting_up: Настройка логирования в Docker ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** **Для РЕД ОС** Настройка логирования в Docker осуществляется с помощью файла конфигурации. Путь к файлу конфигурации: ``/etc/docker/daemon.json``. Если этого файла не существует, его необходимо создать. Добавьте в файл следующие настройки логирования: .. code-block:: bash { "log-opts": { "max-file": "1", "max-size": "300m" } } где, - ``max-file`` - ограничение по количеству файлов (настройки ротации). Максимальное количество файлов журнала, которые могут быть созданы. Если при просмотре журналов создаются лишние файлы, самый старый файл удаляется. Действует только тогда, когда ``max-size`` (см. ниже) также установлен. Положительное целое число. По умолчанию ``1``. - ``max-size`` - устанавливает ограничение по размеру лог-файла (``k``, ``m`` или ``g``). По умолчанию - ``1`` (неограниченно). **Для АЛЬТ ОС** Выполните команду: .. code-block:: bash sudo sed -i 's/journald/json-file/' /etc/docker/daemon.json .. _restart_docker: Перезапуск Docker ~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** Для применения настроек, выполненных на предыдущем шаге необходимо перезапустите Docker. **Для РЕД ОС** Выполните команду: .. code-block:: bash sudo systemctl restart docker **Для АЛЬТ ОС** Выполните команду: .. code-block:: bash sudo systemctl restart docker .. _add_user_to_docker_group: Добавление пользователя в группу Docker ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** Далее, нужно добавить пользователя **datamart** в группу ``docker``. Для этого подключитесь к серверу по SSH (например, через `Putty `_) и выполните команду: .. code-block:: bash sudo usermod -aG docker datamart .. note:: Для применения настроек изменения группы выполните повторную авторизацию под пользователем **datamart**! .. _ansible_setting: Настройка Ansible ~~~~~~~~~~~~~~~~~ .. note:: Данный пункт для **конфигурации Лайт** .. note:: Действия этого раздела необходимо выполнять под созданной в учетной записью **datamart** (см. раздел :ref:`datamart_user`). Для переключения на учетную запись **datamart** выполните команду: .. code-block:: bash sudo su - datamart Для загрузки docker-образа выполните команду: .. code-block:: bash docker image load -i images/ansible-2.9-centos-7.tar Чтобы создать ``alias`` для вызова Ansible выполните команду: .. code-block:: bash echo "alias docker-ansible-cmd='docker run --rm -it -v $(pwd)/ansible:/ansible -v ~/.ssh/id_rsa:/root/.ssh/id_rsa --workdir=\ /ansible registry.gosuslugi.local/dtm-dev/ansible:2.9-centos-7 '" >> .bashrc . .bashrc Данная команда создает более удобную команду для работы с Ansible ``docker-ansible-cmd``, котороая состоит из следующих частей: - ``echo "..." >> .bashrc`` - добавляет содержимое внутри кавычек в файл ``.bashrc``. - ``. .bashrc`` или ``source .bashrc`` - выполняет команды из ``.bashrc``. - ``alias docker-ansible-cmd='...'`` - задает "алиас" - короткий вариант более длинной команды. - ``docker run --rm -it -v $(pwd)/ansible:/ansible -v ~/.ssh/id_rsa:/root/.ssh/id_rsa --workdir=/ansible registry.gosuslugi.local/dtm-dev/ansible:2.9-centos-7`` - создаёт и запускает новый контейнер из образа ``registry.gosuslugi.local/dtm-dev/ansible:2.9-centos-7``. Далее, если добавить после имени образа команду, выполняет её внутри контейнера. Используемые опции: - ``--rm`` - удаляет контейнер автоматически после завершения работы; - ``-v $(pwd)/ansible:/ansible`` - монтирует внутрь контейнера каталог ansible из текущей директории; - ``-v ~/.ssh/id_rsa:/root/.ssh/id_rsa`` - монтирует внутрь контейнера SSH-ключ; - ``--workdir=/ansible`` - запускает команды из каталога /ansible внутри контейнера. Далее нужно перечитать конфигурационный файл, чтобы применить созданные ``alias``, для этого выполните команду: .. code-block:: bash source .bashrc Чтобы проверить установку Ansible в контейнере, выполните команду **Ansible**, позволяющую вывести номер версии: .. code-block:: bash docker-ansible-cmd ansible --version