Подготовка окружения#

Предварительная подготовка дистрибутива DataGrid#

DataGrid поставляется в виде ZIP-архива, который разделен на:

  • архив с компонентами продукта в ZIP-формате с именем *-owned*.zip; содержит архивы с конфигурациями и бинарными артефактами компонентов;

  • архив с внешними opensource-зависимостями в ZIP-формате с именем *-party*.zip; основная часть — opensource-библиотеки;

  • архив с документацией в ZIP-формате с именем *-doc*.zip; основная часть — документация и метаинформация.

Загрузка, проверка и распаковка архива#

Чтобы получить самодостаточный дистрибутив, который готов к инсталляции и дальнейшему использованию на стороне потребителя, воспользуйтесь скриптом восстановления restore-distrib.sh:

  1. В личном кабинете пользователя скачайте ZIP-архив с дистрибутивом в Nexus:

    • Перейдите в /tmp:

      cd /tmp
      
    • Скачайте ZIP-архив с дистрибутивом:

      Важно

      Замените ссылку в примере ниже на актуальный путь к архиву в Nexus.

      • с помощью curl:

        curl -L -o IGN-XYZ.zip "https://nexus.example.com/repository/releases/IGN-XYZ.zip"
        
      • или с помощью wget:

        wget --no-check-certificate -O IGN-XYZ.zip "https://nexus.example.com/repository/releases/IGN-XYZ.zip"
        
  2. Создайте директорию /tmp/installer/, куда будет распакован ZIP-архив с дистрибутивом:

    mkdir /tmp/installer/
    
  3. Распакуйте ZIP-архив с дистрибутивом в директорию /tmp/installer/:

    unzip IGN-XYZ.zip -d /tmp/installer/
    

    Структура дистрибутива после распаковки:

    ├── IGN-xx.x.x-xx-cyclonedx-distrib.json           // Файл, который содержит список всех зависимостей исходного кода программного продукта.
    ├── IGN-xx.x.x-xx-owned.pom                       // Файл с информацией об артефакте IGN-xx.x.x-xx-owned-distrib.zip.
    ├── IGN-xx.x.x-xx-owned-distrib.zip               // Дистрибутив продукта.
    ├── IGN-xx.x.x-xx-party.pom                       // Файл с информацией об артефакте IGN-xx.x.x-xx-party-distrib.zip.
    ├── IGN-xx.x.x-xx-party-distrib.zip               // Архив со сторонними зависимостями.
    ├── IGN-doc-xx.x.x-xx_xx.pom                      // Файл с информацией об артефакте IGN-doc-x.x.x-xx_xx-distrib.zip.
    ├── IGN-doc-xx.x.x-xx_xx-distrib.zip              // Дистрибутив документации на программный продукт.
    ├── regid.2011-07.ru.sbertech_ign-xx.x.x.swidtag  // SWIDTAG-файл с данными, которые идентифицируют программный продукт.
    └── restore-distrib.sh                           // Скрипт для формирования единого дистрибутива.
    
  4. Перейдите в директорию /tmp/installer/ с помощью команды cd /tmp/installer/ и запустите скрипт ./restore-distrib.sh. Для корректной работы скрипта требуются утилиты операционной системы Linux grep|sed|awk|unzip|zip|jq.

    Скрипт соберет новый ZIP-архив с готовым к инсталляции и использованию дистрибутивом, а также проведет проверку окружения на наличие необходимого программного обеспечения. Если какого-то ПО не хватает, скрипт завершит работу с ошибкой.

    Структура дистрибутива после успешной отработки скрипта restore-distrib.sh:

    ├── IGN-xx.x.x-xx.zip
    └── restore-distrib.sh
    

Настройка окружения#

Общие требования#

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

  • Предоставлен доступ по SSH-соединению между узлами управления Ansible и хостами DataGrid. Инструкции и команды для проверки SSH-соединений для всех задействованных хостов смотрите в разделе «Предварительная подготовка на управляющем хосте».

  • Имеются привилегированные права для разделения задач. Ansible Role для DataGrid поддерживает разделение задач на основе тегов. Задачи разделяются на требующие и не требующие привилегированных прав root. Обратите внимание: на некоторых шагах установки потребуется root-доступ; подробнее смотрите в разделе «Выполнение задач с привилегированными правами (root-доступом)».

Настройка виртуального окружения в Python и установка Ansible#

Для настройки окружения и установки Ansible Role:

  • Установите пакет Ansible 2.9.10. Рекомендуется установить пакет Ansible вместо Ansible Core (ansible-core), который содержит минимальное количество модулей и плагинов. Установка пакета Ansible избавляет от ручной установки дополнительных модулей и плагинов, которые необходимы для DataGrid Ansible Role.

  • Установите виртуальное окружение:

    python -m venv $HOME/python-venv/ansible

  • Активируйте виртуальное окружение:

    source $HOME/python-venv/ansible/bin/activate

  • Установите ansible pip install ansible или pip install ansible с версией 2.9.10:

    pip install ansible == 2.9.10

Подготовка элементов развертывания#

Предварительная подготовка на управляющем хосте#

Подготовка рабочей директории#

В примерах ниже подразумевается, что на управляющем хосте, с которого выполняется установка, рабочей директорией для процесса установки является /tmp/installer/:

  1. Перенесите дистрибутив DataGrid-<version>.zip в /tmp/installer/ на управляющем хосте.

  2. Создайте директорию и распакуйте дистрибутив:

    mkdir -pv /tmp/installer/distrib
    unzip /tmp/installer/Ignite-SE-<version>.zip -d /tmp/installer/distrib/
    
  3. Создайте директорию и распакуйте архив с ansible-сценариями:

    mkdir -pv /tmp/installer/roles
    unzip /tmp/installer/distrib/Ignite-SE-<version>/Ignite-SE-ansibleRole-<version>.zip -d /tmp/installer/roles/datagrid
    

