Установка

Скачайте исполняемый файл утилиты updater и юнит-файл updater.service с https://fs.hflabs.ru/%ваш_спейс%/updater/ — если такой папки в вашем спейсе ещё нет, обратитесь в поддержку продукта, для которого используется Апдейтер.

Переместите файл updater в директорию «Апдейтера» и выдайте права на выполнение

mv /tmp/updater /opt/updater/ && chown -R updater:updater /opt/updater/updater && chmod 755 /opt/updater/updater

Переместите юнит-файл updater.service в директорию с юнитами и настройте автозапуск для службы:

mv /tmp/updater.service /etc/systemd/system/ && systemctl daemon-reload && systemctl enable updater.service && systemctl start updater.service

Настройка приложения

Настройки указываются в файле updater.yaml, при первом запуске умолчательный файл конфигурации создается автоматически 

В нём необходимо оставить настройки только для необходимых вам продуктов:

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

  • либо перезапустить службу — systemctl restart updater
  • либо через сваггер или curl вызвать метод info/config
updater.yaml
updater:															# Конфигурация Апдейтера
  updater_username: updater											# Имя пользователя, под которым работает Апдейтер. По умолчанию updater
  artifactory_url: "https://maven.hflabs.ru/artifactory/repo"		# Путь к Artifactory, если используется локальное зеркало, то его необходимо указать здесь, например: artifactory_url: "http://maven.mycorp.ru/artifactory/hflabs-maven-remote" 
  artifactory_auth:													# Учетная запись для авторизации в Artifactory
      username: "user"
      password: "password" 
  auth_encoded: false								            	# Шифрование паролей, по умолчанию отключено (false). Если включать, то нужно прописать все пароли (при их наличии) в зашифрованном виде: artifactory_auth и http_auth, api_password и ssh_password.
  http_auth:														# Список учётных записей для Basic авторизации в Апдейтере. Блок опциональный, если его указать, то в curl запросах нужно дополнительно прописывать -u username:password)
    - username: "hflabs"
      password: "hflabs_key"
    - username: "maintenance"
      password: "maintenance_key"
  check_certificate: true											# Управление проверкой сертификата Artifactory. По умолчанию значение true.                 
  http_timeout: 90													# Таймаут подключений по HTTP в секундах (по умолчанию 90)
  http_proxy: "http://localhost:8080"								# Настройки подключения к прокси-серверу в формате "http://user:password@ipaddress:port"
  download_retries: 5												# Количество попыток переподключения при загрузке (по умолчанию 5) 
  download_rate_limit: 0											# Ограничивает скорость скачивания словарей (указывается в мегабитах в секунду). Значение по умолчанию - 0 (без ограничений).
  log_level: "info"													# Уровень логирования -  ERROR, WARN, INFO, DEBUG (по умолчанию INFO)
  host: "192.168.0.11"												# IP/доменное имя сервера Апдейтера (не указывать localhost, тогда не будет работать swagger нормально)
  port: 3000														# Порт, на котором разворачивается Апдейтер (по умолчанию 3000)

product-local:														# Конфигурация конкретной ноды продукта (название может быть произвольным). Для каждого сервера продукта указывается своя конфигурация.
  product: "factor"													# Название продукта (приложения) из списка — cdi, factor, suggestions, rdm (и коннекторы spark, rfm)
  dictionary_home: "/opt/factor/dictionaries"						# Путь к каталогу со справочниками продукта                          
  username: "factor"												# Имя пользователя под которым работает продукт
  api_url: "http://localhost:18080/factor-service-customer"	    	# Корневой URL для API продукта ("http://host:port/cdi", "http://host:port/suggestions" и т.д)
  build: "24.8"														# Выставление версии приложения вручную. Не рекомендуется выставлять, если у Апдейтера есть доступ к API продукта (почти всегда есть) 

product-remote:													   	# Конфигурация конкретной ноды продукта (название может быть произвольным). Для каждого сервера продукта указывается своя конфигурация.
  product: "cdi"													# Название продукта (приложения) из списка — cdi, factor, suggestions, rdm (и коннекторы spark, rfm)
  dictionary_home: "/opt/cdi/dictionaries"			    			# Путь к каталогу со справочниками продукта
  shared_directory: false											# Является ли каталог со справочниками продукта сетевой папкой (по умолчанию false)                                    
  username: "cdi"					    							# Имя пользователя под которым работает продукт
  api_url: "http://ip-host:8080/cdi"	 			                # Корневой URL для API продукта ("http://host:port/cdi", "http://host:port/suggestions" и т.д)
  api_username: "external_system"									# Имя пользователя для авторизации в API продукта (если требуется)
  api_password: "123456"											# Пароль пользователя для авторизации в API продукта (если требуется)
  with_root: false													# Использовать ли команду chown для изменения прав на справочники (по умолчанию false)
  ssh_host: "ip-host"										        # Хост для подключения по SSH (обязательно указать, если продукт находится на удаленном сервере)
  ssh_port: 22												   		# Порт для подключения по SSH (по умолчанию 22)
  ssh_username: "updater"   		    					    	# Имя пользователя для авторизации SSH
  ssh_auth_via_pass: false											# Переключение способа авторизации SSH (по умолчанию false, беспарольная авторизация через ключ) 
  ssh_password: "123"												# Пароль пользователя для авторизации SSH
  ssh_key_path: "/home/updater/.ssh/rsa"							# Путь к приватному ключу для беспарольной авторизации SSH
  

