Форум проекта Pro-LDAP.ru

Общие вопросы по LDAP => Общий раздел => Тема начата: Обухов Дмитрий от 04 Январь 2015, 18:35:10

Название: разработка проекта: апгрейд БД LDAP
Отправлено: Обухов Дмитрий от 04 Январь 2015, 18:35:10
вопрос связанный с вот этим (http://pro-ldap.ru/forum/index.php?topic=282.0).

имеется проект, который разрабатывается много времени. на SQL.
на SQL мы применяем следующую парадигму разработки.

допустим надо добавить поле `age` в таблицу `users` и соответственно добавить код, который будет работать с этим полем в код сервера.
мы делаем два скрипта `up.sql` и `down.sql`

в первом стоит ALTER TABLE делающий апгрейд БД, во втором соответственно даунгрейд.

в итоге если вдруг выкатили на боевой что-то не то, то откатывается все вместе с git вызывая обратные изменения в БД.

сейчас думаем часть БД вынести в LDAP и для LDAP хотелось бы применять подобный подход.

вопрос: есть ли готовые инструменты для работы в подобной парадигме?
Название: Re: разработка проекта: апгрейд БД LDAP
Отправлено: egor от 08 Январь 2015, 14:30:39
Здравствуйте, Дмитрий!

Не совсем понятно для чего (для выполнения чего) Вам нужны готовые инструменты? Чтобы внести изменения в запись каталога достаточно использовать просто OpenLDAP-утилиту ldapmodify, вызывая её из обычного bash-скрипта. Изменение записи в каталоге -- вещь достаточно рутинная, не имеющая таких подводных камней, как ALTER TABLE, чтобы могли потребоваться резкие откаты. Тем не менее, добавить и удалить атрибут можно, конечно же, в любой момент стандартными средствами без усилий.

Если я не понял Вашей задачи, опишите поподробнее.

Егор
Название: Re: разработка проекта: апгрейд БД LDAP
Отправлено: Обухов Дмитрий от 08 Январь 2015, 23:25:38
вот смотрите

1. имеется БД (в данном случае LDAP)
2. имеется сервер (набор серверов) программа в которых завязана на структуру БД (например на наличие объектного класса или атрибута)

теперь мы это развиваем

мы пишем в тестовом окружении некий скрипт up. который изменяет структуру БД и одновремено кладет новую версию кода клиента и далее рестартует клиент.

если что-то пошло не так (уже в продакшене) вызываем скрипт down. который изменяет структуру данных назад и откатывает код клиента.

так мы работаем со всеми БД и с LDAP хотим работать так же.

соответственно вопрос: есть ли для LDAP подобные up/down инструменты в готовом виде?

Название: Re: разработка проекта: апгрейд БД LDAP
Отправлено: egor от 09 Январь 2015, 10:17:03
Чем Вас не устраивает в качестве стандартного средства утилита ldapmodify? Простой пример обёртки (без проверок):
#/bin/sh

# DN записи
DN=$1
# Тип операции: add или delete
OP_TYPE=$2
# Тип атрибута
ATTR=$3
# Значение атрибута
VALUE=$4

(
cat <<EOL
dn: $DN
changetype: modify
$OP_TYPE: $ATTR
$ATTR: $VALUE
EOL
) | ldapmodify -D 'cn=manager,ou=System,dc=mycompany,dc=ru' -y /tmp/password.txt

Вызов для добавления атрибута:
# ./ldap-attr-change.sh 'uid=anton,ou=People,dc=mycompany,dc=ru' add description 'some test value'
Warning: Password file /tmp/password.txt is publicly readable/writeable
modifying entry "uid=anton,ou=People,dc=mycompany,dc=ru"
Вызов для добавления атрибута:
# ./ldap-attr-change.sh 'uid=anton,ou=People,dc=mycompany,dc=ru' delete description 'some test value'
Warning: Password file /tmp/password.txt is publicly readable/writeable
modifying entry "uid=anton,ou=People,dc=mycompany,dc=ru"

Вот и вся премудрость =) .
Егор