Подготовка окружения#
Предварительная подготовка дистрибутива DataGrid#
DataGrid поставляется в виде ZIP-архива, который разделен на:
архив с компонентами продукта в ZIP-формате с именем
*-owned*.zip; содержит архивы с конфигурациями и бинарными артефактами компонентов;архив с внешними opensource-зависимостями в ZIP-формате с именем
*-party*.zip; основная часть — opensource-библиотеки;архив с документацией в ZIP-формате с именем
*-doc*.zip; основная часть — документация и метаинформация.
Загрузка, проверка и распаковка архива#
Чтобы получить самодостаточный дистрибутив, который готов к инсталляции и дальнейшему использованию на стороне потребителя, воспользуйтесь скриптом восстановления restore-distrib.sh:
В личном кабинете пользователя скачайте 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"
Создайте директорию
/tmp/installer/, куда будет распакован ZIP-архив с дистрибутивом:mkdir /tmp/installer/Распакуйте 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 // Скрипт для формирования единого дистрибутива.Перейдите в директорию
/tmp/installer/с помощью командыcd /tmp/installer/и запустите скрипт./restore-distrib.sh. Для корректной работы скрипта требуются утилиты операционной системы Linuxgrep|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/:
Перенесите дистрибутив
DataGrid-<version>.zipв/tmp/installer/на управляющем хосте.Создайте директорию и распакуйте дистрибутив:
mkdir -pv /tmp/installer/distrib unzip /tmp/installer/Ignite-SE-<version>.zip -d /tmp/installer/distrib/Создайте директорию и распакуйте архив с
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#
Перед запуском Ansible создайте файл инвентаризации, где укажите хосты, на которых будет установлен DataGrid.
Задайте переменные подключения, чтобы узел управления Ansible мог подключаться к каждому хосту DataGrid, и переменную
datagrid_java_home.Создайте файл с описанием конфигурации и переменными
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Создайте файл установки
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Создайте файл
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 }}"
Схема процесса генерации сертификатов:
