Обновление и установка Системы с использованием Ansible#

Подготовка к установке#

  • Развертывание или обновление Системы с помощью Ansible возможно при наличии прямого доступа по SSH к необходимому стенду с рабочего ПК.

  • Развертывание или обновление Системы с помощью Ansible возможно при использовании Ansible непосредственно на сервере приложения или ином сервере, который находится в той же локальной сети, что и сервер приложения.

  • При использовании ОС Windows, необходимо предварительно установить Docker. Скачать Docker можно по ссылке: https://docs.docker.com/desktop/install/windows-install/.

  • При использовании ОС Unix, необходимо предварительно установить средства поддержки контейнеризации Docker.

  • Актуальная версия утилиты расположена в установочном пакете. Выберите версию, которая будет соответствовать версии сборки артефактов.

Создание и редактирование inventory.yml файла#

Этап создания можно пропустить, если уже имеется сконфигурированный inventory.yml файл.

Для того чтобы отредакатировать inventory.yml файл:

  1. Перейдите в директорию ansible.

  2. Скопируйте содержимое папки inventory/prod/etalon в новую директорию с именем inventory/prod/dir_name, где dir_name — имя директории (например, tumen). Как правило имя директории основывается на названии проекта для которого настраивается конфигурация. Директория inventory/prod/etalon представляет собой эталон конфигурации, где описан пример inventory.yml файла, а также файлов, которые содержат данные для подключения к стендам — имя пользователя с правами sudo и пароль для подключения.

Важно

Не рекомендуется без необходимости изменять структуру каталогов и файлов данной директории. В противном случае возможны ошибки в работе с Ansible.

  1. Откройте файл inventory/prod/dir_name/inventory.yml.

Структура inventory.yml файла по умолчанию представлена ниже.

[geometa-app]
app-1 ansible_host=192.168.10.1

[geometa-db]
db-1 ansible_host=192.168.20.1

[geometa-gs]
gs-1 ansible_host=192.168.30.1

[geometa-fs]
fs-1 ansible_host=192.168.40.1

[all:children]
geometa-app
geometa-db
geometa-gs
geometa-fs

Где:

  • geometa-app, geometa-db, geometa-gs, geometa-fs — имена групп хостов, представляющие собой группу серверов приложений, баз данных, геосерверов и файловых хранилищ, соответственно;

  • app-1 , db-1 , gs-1 , fs-1 — имена сервера приложения, базы данных, геосервера, файлового хранилища, соответственно;

  • ansible_host — переменная Ansible, которая содержит IP-адерс для подключения к хосту (стенд/виртуальная машина/сервер);

  • [all:children] — обязательный блок, который содержит в себе все группы хостов одновременно.

Если какие-либо компоненты Cистемы дублируются, например, на проекте расположено два геосервера на разных хостах (стенд/виртуальная машина/сервер), то необходимо в группу geometa-gs добавить еще одну строку:

gs-2 ansible_host=192.168.30.2

Где:

  • gs-2 — имя геосервера. Имя должно быть идентичным для всех пунктов, необходимо менять лишь индекс (в данном примере - это цифра 2);

  • 192.168.30.2— IP-адрес хоста (стенд/виртуальная машина/сервер), на котором расположен второй экземпляр геосервера.

  1. Необходимо изменить значения IP-адресов стендов сервера приложения, базы данных, геосервера и файлового хранилища на значения, которые соответствуют устанавливаемому проекту.

Если подключение до целевого сервера осуществляется через порт, отличный от стандартного — 22, то будет выглядеть следующим образом:

app-1 ansible_host=192.168.30.1 ansible_port=3333

Где:

  • app-1 — имя сервера приложения. Имя должно быть идентичным для всех пунктов;

  • 192.168.30.1— IP-адрес хоста (стенд/виртуальная машина/сервер) через который осуществляется проброс до целевого сервера;

  • 3333 — порт ssh через который осуществляется проброс до целевого сервера.

Если какие-либо компоненты Cистемы располагаются на одном и том же хосте (стенд/виртуальная машина/сервер), то необходимо продублировать IP-адрес в соответствующих блоках.

Редактирование host vars#

Для того чтобы отредакатировать host vars файл:

  1. Перейдите в директорию inventory/prod/dir_name/host_vars, где dir_name — имя директории (например, tumen). Как правило имя директории основывается на названии проекта для которого настраивается конфигурация.

  2. Заполните во всех файлах данного каталога следующую информацию:

ansible_user:`имя пользователя для подключения к стенду`
ansible_password:`пароль пользователя для подключения к стенду`
ansible_become_password:`пароль пользователя для подключения к стенду`

Где:

  • имя пользователя для подключения к стенду — имя пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  • пароль пользователя для подключения к стенду — пароль пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  1. Дополните перечень файлов, если используется несколько машин, а именно несколько геосерверов или серверов приложений (открытый и закрытый контур). Например, при наличии трёх геосерверов и еще одного сервера приложений, необходимо создать файлы gs-2, gs-3, app-2 и внести в них следующие данные:

ansible_user:`имя пользователя для подключения к стенду`
ansible_password:`пароль пользователя для подключения к стенду`
ansible_become_password:`пароль пользователя для подключения к стенду`

Где:

  • имя пользователя для подключения к стенду - имя пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  • пароль пользователя для подключения к стенду - пароль пользователя для подключения к серверу приложений (виртуальной машине/стенду);

Примечание

Если приватный ключ в формате .ppk, то конвертируйте ключ в формат openssh, следуя инструкции.

  1. Поместите приватный ключ в директорию ansible/vault/.

  2. Перейдите в директорию inventory/prod/dir_name/host_vars, где dir_name - имя директории (например, tumen). Как правило имя директории основывается на названии проекта для которого настраивается конфигурация.

  3. Откройте файл inventory/prod/dir_name/host_vars/app-1 и внесите следующие данные:

    ansible_user:`имя пользователя для подключения к стенду`
    ansible_ssh_private_key_file:`путь до приватного ключа`
    

Где:

  • имя пользователя для подключения к стенду - имя пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  • путь до приватного ключа - абсолютный путь до приватного ключа для подключения к серверу приложений (виртуальной машине/стенду).

  1. Откройте файл inventory/prod/dir_name/inventory.yml/db-1 и внесите следующие данные:

    ansible_user:`имя пользователя для подключения к стенду`
    ansible_ssh_private_key_file:`путь до приватного ключа`
    

Где:

  • имя пользователя для подключения к стенду - имя пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  • путь до приватного ключа - абсолютный путь до приватного ключа для подключения к серверу приложений (виртуальной машине/стенду).

  1. Откройте файл inventory/prod/dir_name/inventory.yml/fs-1 и внесите следующие данные:

    ansible_user:`имя пользователя для подключения к стенду`
    ansible_ssh_private_key_file:`путь до приватного ключа`
    

Где:

  • имя пользователя для подключения к стенду - имя пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  • путь до приватного ключа - абсолютный путь до приватного ключа для подключения к серверу приложений (виртуальной машине/стенду).

  1. Откройте файл inventory/prod/dir_name/inventory.yml/gs-1 и внесите следующие данные:

    ansible_user:`имя пользователя для подключения к стенду`
    ansible_ssh_private_key_file:`путь до приватного ключа`
    

Где:

  • имя пользователя для подключения к стенду - имя пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  • путь до приватного ключа - абсолютный путь до приватного ключа для подключения к серверу приложений (виртуальной машине/стенду).

Если используется несколько геосерверов, необходимо создать файл gs-2..n.:

Внесите в файл следующие данные:

ansible_user:`имя пользователя для подключения к стенду`
ansible_ssh_private_key_file:`путь до приватного ключа сертификата`

