Установка через ansible
Набор ролей для установки Zakroma Storage, Zakroma ZDS, Keycloak и Nginx
Данная инструкция поможет развернуть объектное хранилище ЗАКРОМА с помощью Ansible-ролей. В архиве находится 5 ролей:
1- certificates (копирование сертификатов на целевые хосты). 2- nginx (установка и конфигурирование nginx). 3- keycloak (установка и конфигурирование keycloak). 4- zakroma-storage (установка и конфигурирование Закрома Storage, основные сервисы). 5- zakroma-zds (установка и конфигурирование Закрома ZDS, это сервис для подключения нижнего слоя хранения).
Структура
1. 2├── ansible.cfg 3├── collections 4│ └── ansible_collections 5├── files 6│ ├── grafana-dashboard-s3-metrics.json 7│ ├── grafana-dashboard-zakroma-services.json 8│ └── realm.json 9├── group_vars 10│ ├── certificates.yml 11│ ├── keycloak.yml 12│ ├── zakroma-storage-nginx.yml 13│ ├── zakroma-storage.yml 14│ ├── zakroma-zds-ec.yml 15│ └── zakroma-zds-fs.yml 16├── hosts-example 17├── README.md 18├── roles 19│ ├── certificates 20│ ├── keycloak 21│ ├── nginx 22│ ├── zakroma-storage 23│ └── zakroma-zds 24├── sample-play-copy-certificates.yml 25├── sample-play-keycloak-copy-realm.yml 26├── sample-play-keycloak.yml 27├── sample-play-zakroma-storage-nginx.yml 28├── sample-play-zakroma-storage.yml 29├── sample-play-zakroma-zds-ec.yml 30└── sample-play-zakroma-zds-fs.yml
Требования
1- ssh подключение к хостам. 2- пользователь с привилегированным доступом. 3- ansible > 2.15.0.
Пререквизиты
- Создать сертификаты на следующие доменные имена (пример FQDN - zakroma.local):
1*.ps.*FQDN* 2zakroma-gateway.*FQDN* 3zakroma-admin.*FQDN* 4keycloak.*FQDN*
- Создать DNS A-записи для вышеуказанных доменных имен:
1*.ps.*FQDN* - на хосты c zakroma-storage (нужна для для доступа к s3-endpoint'у по path-style) 2zakroma-gateway.*FQDN* - на хосты c zakroma-storage 3zakroma-admin.*FQDN* - на хосты c zakroma-storage 4keycloak.*FQDN* - на хосты c keycloak
- Требуется настройка PostgreSQL, согласно инструкции.
- При установке Keycloak ansible ролью - установить на целевой хост Java 17+
- Выполнить монтирование дисковой емкости для последующего использования в качестве нижнего слоя хранения ZDS.
Точки монтирования должны быть добавлены в /etc/fstab используя UUID. Рекомендуемые параметры дисковых устройств для ZDS:
- ФС: XFS,EXT4
- Использование групп томов (Volume Groups): Рекомендуется
Установка Storage (Закрома.Хранение)
1. Получить и распаковать архив с Ansible ролями
1tar -xvf zakroma-roles.tar
Перейти в директорию с ролями
1cd zakroma-roles
2. Создать inventory, включающий хостнейм в соответствующих хост-группах, как пример можно использовать файл hosts-example
1[certificates] 2rutherford-1 ansible_host=192.168.1.1 3rutherford-2 ansible_host=192.168.1.2 4rutherford-3 ansible_host=192.168.1.3 5rutherford-4 ansible_host=192.168.1.4 6 7[keycloak] 8rutherford-1 ansible_host=192.168.1.1 9 10[zakroma-storage-nginx] 11rutherford-2 ansible_host=192.168.1.2 12rutherford-3 ansible_host=192.168.1.3 13rutherford-4 ansible_host=192.168.1.4 14 15[zakroma-storage] 16rutherford-2 ansible_host=192.168.1.2 17rutherford-3 ansible_host=192.168.1.3 18rutherford-4 ansible_host=192.168.1.4 19 20[zakroma-zds-ec] 21rutherford-6 ansible_host=192.168.1.6 22rutherford-7 ansible_host=192.168.1.7 23rutherford-8 ansible_host=192.168.1.8 24 25[zakroma-zds-fs] 26rutherford-5 ansible_host=192.168.1.5
3. Копирование сертификатов на целевые хосты (при необходимости их копирования)
- Необходимо переопределить переменные для роли “certificates” и групп хостов “certificates”. Пример: ./group_vars/certificates.yml
- Запустить playbook:
1ansible-playbook -i hosts-example sample-play-copy-certificates.yml -u <ssh-username> --private-key <path_to_ssh_key>
4. Установка Keycloak
- Необходимо переопределить переменные для роли “keycloak” и групп хостов “keycloak”. Пример: ./group_vars/keycloak.yml
- Запустить playbook:
1ansible-playbook -i hosts-example sample-play-keycloak.yml -u <ssh-username> --private-key <path_to_ssh_key>
- После установки keycloak необходимо сконфигурировать REALM по инструкции или воспользоваться плейбуком, который сделает импорт готового REALM
1ansible-playbook -i hosts-example sample-play-keycloak-copy-realm.yml -u <ssh-username> --private-key <path_to_ssh_key>
5. Установка Zakroma Storage
- Необходимо переопределить переменные для роли “zakroma-storage” и групп хостов “zakroma-storage”. Пример: ./group_vars/zakroma-storage.yml
- Запустить playbook:
1ansible-playbook -i hosts-example sample-play-zakroma-storage.yml -u <ssh-username> --private-key <path_to_ssh_key>
6. Установка Nginx (на хосты с Zakroma Storage)
- Необходимо переопределить переменные для роли “nginx” и групп хостов “zakroma-storage-nginx”. Пример: ./group_vars/zakroma-storage-nginx.yml
- Запустить playbook:
1ansible-playbook -i hosts-example sample-play-zakroma-storage-nginx.yml -u <ssh-username> --private-key <path_to_ssh_key>
- Проверить доступность Web интерфейса:
- Admin UI:
- Url -
https://zakroma-admin.*FQDN*
- Username -
zakromaadmin
- Password - Какой вы указали на этапе создания пользователя
zakromaadmin
в keycloak. Если был импорт готового REALM, то пароль - ‘zakromaadmin’
Установка ZDS
7. Установка Zakroma ZDS в режиме EC (Erasure coding, минимум 3 хоста) (нижний слой хранения)
- Необходимо переопределить переменные для роли “zakroma-zds-ec” и групп хостов “zakroma-zds-ec”. Пример: ./group_vars/zakroma-storage-ec.yml
- Запустить playbook:
1ansible-playbook -i hosts-example sample-play-zakroma-zds-ec.yml -u <ssh-username> --private-key <path_to_ssh_key>
8. Установка Zakroma ZDS в режиме FS (без избыточности, 1 хост) (опционально) (нижний слой хранения)
- Необходимо переопределить переменные для роли “zakroma-zds-fs” и групп хостов “zakroma-zds-fs”. Пример: ./group_vars/zakroma-storage-fs.yml
- Запустить playbook:
1ansible-playbook -i hosts-example sample-play-zakroma-zds-fs.yml -u <ssh-username> --private-key <path_to_ssh_key>
Подключение к S3
- Protocol:
https/http
- Host:
<workspace_name>.ps.*FQDN*
- Signature version:
V4 sign
где <workspace_name> - имя рабочей области, где находятся бакеты, например test
.