Подготовка тестовой среды
- На одном из контроллеров домена выполнить сценарий:
kinit admin
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
dc=$(hostname -f)
domain=$(hostname -d)
ldapadd -h $dc -D "cn=Directory Manager" -W <<EOF
dn: ou=test_repl,ou=$domain,cn=orgunits,cn=accounts,$suffix
objectClass: rbta-org-unit
ou: test_repl
displayName: test_repl
EOF
ipa user-add testuser --first="Test" --last="User" --random
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
dn: uid=testuser,cn=users,cn=accounts,$suffix
changetype: modify
replace: rbtadp
rbtadp: ou=test_repl,ou=$domain,cn=orgunits,cn=accounts,$suffix
-
replace: rbtaou
rbtaou: test_repl
EOF
- Проверить работу репликации, выполнив сценарий на другом контроллере домена:
kinit admin
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
dc=$(hostname -f)
domain=$(hostname -d)
ldapsearch -h $dc -D "cn=Directory Manager" -W -b "ou=test_repl,ou=$domain,cn=orgunits,cn=accounts,$suffix"
Создание конфликта типа namingConflict (ADD)
- Остановить репликацию, выполнив сценарий на обоих контроллерах домена:
read -p "Введите короткое доменное имя второго контроллера домена (например dc02): " DC2
domain=$(hostname -d)
dc=$(hostname -f)
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g')
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config
changetype: modify
replace: nsDS5ReplicaEnabled
nsDS5ReplicaEnabled: off
EOF - Создать конфликтующую запись (на обоих контроллерах домена):
ipa user-add conflict_user --first="conflict" --last="User" --random - Включить репликацию:
read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
domain=$(hostname -d)
dc=$(hostname -f)
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g')
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config
changetype: modify
replace: nsDS5ReplicaEnabled
nsDS5ReplicaEnabled: on
EOF - Проверить наличие конфликта:
dc=$(hostname -f)
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
dsconf ldap://$dc -D "cn=Directory Manager" repl-conflict list $suffix
Создание конфликта attribute/modification
- Остановить репликацию:
read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
domain=$(hostname -d)
dc=$(hostname -f)
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g')
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config
changetype: modify
replace: nsDS5ReplicaEnabled
nsDS5ReplicaEnabled: off
EOF
Модифицируем запись по-разному:
read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
domain=$(hostname -d)
dc=$(hostname -f)
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2) - На одном из контроллеров домена изменить телефон
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
dn: uid=testuser,cn=users,cn=accounts,$suffix
changetype: modify
replace: telephoneNumber
telephoneNumber: +111111111
EOF - На другом контроллере домена изменить адрес электронной почты:
ldapmodify -h $5DC2.$domain -D "cn=Directory Manager" -W <<EOF
dn: uid=testuser,cn=users,cn=accounts,$suffix
changetype: modify
replace: mail
mail: test@example.com
EOF - Включить репликацию и проверить наличие конфликта:
read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
domain=$(hostname -d)
dc=$(hostname -f)
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g')
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config
changetype: modify
replace: nsDS5ReplicaEnabled
nsDS5ReplicaEnabled: on
EOF
read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
domain=$(hostname -d)
dc=$(hostname -f)
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
ds-replcheck online -D "cn=Directory Manager" -W -m ldap://$dc:389 -r ldap://$DC2.$domain:389 -b "$suffix" -i memberof,idnssoaserial,entryusn,krblastsuccessfulauth,krblastfailedauth,krbloginfailedcount