Отказоустойчивая инсталляция на несколько ВМ
Развертывание BI.ZONE PAM в отказоустойчивой конфигурации на нескольких ВМ используются Ansible-плейбуки из репозитория. Подробная структура — в разделе Структура дистрибутива.
Схема предполагает установку на несколько ВМ для изоляции компонентов основных компонентов PAM, Vault, воркеров, баз данных, NFS и внешнего балансировщика.
Этот способ инсталляции рекомендуется для промышленной эксплуатации. Для тестов используйте дистрибутив Docker Compose.
Если вы планируете использовать PostgreSQL или S3-хранилище как сервис (вместо NFS), сконфигурируйте ansible-плейбуки в соответствии с вашими потребностями.
Поддерживаемые ОС
ALT SP Server VERSION 10.2
Astra linux SE 1.8
Требование к инфраструктуре
Перед началом установки убедитесь, что:
Виртуальные машины в кластере соответствуют минимальным требованиях к отказоустойчивой инсталляции.
На виртуальных машинах подключены стандартные общедоступные или внутренние репозитории ПО для используемой версии операционной системы.
Docker-образы компонентов PAM можно разместить в Docker-репозитории с указанием адреса в ansible-переменных, либо доступны для загрузки на конечные ВМ вручную.
Для балансировки между активными ВМ используется внешний балансировщик или VIP-адрес в системе виртуализации (для настройки Кeepalived).
Docker, Nginx, HAProxy, PostgreSQL и другое необходимое программное обеспечение устанавливаются из репозиториев операционной системы.
Работа с PostgreSQL
Плейбуки развертывания PAM поддерживают два варианта работы с базой данных PostgreSQL:
Непосредственное подключение к PostgreSQL или через отдельный балансировщик.
Для базы данных может быть настроено несколько реплик.
В конфигурационном файле
hosts/example/inventory/group_vars/all/00-all.ymlзакомментируйте или оставьте переменную пустой:postgres_ha_vip: ""Подключение к отказоустойчивому кластеру PostgreSQL через VIP-адрес.
Укажите VIP-адрес, по которому доступно подключение к базе данных:
postgres_ha_vip: 10.8.176.202
Настройка потоковой репликации PostgreSQL и развертывание отказоустойчивого кластера PostgreSQL средствами плейбуков не предусмотрены. Кластер может быть построен, например, с использованием HAProxy, Keepalived, Patroni и etcd/Consul.
Развертывание окружения
Развертывание окружения PAM выполняется с помощью скрипта pam-deploy.sh.
Команда развертывания
Скрипт принимает три аргумента:
Плейбук — определяет компонент или набор компонентов для установки.
Окружение — имя окружения, описание которого находится в каталоге
hosts.Дополнительные параметры Ansible — позволяют передать дополнительные параметры плейбуку, например указать пользователя для SSH-подключения или файл с паролями.
Пример команды
./pam-deploy.sh --pam example '--user user --extra-vars "@.passwordds" --diff'
Доступны следующие плейбуки:
--certs— генерация самоподписных сертификатов для окружения PAM.--postgres-db— установка PostgreSQL.--postgres-db-init— инициализация базы данных PAM.--nfs— установка NFS-сервера на отдельной ВМ и клиентов на основных нодах.--external-lb— установка внешнего балансировщика HAProxy на отдельной ВМ.--pam— установка PAM на нодах, указанных вinventory.--events— установка компонентов для отправки событий аудита.--all— плейбук установки всего окружения. Включает в себя последовательный запуск всех плейбуков.
Подготовка окружения
Перед установкой подготовьте Docker-образы, учетные данные для подключения и описание окружения.
Подготовьте Docker-образы. Скопируйте Docker-образы из директории
imagesна виртуальные машины кластера PAM или разместите их в Docker-репозитории.Если образы размещены локально, загрузите их на каждую виртуальную машину:
for i in $(ls); do docker load < $i; doneКоманду необходимо выполнить в директории с файлами образов.
Также загрузите Docker-образ, используемый для развертывания PAM, на машину, с которой будет выполняться установка:
docker load < images/deploer_$VERSION.tar.gz$VERSIONсоответствует версии дистрибутива и зависит от поставляемого комплекта.Подготовьте файл с паролями. В корне директории с Ansible-скриптами создайте файл с учетными данными, например
.passwordds:ansible_user: user # имя пользователя для ssh подключения на ВМ кластера PAM. ansible_ssh_pass: P@ssw0rd # ssh пароль пользователя для подключения на ВМ кластера PAM (если аутентификация осуществляется по паролю). ansible_become_password: P@ssw0rd # пароль для перехода в режим sudo на ВМ кластера PAM.Параметры используются для подключения к виртуальным машинам и получения прав суперпользователя.
Если для SSH-подключения используется аутентификация по ключу,
ansible_ssh_passне требуется.Подготовьте описание окружения. Скопируйте пример описания окружения:
cp -rp hosts/example hosts/$ORGANIZATION_NAMEВместо
$ORGANIZATION_NAMEукажите имя окружения.Заполните параметры в следующих файлах:
hosts/$ORGANIZATION_NAME/inventory/inventory.yml hosts/$ORGANIZATION_NAME/inventory/group_vars/all/00-all.yml hosts/$ORGANIZATION_NAME/inventory/group_vars/all/01_sensetive.ymlВ
inventory.ymlукажите IP-адреса виртуальных машин.В
00-all.ymlукажите параметры развертывания. Обязательно задайте:pam_domain_name— DNS-имя, по которому доступен PAM;lb_extarnal_pam— адрес внешнего балансировщика или VIP-адрес при использовании Keepalived. Адрес должен соответствовать адресу вinventory.yml.
В
01_sensetive.ymlукажите пароли сервисов.Для каждого окружения необходимо задать собственные значения всех переменных с чувствительными данными.
Установка
Окружение можно установить полностью или запускать плейбуки последовательно.
Полная установка
Для последовательного запуска всех плейбуков выполните:
./pam-deploy.sh --all example '--user user --extra-vars "@.passwordds" --diff'
Пошаговая установка
Если необходимо запускать плейбуки отдельно, выполните их в следующем порядке.
1. Генерация сертификатов
./pam-deploy.sh --certs example '--user user --extra-vars "@.passwordds" --diff'
Сертификаты будут сформированы и сохранены в hosts/example/files/certs.
Для принудительного перевыпуска сертификатов добавьте параметр -e "{force_renew: true}". Например:
./pam-deploy.sh --certs example '--user user --extra-vars "@.passwordds" --diff -e "{force_renew: true}"
2. Установка PostgreSQL
./pam-deploy.sh --postgres-db example '--user user --extra-vars "@.passwordds" --diff'
3. Инициализация базы данных PAM
./pam-deploy.sh --postgres-db-init example '--user user --extra-vars "@.passwordds" --diff'
4. Установка NFS-сервера и клиентов
./pam-deploy.sh --nfs example '--user user --extra-vars "@.passwordds" --diff'
5. Установка внешнего балансировщика
./pam-deploy.sh --external-lb example '--user user --extra-vars "@.passwordds" --diff'
6. Установка PAM
./pam-deploy.sh --pam example '--user user --extra-vars "@.passwordds" --diff'
7. Установка компонентов отправки событий аудита PAM
./pam-deploy.sh --events example '--user user --extra-vars "@.passwordds" --diff'
Для управления отдельными компонентами аудита можно использовать следующие теги:
-t docker— установка или реконфигурация Docker.-t kafka— установка Kafka.-t kafka-topics— развертывание или реконфигурация топиков Kafka.-t debezium— установка Kafka-коннектора Debezium.-t debezium-connector-deploy— развертывание или реконфигурация коннекторов Kafka Debezium.-t event-sender— установка сервиса Event Sender.-t vault-audit-enable— включение аудита на нодах Vault.-t vault-audit-disable— выключение аудита на нодах Vault.-t logrotate— настройка ротации файлов с событиями аудита на нодах Vault.
Результат
По окончанию установки будет настроен полный кластер ВМ. Портал PAM будет доступен по доменному имени, которое указано в переменной pam_domain_name файла 00-all.yml.
Войдите в PAM под учетной записью администратора, добавьте балансировщик и воркеры, создайте объекты для работы подключения.