Отказоустойчивая инсталляция на несколько ВМ

Развертывание BI.ZONE PAM в отказоустойчивой конфигурации на нескольких виртуальных машинах осуществляется с помощью Ansible-плейбуков из репозитория. Схема предполагает установку на несколько ВМ для изоляции компонентов основных компонентов PAM, Vault, воркеров, баз данных, NFS и внешнего балансировщика.

Этот способ инсталляции рекомендуется для промышленной эксплуатации. Для тестов используйте Docker Compose.

Если вы планируете использовать PostgreSQL или S3-хранилище как сервис (вместо NFS), сконфигурируйте ansible-плейбуки в соответствии с вашими потребностями.

Поддерживаемые ОС

  • ALT SP Server VERSION 10.2

  • Astra linux SE 1.8

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

  • Виртуальные машины в кластере должны соответствовать минимальным требованиях к отказоустойчивой инсталляции.

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

    Часть ПО, необходимого для работы PAM в отказоустойчивом режиме, берется из этих внутренних репозиториев, например Docker, Nginx, HAProxy, PostgreSQL.

  • Docker-образы сервисов PAM можно:

    • разместить в docker-репозитории — с указанием адреса в ansible-переменных скриптов деплоя;

    • загрузить на конечные ВМ вручную.

  • Балансировка между активными виртуальными машинами должна выполняться средствами отдельного балансировщика или с использованием VIP в системе виртуализации, для настройки keepalived.

Структура репозитория

Ниже описана кратная структура репозитория Ansible PAM Deploy repo:

  • ansible_logs — логи Ansible-выполнений.

  • images/ — docker-образы PAM.

  • files/static/web-site/ — статические файлы веб-портала PAM.

  • hosts/$ORGANIZATION_NAME/ — описание окружения (example — шаблон).

    • files/certs/ — самоподписные сертификаты УЦ.

    • terraformstates/ — state для Vault/Keycloak.

    • vault_token/init.keys — root-токен Vault.

    • worker-rdp/dhparams.pem — ключ Diffie-Hellman.

    • worker-ssh/*.key — ключи SSH.

    • inventory/inventory.yml — IP-адреса ВМ.

    • group_vars/all/00-all.yml — Основные переменные.

    • group_vars/all/01_sensetive.yml — Чувствительные данные (пароли).

    • group_vars/all/02-service-users.yml — UID/GID сервисов.

Подробная структура репозитория — в разделе Структура репозитория.

Установка

  1. Скопируйте директорию images/ на каждую ВМ кластера, либо разместите в отдельном docker-репозиторий.

  2. Загрузите образы в локальный в локальный репозиторий на каждой машине:

    for i in $(ls); do docker load < $i; done
  3. Создайте файл с паролями .passwords в корне ansible-скриптов установки:

    ansible_user: user # SSH-логин для подключения к ВМ кластера PAM. ansible_ssh_pass: P@ssw0rd # SSH-пароль пользователя (если не используется ключ) ansible_become_password: P@ssw0rd # Sudo-пароль
  4. Загрузите docker-образ для разворачивания PAM в локальный репозиторий или на отдельную машину, где будет выполняться установка:

    docker load < images/deploer_$VERSION.tar.gz # Версия меняется и зависит от дистрибутива в директории images
  5. Скопируйте шаблон окружения. $ORGANIZATION_NAME — это название окружения.

    cp -rp hosts/example hosts/$ORGANIZATION_NAME
  6. Заполните переменные в файлах:

    • hosts/$ORGANIZATION_NAME/inventory/inventory.ymlansible inventory с указанием ip-адресов ВМ.

    • hosts/$ORGANIZATION_NAME/inventory/group_vars/all/00-all.yml — основные vars с указанием ansible-переменных деплоя.

      Обязательно должны быть заполнены:

      • pam_domain_name — DNS имя для доступа PAM.

      • lb_extarnal_pam — адрес внешнего балансировщика. Указывается тот же IP-адрес, что и в файле hosts/$ORGANIZATION_NAME/inventory/inventory.yml.

    • hosts/$ORGANIZATION_NAME/inventory/group_vars/all/01_sensetive.yml — файл с чувствительными данными (паролями сервисов). Для каждого окружения должны генерироваться новые пароли.

  7. Запустите плейбук установки окружения. Вы можете выполнить полную установку или пошаговую, для отладки.

Полная установка

Чтобы выполнить полную установку, запустите плейбук с аргументом —all :

./pam-deploy.sh --all example '--user user --extra-vars "@.passwordds" --diff'

Ansible последовательно выполнит все плейбуки: генерацию сертификатов, установку БД, NFS, балансировщика и PAM.

Пошаговая установка

Пошаговый запуск можно использовать для отладки или кастомизации. Например, есть в NFS плейбуке есть ошибка, исправьте параметры плейбук и запустите только —nfs.

  1. Запустите плейбук генерации SSL-сертификатов:

    ./pam-deploy.sh --certs example '--user user --extra-vars "@.passwordds" --diff'

    Сертификаты будут сформированы и помещены в директорию hosts/example/files/certs.

  2. Запустите плейбук установки postgresql:

    ./pam-deploy.sh --postgres-db example '--user user --extra-vars "@.passwordds" --diff'
  3. Запустите плейбук установки nfs-сервера и клиента:

    ./pam-deploy.sh --nfs example '--user user --extra-vars "@.passwordds" --diff'
  4. Запустите плейбук установки внешнего балансировщика:

    ./pam-deploy.sh --external-lb example '--user user --extra-vars "@.passwordds" --diff'
  5. Запустите плейбук установки pam:

    ./pam-deploy.sh --pam example '--user user --extra-vars "@.passwordds" --diff'

Результат

По окончанию установки будет настроен полный кластер ВМ. Портал PAM будет доступен по доменному имени, которое указано в переменной pam_domain_name файла 00-all.yml.

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