Публичное пространство

Глобальное обновление касс на TinyCore8 (PostgreSQL 11) инструментом Jenkins

  • Инструмент предназначен для обновления касс в крупных торговых сетях.
  • Для получения информации по обновлению этим инструментов обратитесь к вашему менеджеру.

Требования к обновлению

Внимание!

  • Инструмент производит обновление касс только с версии СУБД PostgreSQL 9.4 на 11!
  • Если на кассе установлена версия TinyCore 8.X.X + PostgreSQL 11, то инструмент не произведет обновление версии ОС на новые.

Обновление выполняется при соблюдении следующих требований:

  • Смены на кассе закрыты.
  • Отсутствуют неотправленные документы: чеки, Z-отчеты, внесения, изъятия.
  • Кассовый модуль не находится в состоянии ожидания обновлений на следующую версию.
  • На жестком диске кассы более 3Гб и более свободного пространства.
  • Скорость внутренней локальности стабильна для передачи большого объема данных

Банковкий модуль АРКУС

  • Перед основным процессом перехода на TinyCore8 согласуйте обновление процессинга АРКУС (АРКОМ) с банком.
  • Банковский модуль работавший под TinyCore3 после обновления на TinyCore8 функционировать не будет!

Образ c инструментом обновления

Требования к инструменту

  • Виртуальная машина в торговой сети магазина
  • Установить инструмент можно на любой сервер SetCentrum CentOS7
  • Для установки образа можно установить сервер SetRetail под CentOS7 согласно инструкции.
  • Системные требования:
    • Свободное место на жестком диске 2Гб.

    • Количество ядер CPU = 2.

    • Объем оперативной памяти (RAM) = 2Гб минимум.

  • Доступ с сервера на котором развернут инструмент к:

    • Серверу SetCnetrum центрум и серверам магазинов по порту 5432 (порт PostgreSQL).

    • Доступ до касс по порту 22 (ssh).

    • Доступ до касс по порту 5432 (порт PostgreSQL).

Установка

1. Загрузите файл скрипта установки jenkins-ansible-update_tc.sh в папку /root на сервер с CentOS7.

2. Загрузить файл можно с помощью сеанса WinSCP из SetConsole.

3. В разделе Сервер введите данные для подключения к серверу → нажмите .

Учетная записья для доступа загрузки:

  • Логин: root
  • Пароль: <уточните в службе поддержки CSI>

2. Выделите файл jenkins-ansible-update_tc.sh → нажмите клавишу F5 → назжмите .

3. Дождитесь окончания процесса копирования.

4. Подключитесь с помощью сеанса SSH к серверу:

5. Выполните команду для установки инструмента:

sh ./jenkins-ansible-update_tc.sh

6. Дождитесь окончания установки:

7. После окончания установки наберирте адрес в браузере http://XXX.XXX.XXX.XXX:8080 

Настройка инструмента

1. Откройте веб-браузер → наберите адрес в формате http://XXX.XXX.XXX.XXX:8080 → введите логин и пароль → нажмите .

  • Логин: tc
  • Пароль: <уточните в службе поддержки CSI>

2. Кликните  .

3. Кликните .

4. Прокрутите страницу до секции Глобальные настройки → введите в поле значение IP-адрес сервера SetCentrum, с которого будет производиться сборка IP-адресов касс → нажмите .

  • Вводится IP-адрес сервера SetCentrum на котором располагается его база данных.
  • Если серверное приложение и база данных сервера разделены, тогда вводится IP-адрес сервера баз данных.
  • Используется IP-адрес только сервера SetCentrum.

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

Прокрутите страницу до секции Extended E-mail Notification → введите в поле SMTP server адрес SMTP-сервера исходящих сообщений → нажмите .

6. В поле User Name введите адрес электронной почты или имя пользователя для SMTP-авторизации → в поле Password нажмите  и введите пароль → нажмите .

7. Настройте адрес электронной почты на которую будут отправляться сообщения о статусе работ системы обновления.

Кликните в правом верхнем углу по названию пользователя .

8. Кликните .

9. В секции Адрес электропочты → В поле E-mail адрес введите адрес электронной, на который будут отправляться уведомления о статусе работ → нажмите .

10.  Если у вас установлен пароль к базе данных СУБД PostgreSQL сервера SetCentrum не postgres, тогда выполните его настройку.

Кликните  .

11. Кликните .

12. Рядом с ссылкой  кликните элемент → выберите пункт .

13. Нажмите .

14. ведите пароль от СУБД PostgreSQL сервера SetCentrum → нажмите .

15. Отобразится стандартное сообщение Jenkins, тем не менее данные для подключения к серверу СУБД PostgreSQL SetCentrum будут сохранены.

Обновление

Внимание!

Обновление выполняется в строгой последовательности по инструкции.

Последовательность

  • Шаг 1. AllGetCashInfo - Выполняется сбор информации по IP-адресам касс с сервера SetCentrum.
  • Шаг 2. DeliveryUpdate - Загрузка патча обновления на доступные кассы в сети.
  • Шаг 3. InstallUpdate - Запуск команды на обновление касс.