Подготовка файла Ansible-Inventory для установки DataGrid#

  1. Перед запуском Ansible создайте файл инвентаризации, где укажите хосты, на которых будет установлен DataGrid.

  2. Задайте переменные подключения, чтобы узел управления Ansible мог подключаться к каждому хосту DataGrid, и переменную datagrid_java_home.

  3. Создайте файл с описанием конфигурации и переменными inventory.yml:

    cat <<'EOF' > /tmp/installer/inventory.yml
    cluster_datagrid:
      vars:
        ansible_connection: ssh
        ansible_user: sshlogin
        ansible_ssh_pass: sshpsw
        ansible_become_pass: sshpsw
        datagrid_local_distr_path: "Ignite-SE-16.0.0-81-distrib.zip"
        datagrid_java_home: "/usr/lib/jvm/openjdk-11"
      hosts:
        xx.xx.xx.xx:
          ansible_host: "xx.xx.xx.xx"
        xx.xx.xx.xy:
          ansible_host: "xx.xx.xx.xy"
        xx.xx.xx.xz:
          ansible_host: "xx.xx.xx.xz"
    EOF
    
  4. Создайте файл установки install-datagrid.yml:

    cat <<'EOF' > /tmp/installer/datagrid-install.yml
    ---
    - hosts: 'cluster_datagrid'
      tasks:
      - name: "Install DataGrid"
        include_role:
          name: datagrid
        vars:
          datagrid_addresses: "{{ groups[ansible_play_name] }}"
        tags:
        - root
        - datagrid_stop_process
        - datagrid_start_process
        - backup
        - restore
        - clean
        - clean-root
    EOF
    
  5. Создайте файл control-datagrid.yml для проверки состояния, активации, деактивации DataGrid:

    cat <<'EOF' > /tmp/installer/datagrid-control.yml
    ---
    - hosts: 'cluster_datagrid'
      tasks:
      - name: "call control_sh"
        include_role:
          name: "datagrid"
          tasks_from: "control_sh.yml"
    EOF
    

Проверка SSH-соединений#

Чтобы убедиться в подключении Ansible через SSH, выполните команду:

ansible -i /tmp/installer/inventory.yml all -m ping

В результате выполнения команды происходит проверка доступности интерпретатора Python для использования на всех хостах. В случае успешной проверки команда возвращает pong в качестве результата.

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

Выпуск и подготовка сертификатов#

Генерация самоподписанных сертификатов происходит при соблюдении условий:

  • на кластере включен SSL (по умолчанию выключен):

    datagrid_use_ssl: yes

  • не заполнены переменные:

    datagrid_local_ssl_keystore: ""
    datagrid_local_ssl_truststore: ""
    datagrid_local_admin_keystore: ""
    datagrid_local_client_keystore: ""
    datagrid_local_grantadmin_keystore: ""
    
  • заполнена переменная datagrid_keystore_password_for_everyone (на все создаваемые контейнеры устанавливается один пароль); значение по умолчанию:

    datagrid_keystore_password_for_everyone: "Ignite@1"

  • пароль указан в зашифрованном виде, например:

    datagrid_keystore_password_for_everyone: !vault |
      $ANSIBLE_VAULT;1.1;AES256
    **************************
    

Для отключения генерации сертификатов в inventory переопределите и заполните одну из переменных:

datagrid_local_ssl_keystore: "{{ inventory_dir }}/../files/meim_kb/psi/psi-meim_kb-gg_server-keystore.jks"
datagrid_local_ssl_truststore: "{{ inventory_dir }}/../files/meim_kb/psi/psi-truststore.jks"

Чтобы выполнить задание на генерацию сертификатов, проверьте, что:

  • переменные пустые:

    datagrid_local_ssl_keystore: ""
    datagrid_local_ssl_truststore: ""
    datagrid_local_admin_keystore: ""
    datagrid_local_client_keystore: ""
    datagrid_local_grantadmin_keystore: ""
    
  • включен SSL:

    datagrid_use_ssl: yes

  • заполнен пароль:

    datagrid_keystore_password_for_everyone: "Ignite@1

Если условия выполнены, на управляющем сервере создается скрипт из шаблона templates/genCert.sh.j2. Запустите скрипт и передайте параметры:

sh {{ datagrid_local_tmp_path }}/genCert.sh --keyPassword={{ datagrid_keystore_password_for_everyone }} --userIgniteSrv={{ datagrid_userIgniteSrv }} --userIgniteClient={{ datagrid_userIgniteClient }} --userIgniteAdmin={{ datagrid_userIgniteAdmin }} --userIgniteGrantAdmin={{ datagrid_userIgniteGrantAdmin }} --pathWork={{ datagrid_local_tmp_path }} --clusterType={{ datagrid_cluster_type }} --clusterName={{ datagrid_cluster_name }} --csr --pfx

После этого получите keystore и проверьте его наличие на управляющем сервере. Заполните переменные:

datagrid_local_ssl_keystore: "{{ datagrid_userIgniteSrv_path }}"
datagrid_local_ssl_truststore: "{{ datagrid_truststore_path }}"
datagrid_local_admin_keystore: "{{ datagrid_userIgniteAdmin_path }}"
datagrid_local_client_keystore: "{{ datagrid_userIgniteClient_path }}"
datagrid_local_grantadmin_keystore: "{{ datagrid_userIgniteGrantAdmin_path }}"

Схема процесса генерации сертификатов:

Процесс генерации сертификатов