Ad-Photos-Sync — это утилита для синхронизации фотографий из Active Directory в Dion, которая представлена в виде системы скриптов на Python.

| 
           Данная инструкция была написана на примере операционной системы Ubuntu Server 22.04.4. Способы запуска на других операционных системах могут отличаться.  | 
      
Утилита включает следующий набор скриптов:
| Внимание: Каждая фотография в Active Directory может занимать до 100 КБ места на диске. Таким образом, для синхронизации фотографий 100 000 пользователей может потребоваться до 10 ГБ во временной папке.  | 
      
Чтобы установить Ad-Photos-Sync, выполните следующие действия:
1. Получите дистрибутив Ad-Photos-Sync у команды Dion.
2. Выберете сервер для работы синхронизатора. Например, это может быть тот же сервер, на котором установлен AD Connector.
3. Установите необходимые пререквизиты для работы скриптов:
sudo apt update
sudo apt install -y ldap-utils python3-ldap3 libpq-dev python3-pip
pip install boto3 Pillow psycopg2
| 
           Инструкция для операционной системы Debian: 
         | 
      
4. Скопируйте скрипты в каталог /home/dion/ad-photos-sync.
5. Создайте каталог для временного хранения фотографий:
mkdir /home/dion/ad-photos-sync
mkdir /home/dion/ad-photos-sync/photos
cd /home/dion/ad-photos-sync
6. Укажите параметры подключения к Active Directory в файле 1_pull_ad_photos.py.
Пример:
# LDAP connection settings
ldap_server = 'dc.YourDomain.com'
ldap_port = 389
service_account_dn = 'CN=admin,CN=Users,DC=YourDomain,DC=com'
service_account_password = 'password'
base_dn = 'OU=Users,DC=YourDomain,DC=com'
photos_directory = '/home/dion/ad-photos-sync/photos'
7. Укажите параметры подключения к хранилищу S3 Minio в файле 2_upload_to_s3.py.
Учётные данные можно найти в файле /home/dion/on_dion/inventories/dion.YourDomain.com/group_vars/all/vault.yaml.
Пример:
# S3 MinIO connection settings
s3_endpoint = 'http://infra_ip:9000'
s3_access_key = 'Your_s3_access_key'
s3_secret_key = 'Your_s3_secret_key'
photos_directory = '/home/dion/ad-photos-sync/photos'
8. Укажите параметры подключения к базе данных PostgreSQL в файле 3_update_avatar_paths.py.
Учётные данные можно найти в файле /home/dion/on_dion/inventories/dion.YourDomain.com/group_vars/all/vault.yaml.
    Если используется отказоустойчивая инфраструктура Dion, в качестве db_host необходимо использовать виртуальный IP балансировщика (vip_infra).
Пример:
# PostgreSQL connection settings to Dion Infra
db_host = 'vip_infra'
db_port = 5432
db_name = 'backend'
db_user = 'postgres'
db_password = 'password'
photos_directory = '/home/dion/ad-photos-sync/photos'
9. Добавьте права на запуск файлов:
chmod +x 1_pull_ad_photos.py 2_upload_to_s3.py 3_update_avatar_paths.py sync-ad-photos.sh
Запустите поочередно скрипты и убедитесь, что они не возвращают ошибок:
./1_pull_ad_photos.py
./2_upload_to_s3.py
./3_update_avatar_paths.py
1. Запустите главный скрипт и убедитесь, что он не возвращает ошибок:
./sync-ad-photos.sh
2. Запустите конфигуратор crontab:
crontab -e
3. Установите необходимое расписание для запуска sync-ad-photos.sh.
В следующем примере синхронизация фотографий будет происходить ежедневно в 3 часа ночи:
0 3 * * * /home/dion/ad-photos-sync/sync-ad-photos.sh