Основные шаги

Откройте веб-браузер → наберите адрес в формате http://XXX.XXX.XXX.XXX:8080 → введите логин и пароль →  нажмите .

  • Логин: tc
  • Пароль: <уточните в службе поддержки CSI>

Шаг 1. AllGetCashInfo - получение списка касс

1. Запустите проверку списка IP-адресов касс на основании данных из SetCentrum → кликните  в строке с проектом AllGetCashInfo.

2. Запуститься задание (job) для бора информации об IP-адресах касс сервера SetCentrum.

Кликните на запущенное задание или на проект AllGetCashInfo.

3. В секции Stage View отобразится время обработки задания.

4. Кликните по заданию.

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

Кликните на один из лог-файлов для просмотра информации:

Лог-файлНазначениеОписание

error.log

Отображаются ошибки при попытке обработки информации сервера SetCentrum:

При некорректном IP-адресе SetCentrum, отобразится ошибка подключения.

Если введен неверный пароль к СУБД PostgreSQL, отобразится ошибка подключения.

Если недоступен сервер(а) SetRetail, отобразится, о том к каким из них невозможно подключиться, тогда появится запрос:

  • Продолжить с собранным IP-адресов касс или попробовать еще раз. И так до того момента, пока или пользователь не прервет работу задачи или, не подтвердит действие или не соберет все IP-адреса.
hosts.logОтобразиться список собранных IP-адресов касс или серверов.

По результатам выполнения задания будет отправлено сообщение на почту:

Шаг 2. DeliveryUpdate - получение списка касс

1. Следующим шагом запустите доставку патча обновления на кассы.

Кликните Jenkins.

3. Запустите доставку патча на кассы → кликните  в строке с проектом DeliveryUpdate.

4. Введите в поле shopNumber номера магазинов через запятую, или, если требуется обновить кассы на всех значение all (Все значения вводятся без кавычек) → нажмите .

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

Если какие-то кассы будут недоступны, тогда нажмите на.

Прокрутите до конца страницы → кликнитке .

Отобразаится список недоступных касс:

  • Если требуется повторить доставку, тогда оставьте список касс → нажмите .
  • Если на данный список касс не требуется повторной доствки, тогда удалите его → нажмите .

Логика работы DeliveryUpdate:

  1. На вход введены индексы магазинов или параметр для всех.
  2. Осуществляется выборка касс по фильтру из файла который сформирован заданием.
  3. Далее осуществляется выборка разрезе каждого отдельного магазина.
  4. Внутри списка касс (отсортированных по номеру кассы) магазина выбирается касса подходящая по следующим параметрам:
    1. Касса отвечает.
    2. Достаточно места на диске.
    3. Патч обновление уже есть на кассе.
  5. Если пункты 4.b. и 4.c. выполнены успешно, тогда мастер-кассой (касса с которой будет производиться загрузка обновлений на остальные кассы магазина) признается основной первая из ответивших касс
    1. Если только по одной - именно она.
    2. Если условие 4.с. не удовлетворен нигде, тогда мастер-кассой становится первая из ответивших с выполненным условием пунктом 4.b.
  6. Если условия в пунктах 4.a. и 4.b. не выполнены, тогда система повторяет попытку загрузки патча.
  7. На выбранные мастер-кассы (касса с которой будет производиться загрузка обновлений на остальные кассы магазина) загружается файл обновления.
    1. Если доставка оборвалась в процессе загрузки, тогда попытка загрузки на мастер-кассу и все остальные повторяется.
  8. После доставки файла обновления все кассы магазина пытаются синхронизировать с мастер-кассой.
    1. Если во время этой попытки касса не доступна, или возникла какая-то ошибка, тогда повторяется попытка загрузки все кассы магазина.
  9. После попытки доставки на мастер-кассы и вторичные для магазинов, создается лог-файл с результатами доставки.
  10. В процессе доставки, в случае недоступности некоторых касс пользователю выдается запрос, в котором он, может удалить из списка, те кассы, что нужны (Например: есть точная информация, что данной кассы на магазине нет, но по какой-то причине её намеренно оставили в активных).
  11. Если пользователь течение часа не ответил на запрос, тогда автоматически прекращается ожидание ответа от него и начинается попытка с тем списком, который отдавался в форму на редактирование.
    1. Если после очередной попытки доставки список касс для обновления оказывается пустым, тогда задание считается выполненным (в том числе и при ручном удалении касс из списка пользователем), и доставка считается успешно осуществленной на все кассы.

11. По окончании процесса в секции Stage View отобразится итоговое время выполнения → кликните по заданию для просмотра подробной информации.

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

Кликните на один из лог-файлов для просмотра информации:

Лог-файлНазначение
circulation_delivery_master/ansible.logЛог-файл доставки обновления на мастер-кассы (1-я касса в списке с которой будет распространяться обновление на другие кассы одного магазина) с помощью средства выполнения сценариев Ansible.
circulation_delivery_master/failedHosts.txt

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