Где:

  • имя пользователя для подключения к стенду - имя пользователя для подключения к серверу приложений (виртуальной машине/стенду);

  • путь до приватного ключа - абсолютный путь до приватного ключа для подключения к серверу приложений (виртуальной машине/стенду).

Импорт Docker-контейнера, сконфигурированного для работы Ansible#

Если работаете под управлением ОС Windows и не имеете доступа к репозиторию registry.gemsdev.ru (можно проверить, выполнив в командной строке команду ping на адрес registry.gemsdev.ru):

  1. Откройте командную строку от имени администратора.

  2. Перейдите в директорию ansible.

  3. Загрузите докер-образ из .tar архива (по умолчанию данный архив находится в директории ansible и имеет название docker_ansible.tar) с помощью команды:

docker load -i docker_ansible.tar

Примечание

Данный этап подходит в случае, когда планируется использовать Ansible с промежуточной машины, к которой подключаетесь по RDP, либо вы не находитесь в локальной сети компании ООО «Джемс Девелопмент».

Если работаете под управлением ОС Unix или, например, находитесь на сервере приложения или ином сервере, который находится в локальной сети сервера приложения:

  1. Убедитесь, что на сервере установлены средства поддержки контейнеризации Docker и Docker-compose.

  2. Скопируйте директорию ansible на сервер, например, в директорию /opt/ansible/.

  3. Перейдите в директорию ansible и выполните команду:

sudo /bin/bash ansible_load.sh

Примечание

Данный этап подходит в случае, когда планируется использовать Ansible непосредственно с сервера приложения, либо вы находитесь в локальной сети сервера приложения (т.е. на каком-либо из стендов конкретного проекта).

Редактирование vars.yml файла#

Файл глобальных переменных для запуска ролей, выполняющих установку Системы находится в корневой директории ansible и имеет название vars.yml. Текущий vars.yml-файл содержит эталонную (дефолтную) конфигурацию для развёртывания.

Для шифрования данных внутри файла vars.yml запустите докер-образ и перейдите в Docker-контейнеры:

docker run -it --rm -v 'абсолютный путь до директории ansible':/ansible registry.gemsdev.ru/ansible-ubuntu:latest /bin/bash

Где:

  • абсолютный путь до директории ansible является абсолютным путем до директории ansible, которая присутствует в данном репозитории. Например, /opt/ansible для ОС Unix или \OutputDir\ansible-build\ansible для ОС Windows.

Примечание

  • Во время выполнения следующих команд Cистема будет запрашивать пароль. В качестве пароля может выступать любая комбинация символов. Важно, запомнить и использовать одинаковый пароль при генерации всех шифрованных данных в рамках одного проекта. Он понадобится на этапе запуска установки и обновления компонентов с помощью Ansible.

  • При утрате пароля необходимо повторить все этапы данного пункта вновь, опираясь на текущую инструкцию.

Для шифрования данных внутри файла vars.yml выполните команду:

ansible-vault encrypt vars.yml

Выйдите с Docker-контейнера с помощью команды:

exit

Генерация шифрованных данных#

Необходимо заполнить соответствующие файлы зашифрованными данными для доступа к узлам (учетными данными ssh).

Примечание

Во время выполнения следующих команд Cистема будет запрашивать пароль. В качестве пароля может выступать любая комбинация символов. Необходимо использовать одинаковый пароль при генерации всех шифрованных данных в рамках одного проекта. Пароль понадобится на этапе запуска установки и обновления компонентов с помощью Ansible. При утрате пароля необходимо повторить все этапы данного пункта вновь, опираясь на текущую инструкцию.

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

Если Вы работаете под ОС Windows:

  1. Откройте командную строку от имени администратора. Данный шаг можно пропустить, если вы работаете под управлением ОС Unix.

  2. Запустите докер-образ и перейдите в Docker-контейнер:

docker run -it --rm -v 'абсолютный путь до директории ansible':/ansible registry.gemsdev.ru/ansible-ubuntu:latest /bin/bash

Где:

  • абсолютный путь до директории ansible - является абсолютным путем до директории ansible , которая присутствует в данном репозитории. Например, /opt/ansible для ОС Unix или \OutputDir\ansible-build\ansible для ОС Windows.

  1. Перейдите в директорию с файлами Ansible:

cd /ansible/inventory/prod/'директория проекта'/host_vars/

Где:

  • директория проекта - имя созданной ранее директории (например, tumen), в папке inventory/prod/.

  1. Зашифруйте отредактированные ранее файлы с помощью команды:

ansible-vault encrypt наименование_файла

Пример:

ansible-vault encrypt app-1
  1. Выполните команду:

chmod -R 600 /ansible/vault/*

Примечание

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

  1. Чтобы зашифровать данные внутри файла vars.yml, запустите докер-образ и перейдите в Docker-контейнеры:

docker run -it --rm -v 'абсолютный путь до директории ansible':/ansible registry.gemsdev.ru/ansible-ubuntu:latest /bin/bash

Где:

  • абсолютный путь до директории ansible - является абсолютным путем до директории ansible , которая присутствует в данном репозитории. Например, /opt/ansible для ОС Unix или \OutputDir\ansible-build\ansible для ОС Windows.

  1. Выполните команду:

ansible-vault encrypt vars.yml
  1. Выйдите из Docker-контейнера с помощью следующей команды:

exit

После этого inventory.yml-файл и прочие файлы конфигурации готовы к использованию.

Примечание

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

ansible-vault decrypt наименование_файла

Формирование Docker-команды с помощью утилиты GDC#

Утилита GDC предназначена для формирования Docker-команды и запуска Docker-контейнера, необходимого для установки Системы и перечня дополнительного ПО с помощью средства автоматического развёртывания и конфигурирования серверов Ansible.

Утилита поставляется на семейства ОС Windows и Unix. Запускается в интерфейсе командной строки (ОС Windows) или терминальном режиме (ОС Unix). Актуальная версия утилиты расположена в установочном пакете. Утилита принимает в себя ряд обязательных и вспомогательных аргументов.

Стуктура команды:

goBuild.exe -mod-file 'абсолютный путь до файла'ansible_modules.json -i 'абсолютный путь до файла интвентаризации'inventory.yml -l app-1 --ask-pass --install -astra -unix

Где:

  • Флаг -mod-file является обязательным и указывает на абсолютный путь до файла modules.json, который хранит в себе список тегов инсталлируемых сервисов.

  • Флаг -i является обязательным и указывает на абсолютный путь до inventory.yml файла, относительно директории ansible (данный файл лежит внутри директории ansible и создается индивидуально под каждый проект, к примеру, для тюменского проекта путь может быть таким inventory/prod/tumen/inventory.yml).

  • Флаг -l является обязательным и указывает на имя хоста или группы хостов, на которые необходимо провести инсталляцию сервисов.

  • Флаг --install является вспомогательным и указывает на то, необходимо ли установить дополнительное ПО. Данный флаг используется при необходимости произвести полную установку Cистемы (развёртывание с нуля).

  • Флаг --ask-pass является вспомогательным и указывает на то, использовалось ли шифрование inventory.yml файла (если inventory.yml файл содержит в себе зашифрованные данные, то нужно использовать этот флаг, в противном случае флаг должен отсутствовать).

  • Флаг --unix является вспомогательным и указывает на то, запускается ли утилита под ОС Unix. Если запускаете утилиту на ОС Unix (CentOS, AstraLinux и т.д.), то нужно использовать этот флаг, если запускаете утилиту под ОС Windows, то флаг должен отсутствовать.

  • Флаг --astra является вспомогательным и указывает на то, на какой ОС планируется производить обновление или развертывание Системы и стороннего ПО. Если планируется разворачивать или обновлять Систему на ОС AstraLinux, то нужно использовать этот флаг, в противном случае флаг должен отсутствовать).

  • Флаг --only-tag является системным и используется разработчиками. Данный флаг позволяет сгенерировать только список тегов (дополнительно нужно использовать флаг –mod-file, прочие флаги не требуются).

Запуск утилиты

Откройте командную строку от имени администратора и перейдите в директорию с бинарным файлом goBuild.exe.

Допустим, что:

  • C:\Users\gems\projects\tumen\ansible_modules.json - абсолютный путь до ansible_modules.json файла. Данный файл формируется с помощью утилиты ProjectPackageBuilder на этапе сборки артефактов под проект.

  • C:\Users\gems\ansible\inventory\prod\tumen\inventory.yml - абсолютный путь до inventory.yml файла проекта.

  • app-1 - имя хоста в ansible, на которые необходимо установить Систему. Имя можно посмотреть в inventory.yml файле, который гененировался ранее.

  • Необходимо произвести полную установку Системы (развёртывание с нуля).

  • Команда запускается под ОС Windows.

Установка Системы#

Полная установка Системы (включая дополнительное ПО)#

Важно

  • При полном развёртывании Системы необходимо, чтобы в папке с артефактами проекта (которая была создана на этапе работы утилиты ProjectPackageBuilder) лежали архивы с файлами установки дополнительного ПО (например, архив с БД: centos_install_postgresql.tar.gz).

  • После того, как артефакты проекта были сформированы, необходимо в директорию IAS разместить архив с шаблонами templates.zip. Актуальные версии данных архивов для работы с Ansible находятся в установочном пакете.

Пример структуры и содержимого директории для полной установки Geometa и Sapphire:

  • tumen/ - директория, хранит в себе список артефактов под сборку для проекта

  • IAS/ - директория, хранит в себе артефакты для установки Геометы на проект

  • release.zip - артефакты геометы.

  • full_search.zip - артефакты сервиса полнотекствого поиска Solr.

  • templates.zip - архив с шаблонами.

  • Sapphire/ - хранит в себе список артефактов Sapphire.

  • releaseSapphire.zip - архив с артефактами Sapphire.

  • centos_install_postgresql.tar.gz - архив для установки БД.

  • centos_install_geoserver.tar.gz - архив для установки геосервера.

  • centos_install_dotnet.tar.gz - архив для установки дотнета и прочих, связанных, с ним компонентов.

  • centos_install_nginx.tar.gz - архив для установки Nginx’а.

  • java-csp-5.0.39267.zip - архив для установки JavaCSP.

  • jre-8u231-linux-x64.tar.gz - архив для установки Java 8u231.

  • linux-amd64.tgz - архив для установки CryptoPRO CSP.

  • redhat-lsb-core-4.1-27.el7.centos.1.x86_64.rpm - вспомогательный пакет для установки CryptoPRO CSP.

Если ранее не проводилcя импорт Docker-контейнера, сконфигурированного для работы с Ansible, то необходимо выполнить пункт Импорт докер контейнера, сконфигурированного для работы с Ansible

Генерация Docker-команды#

Проведите генерацию Docker-команды с помощью утилиты GDC. После формирования Docker-команды можно отредактировать список тегов. Теги перечисляются через зяпятую в двойных кавычках после ключевого слова –tags. Список доступных тэгов описан в пункте Установка отдельных компонентов

Процесс установки ПО производится последовательно на каждый из серверов. Т.е. команда установки запускается под каждый сервер.

Пример команд:

  • Команда для обновления Системы:

docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest bash -c "chmod -R 644 /ansible" && docker run -it --rm -v D:\OutputDir\ansible-build\\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest ansible-playbook -i inventory/devops-test/omsk/inventory.yml ias-deploy-unix.yml -l devops-centos2 --tags "include_vars, install_ias"
  • Команда для установки или обновления геосервера (последовательное выполнение команд, для установки на 2 стенда с геосерверами):

docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest bash -c "chmod -R 644 /ansible" && docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest ansible-playbook -i inventory/devops-test/omsk/inventory.yml ias-deploy-unix.yml -l gs-1 --tags "include_vars, install_geoserver"


docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest bash -c "chmod -R 644 /ansible" && docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest ansible-playbook -i inventory/devops-test/omsk/inventory.yml ias-deploy-unix.yml -l gs-2 --tags "include_vars, install_geoserver"
  • Команда для установки БД:

docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest bash -c "chmod -R 644 /ansible" && docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest ansible-playbook -i inventory/devops-test/omsk/inventory.yml ias-deploy-unix.yml -l db-vm --tags "include_vars, install_psql"
  • Команда для полной установки Системы (включая дополнительное ПО):

docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest bash -c "chmod -R 644 /ansible" && docker run -it --rm -v D:\OutputDir\ansible-build\ansible:/ansible -v D:\Release\5.17\my\:/ansible/files registry.gemsdev.ru/ansible-ubuntu:latest ansible-playbook -i inventory/devops-test/omsk/inventory.yml ias-deploy-unix.yml -l devops-centos2 --tags "include_vars, install_psql, install_geoserver, install_nginx, install_netcore, install_cryptopro, install_ias, install_solr"

Скопируйте docker-команду, полученную с помощью утилиты GDC в командную строку и нажмите клавишу Enter на клавиатуре.

Важно

Если проводится установка на ОС Astra Linux, то после формирования Docker-команды необходимо убрать все теги и установить тег up_privilege.

После запуска данной команды Система может запросить пароль (если ранее создавали зашифрованный inventory.yml-файл). Необходимо ввести пароль, который был сгенерирован на этапе создания шифрованных данных.

Установка отдельных компонентов#

Используя специальные теги, передаваемые в качестве параметра, возможно установить отдельный модуль или компонент.

Данные теги можно перечислять через запятую, после ключевого слова –tags в необходимом порядке.

Теги#

Название

Описание

install_jet

Установка Картографического API (Jet)

include_vars

Подключения файла глобальных переменных

up_privilege

Поднять уровень привилегий пользователя для Astra Linux (Smolensk)

install_psql

Установка экземпляра postgresql

install_geoserver

Установка экземпляра geoserver (необходимо использовать совместно с тегом install_netcore)

install_netcore

Установка Java && .NetCore && LibreOffice

install_cryptopro

Установка CryptoPRO CSP (необходимо использовать совместно с тегом install_netcore)

install_nginx

Установка Nginx

install_ias

Установка Geometa (без дополнителньых компонентов и ПО)

install_exporttab

Установка сервиса ExportTab

install_rabbitmq

Установка сервиса RabbitMq

install_solr

Установка Solr

install_govgmp

Установка модуля GovGmp

install_iasentitymonitor

Установка модуля IasEntityMonitoring

install_smev

Установка модуля SmevInteragencyCooperation

install_notification

Установка модуля NotificationService

install_geocoder

Установка модуля GeocodingService

install_httpfilestorage

Установка модуля файловое хранилище

install_topaz

Установка модуля Topaz

install_1cintegration

Установка модуля интеграции с 1С

install_alfrescointegration

Установка модуля интеграции с Alfresco

install_docker

Установка службы docker

install_gisogdrf

Установка сервиса интеграции с API ГИСОГД

install_docker_modules

Установка доп. модулей для docker’а, для корректной работы ansible

install_diamond

Установка модуля Diamond

install_agate

Установка модуля Agate

install_portal

Установка модуля Portal(InteractiveMap)

install_amber

Установка модуля Amber

install_fias

Установка модуля Fias

install_isumu

Установка модуля Isumu

install_omskrpgu

Установка модуля OmskRPGU

install_rldz

Установка модуля Rldz

install_garnet

Установка модуля Garnet

install_sapphire

Установка модуля Sapphire

install_nephrite

Установка модуля Nephrite

install_jasper

Установка модуля Jasper

install_stkgd

Установка модуля STKGD

install_patcher

Установка модуля Patcher

install_smevproducer

Установка модуля SmevProducerEmulator

install_smevtestcontour

Установка модуля SmevMezhvedTestContour

update-geoserver

Повышение версии геосервера

install_gemstore

Установка модуля Стартовая страница

install_otelcollector

Установка агента OpenTelemetry для сборка метрик

install_gismultitool

Установка сервиса GisMultiTool

Обновление Системы#

Резервное копирование конфигурационных файлов Системы#

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

Список сервисов, для которых можно настроить резервное копирование:

  • AppServer

  • SchemaSync

  • STS

  • UI.Web.IAS

  • WebImporterRef

  • WebIsogdMonitor

  • SmevMezhved

  • CacheMonitor

  • EgrnImporter

Как настроить резервное копирование

  1. Перейдите в директорию ansible/

  2. Из директории ansible/ перейдите в папку roles/install-ias/vars/

  3. В текстовом редакторе (например, Notepad++) откройте файл backups.yml

4. Отредактируйте значения переменных backup_file_name и backup_dir_name для каждого сервиса, которому требуется резервное копирование конфигурационных файлов или директорий. По умолчанию значение данных переменных равно [] , так как данные переменные принимают в себя список значений. Удалите [], а затем в виде списка укажите относительные пути до файлов или директорий, которые необходимо бэкапить.

Важно

  • Если нет необходимости проводить резервное копирование и восстановление конфигурационных файлов и проектов, то значения переменных backup_file_name и backup_dir_name необходимо установить равным []. Т.е. после символа : укажите [] и удалите или закомментируйте список файлов и директорий, который был установлен ранее или имеется по умолчанию.

  • Если после того, как было настроено резервное копирование возникли проблемы с обновлением (обновление не прошло успешно), то чтобы не потерять конфигурационные файлы зайдите на сервер приложения, перейти в папку /tmp/Название модуля геометы и в ручную скопируйте куда-либо данные конфигурационные файлы. В противном случае, при повторном запуске обновления конфигурационные файлы будут утеряны.

Пример использования

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

  • Для сервера приложения (AppServer) резервные копии:

    • Файл, который лежит по следующему относительному пути ReportTemplates/gpzu.dotx

    • Файл, который лежит по следующему относительному пути ReportTemplates/rs.dotx

    • Директорию, которая лежит по следующему относительному пути appdata/plugins/Agreement

  • Для репликации (SchemaSync) резервные копии:

    • Файл, который лежит по следующему относительному пути sync.cfg

    • Файл, который лежит по следующему относительному пути sync.cfg.gen

    • Файл, который лежит по следующему относительному пути appsettings.json

    • Директорию, которая лежит по следующему относительному пути data

  • Для импортера (EgrnImporter) резервные копии:

    • Файл, который лежит по следующему относительному пути appsettings.json

Артефакты Ansible находятся в установочном пакете.

Чтобы сделать резервные копии необходимо:

  1. Получите установочный пакет

  2. Открыть в текстовом редакторе файл backups.yml

  3. Привести файл к следующему виду:

  ---
    BackupsInfo:
    - service_env_name: "ias_app_server"
    name: "Gems.Ias.ApplicationServer"
    description: "WebIsogd Application Server Service"
    workDir: "{{ vGM_INSTALL_DIR }}/AppServer"
    tempDir: "/tmp/AppServer/"
    backup_file_name:
        - "ReportTemplates/gpzu.dotx"
        - "ReportTemplates/rs.dotx"
    backup_dir_name:
        - "appdata/plugins/Agreement"
    - service_env_name: "schema_sync"
    name: "SchemaSync"
    description: "ShemaSync Service"
    workDir: "{{ vGM_INSTALL_DIR }}/SchemaSync"
    tempDir: "/tmp/SchemaSync/"
    backup_file_name:
        - "sync.cfg"
        - "sync.cfg.gen"
        - "appsettings.json"
    backup_dir_name:
        - "data"
#  - service_env_name: "sts"
#    name: "STS"
#    description: "WebIsogd Identity Service"
#    workDir: "{{ vGM_INSTALL_DIR }}/IdentityServer"
#    tempDir: "/tmp/IdentityServer/"
#    backup_file_name: []
#    backup_dir_name: []
#  - service_env_name: "ui_web_ias"
#    name: "UI.Web.IAS"
#    description: "WebIsogd Client Service"
#    workDir: "{{ vGM_INSTALL_DIR }}/UI"
#    tempDir: "/tmp/UI/"
#    backup_file_name: []
#    backup_dir_name: []
#  - service_env_name: "web_importer_ref"
#    name: "WebImporterRef"
#    description: "WebIsogd Importer Service"
#    workDir: "{{ vGM_INSTALL_DIR}}/Importer"
#    tempDir: "/tmp/Importer/"
#    backup_file_name: []
#    backup_dir_name: []
#  - service_env_name: "web_isogd_monitor"
#    name: "WebIsogdMonitor"
#    description: "WebIsogd Monitor Service"
#    workDir: "{{ vGM_INSTALL_DIR }}/Monitor"
#    tempDir: "/tmp/Monitor/"
#    backup_file_name: []
#    backup_dir_name: []
#  - service_env_name: "smev_mezhved"
#    name: "SmevMezhved"
#    description: "SmevMezhved Service"
#    workDir: "{{ vGM_INSTALL_DIR }}/SmevMezhved"
#    tempDir: "/tmp/SmevMezhved/"
#    backup_file_name: []
#    backup_dir_name: []
#  - service_env_name: "grad_signature_service"
#    description: "Signature Service"
#    workDir: "{{ vGM_INSTALL_DIR }}/Signature"
#    tempDir: "/tmp/Signature/"
#    backup_file_name: []
#    backup_dir_name: []
#  - service_env_name: "gems_openoffice"
#    name: "gems.openoffice"
#    description: "Gems OpenOffice Service"
#    workDir: "{{ vGM_INSTALL_DIR }}/OpenOffice"
#    tempDir: "/tmp/OpenOffice/"
#    backup_file_name: []
#    backup_dir_name: []
#  - service_env_name: "cache_monitor"
#    name: "CacheMonitor"
#    description: "Cache Monitor Service"
#    workDir: "{{ vGM_INSTALL_DIR }}/CacheMonitor"
#    tempDir: "/tmp/CacheMonitor/"
#    backup_dir_name: []
#    backup_file_name: []
    - service_env_name: "egrn_importer"
    name: "EgrnImporter"
    description: "Egrn Importer Service"
    workDir: "{{ vGM_INSTALL_DIR }}/EgrnImporter"
    tempDir: "/tmp/EgrnImporter/"
    backup_file_name:
        - "appsettings.json"
    backup_dir_name: []
  1. Сохранить файл и приступить к обновлению Системы.

Подготовка к обновлению Cистемы#

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

  1. Получите установочный пакет, в котором содержатся обновления

  2. Актуальная версия утилиты Ansible находится в установочном пакете. Версия Ansible должна соответствовать версии артефактов.

  3. Замените следующие файлы и каталоги в новой версии Ansible на файлы и каталоги, настроенные под конкретный проект:

  • /ansible/vars.yml;

  • /ansible/inventory/prod/dir_name/, где dir_name - имя директории;

  • ansible/roles/install-ias/vars/backups.yml.

  1. Сформируйте команду обновления системы или отдельных сервисов.

Обновление Системы#

Чтобы обновить Систему:

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

  2. Дождитесь обновления.