Установка через 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.

Смотрите также
Установка helm-чартами