Результатом файла является обработка списка хостов с ошибкой из ansible.log

circulation_delivery_slave/ansible.log Лог-файл доставки обновления на всех касс, кроме мастер-кассы с помощью средства выполнения сценариев Ansible.
circulation_delivery_slave/failedHosts.txt

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

Результатом файла является обработка списка хостов с ошибкой из ansible.log

failedDelivery.txtОбщий список всех касс, на которые не удалось доставить патч обновления.
readyToUpdate.txtОбщий список всех касс, готовых к обнолвению.
retailsWithoutMasterCash.txt Список серверов SetRetail, на которых не удалось создать мастер-кассу.

Шаг 3. InstallUpdate - запуск обновления

1. Следующим шагом запустите обновление касс.

Кликните Jenkins.

2. Запустите обновление касс → кликните  в строке с проектом InstallUpdate.

3. Если требуется ввести дополнительные IP-адреса касс для обновления, тогда заполните поле circulationHosts (каждый IP-адрес с новой строки). 

Для запуска обновления нажмите .

4. Запустится задание на обновление касс. Дождитесь окончания процесса.

Логика работы:

  1. Осуществляется циклическая работа пока все кассы из списка не будут обновлены.
  2. Список касс для обновления формируется на основе результата Шага 2. DeliveryUpdate, и берется из этой работы автоматически, но только из последней удачно-завершенной задачи с индикатором .
  3. Во время запуска процесса обновления на осуществляется следующая последовательность шагов:
    1. Проверка доступности кассы в сети.
    2. Требуется ли обновлять кассу или нет.
      1. Если касса не требует обновления, тогда она считается успешно обновленной.
      2. В случае если касса требует обновления, тогда запускается механизм проверки возможности обновления в текущий момент.
    3. Когда касса готова к обновлению, выполняются шаги по проверке на кассе:
      1. Смена закрыта
      2. Достаточно свободного места на диске
      3. На кассе нет незавершенных обновлений для кассового модуля
      4. Касса в рабочем режиме.
  4. При положительно-выполненных условиях пунктах 4.с.i, 4.с.iI, 4.с.iii, 4.с.iv, на кассу загружается файл, который запускает обновление, после чего, касса перезагружается полностью.
  5. После перезагрузки касса еще раз проверяет все параметры 4.с.i, 4.с.iI, 4.с.iii, 4.с.iv, и при положительном результате, запускается скрипт обновления.
  6. Если не выполнены пункты или один из них (4.с.i, 4.с.iI, 4.с.iii, 4.с.iv), позволяющие обновиться, попытка обновления повторяется.
  7. Пользователю отправляется список касс для редактирования с ожиданием ввода 1 час, после чего, система будет счиать, что пользователь нажал "Повторить обновление".
  8. Все работы обновления и доставки ориентированы на достижение максимального результата.

5. После того, как команда на обнолвение будет выполнена по всем кассам, на электронный адрес будет отправлено письмо с требованием дейтствий → кликните по ссылке Требуется действие.

Или кликните по активной работе:

Кликните .

6. В окне запроса будет предложено добавить еще кассы для обновления, но в данном случае, нажмите кнопку  для проверки статуса обновления касс. 

Запрос на ввод параметром и проверки статуса обновления будет появляться в система 1 раз в час и отправляться на электронную почту с требовнаием действий.

7. Начнется процесс проверки обновления касс. Если процесс обновления на кассах завершен успешно тогда, на электронную почту будет отправлено сообщение об успешном выполнении задачи:

Успешно-выполненная задача отобразится индикатором следующего вида:.

Кликните на один из лог-файлов для просмотра информации:

Лог-файлНазначение
cashesCheckFailed.txtСписок касс, которые не удалось проверить.
circulation_checkinging/ansible.log

Лог проверки касс Ansible.

circulation_checkinging/failedHosts.txtСписок касс в результе проверки Ansible.
circulation_update/ansible.log

Лог выполнения процесс обновления Ansible

circulation_update/failedHosts.txtСписок касс по результатам выполения Ansible, на которых не удалось запустить обнолвние
updatingCashes.txtОбщий список всех касс, на которых не удалось запустить обнолвние

8. Обновление завершено.

Дополнительная информация

Настройка параметров безопасности для отправки писем через SMTP-сервер почтовой службы GMail (Google)

По умолчанию в учетной записи, которая использует движок GMail (корпоративная или частная), отключена возможность подключения любых веб-приложений для отправки почты, используя SMTP-сервер.

1. Войдите под своей учетной записью.

2. Перейдите по ссылке https://myaccount.google.com/u/2/lesssecureapps

3. Активируйте параметр "Ненадежные приложения, у которых есть доступ к аккаунту".

© 1994-2023, ООО «Кристалл Сервис Интеграция».
Все права защищены..

Политика обработки персональных данных