Как получить пароль в зашифрованном виде

Выполнить команду в консоли на сервере Апдейтера: 

./updater --encrypt <пароль_который_нужно_зашифровать>

Полученную шифрованную версию пароля вписать в updater.yaml в соответствующий параметр.

Повторить для всех паролей:

  • artifactory_auth и http_auth — в настройках updater;
  • api_password и ssh_password — в настройках всех продуктов.

Шифрование осуществляется через 256-bit AES-GCM + base64.


Настройка справочников

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

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

Пример для каждого продукта:

dictionaries.json
[
  {
    "tag": "cdi_egrnorm",
    "path": "ru/hflabs/factor/dictionary/egr-cdi-norm",
    "local_path": "egr",
    "name_tmpl": "egr-cdi-norm-{metaDate}.dic",
    "task_name": "EgrDictionaryImport"
  },
  {
    "tag": "factor_flatarea",
    "path": "ru/hflabs/factor/index/index_flatArea",
    "name_tmpl": "index_flatArea-{build}-{metaDate}.idx",
    "with_build_version": true,
    "factor_name": "flatArea"
  },
  {
    "tag":"suggestions_eas",
    "path": "ru/hflabs/dictionary/sgt-gar-eas/",
    "local_path": "address",
    "name_tmpl": "sgt-gar-eas-{metaDate}.zip",
    "task_name": "address",
    "secondary_tags": [
            "suggestions_geo",
            "suggestions_house",
            "suggestions_iso3166"],
     "dependent_tags": [
             "suggestions_flat",
             "suggestions_stead"
  ]
  },
  {
    "tag":"rdm_bic",
    "path":"ru/hflabs/rdm/bic/",
    "local_path":"bic",
    "name_tmpl":"bic-{metaDate}.csv",
    "task_name": "d40ec606-0b9e-451d-a419-84fee93a21e3"
  }
]

Настраиваемые параметры:

НазваниеОписаниеПо умолчанию
tagНазвание справочника в формате "продукт_имя".
Продукт может принимать одно из значений: cdi, factor, suggestions, rdm

pathПуть к директории с разными версиями этого словаря в Artifactory после значения ARTIFACTORY_PATH из конфига updater.yaml
local_pathПуть относительно домашней директории продукта (FACTOR_DICTIONARY_HOME / SUGGESTIONS_DICTIONARY_HOME / CDI_DICTIONARY_HOME), куда нужно положить справочник.
Если пустой, справочник будет размещен в корне домашней директории.

name_tmplШаблон имени справочника.
В него будет подставляться версия (в формате yyyymmdd) и, если предусмотрено, билд продукта

with_build_versionИспользуется для простановки в шаблон (name_tmpl) версии продукта в поле {build}. Сама версия запрашивается по API продуктаfalse
unzipТребуется ли распаковка справочника после скачивания.
Для всех базовых справочников ЕК, Фактора и Подсказок распаковка по умолчанию не требуется.
false
incrementПризнак, указывающий на то, что данный справочник является инкрементальным (справочники компаний для ЕК и Подсказок)false

task_name

Название сервиса/задачи, которые будут инициированы по API для обновления справочника.

Указывается в зависимости от продукта:

  • для Фактор — значение dictionary.name (будет запущено через API горящее обновление справочника)
  • для ЕК/ЕА — название задачи (напр EgrDictionaryImport), которую надо вызвать через API во время команды upload
  • для Подсказок — значение names (префикс названия сервиса обновления справочника)

external

Определяет, является ли справочник внешним, влияет на update и unzip.

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


secondary_tags

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

Например: suggestions_eas или suggestions_party (для него вспомогательный suggestions_partyext обязательный, поэтому по умолчанию всегда загружаются вместе)


dependent_tags

Список зависимых справочников, которые не нужно скачивать отдельно (они упакованы в основной), но для их загрузки в продукт нужно вызывать отдельный сервис


depends_on

Указывает на то, от какого справочника зависит текущий, предназначен для зависимых справочников, таких как suggestions_flat и suggestions_stead

Для внутренних настроек.


secondary_on

Указывает на то, от какого справочника зависит текущий, предназначен для вспомогательных справочников, таких как suggestions_geo, suggestions_house, suggestions_iso3166

Для внутренних настроек.



  • Нет меток