Исправление односторонних отношений Left-Right

Перед созданием соглашения о репликации в LDAP-каталоге сначала создается такая сущность, как сегмент. Как только Topology плагин контроллера видит относящийся к нему сегмент, для которого не создано соглашение, он создает такое соглашение. Сначала создается соглашение в одном направлении, затем в обратном, и при наличии двух взаимонаправленных сегментов они удаляются и создается третий сегмент, у которого направление Both.

Если в домене наблюдается однонаправленное соглашение о репликации, т.е. стрелочка только в одну сторону, и не становится двунаправленной, это означает, что второй сегмент не был создан и для устранения проблемы его нужно создать вручную.

Найти однонаправленные Left-Right сегменты и записать их в файл.

sudo i
set +o history
ldapsearch -Q -xLLL -D "cn=directory manager" -w "AstraLinux_176" -b "cn=domain,cn=topology,cn=ipa,cn=etc,dc=ald,dc=company,dc=lan" "(ipaReplTopoSegmentDirection=left-right)" > direction.ldif
set -o history
exit

Создать python скрипт parcing_topology.py командой, а также этот файл можно скачать в личном кабинете:

nano parcing_topology.py

Сохранить файл с таким содержимым:

with open('direction.ldif') as f:
    lines = f.readlines()
ldif_change=""
text_block=""
for line in lines:
    text_block=f"{text_block}{line}"
    if "ipaReplTopoSegmentLeftNode" in line:
        left_node=line.split(":")[1].strip()
    if "ipaReplTopoSegmentRightNode" in line:
        right_node=line.split(":")[1].strip()
    if not line.strip():
        text_block=text_block.replace(f"{left_node}-to-{right_node}",f"{right_node}-to-{left_node}")
        text_block=text_block.replace(f"ipaReplTopoSegmentLeftNode: {left_node}",f"ipaReplTopoSegmentLeftNode: {right_node}")
        text_block=text_block.replace(f"ipaReplTopoSegmentRightNode: {right_node}",f"ipaReplTopoSegmentRightNode: {left_node}")
        ldif_change+=f"{text_block}"
        text_block=""
with open('add_direction.ldif','w') as f:
    f.write(ldif_change)

Запустить следующий скрипт в той же папке и убедиться, что скрипт отработал корректно.

python3 parcing_topology.py

Теперь внести изменения из LDIF-файла в каталог от пользователя admin:

ldapadd -f add_direction.ldif

Проверить, что в системе не осталось Left-Right сегментов.

sudo i
set +o history
ldapsearch -xLLL -D "cn=Directory Manager" -w "AstraLinux_176" -b "cn=domain,cn=topology,cn=ipa,cn=etc,dc=ald,dc=company,dc=lan" "(ipaReplTopoSegmentDirection=left-right)"
set -o history
exit

Перезагрузить сервис ipa или последовательно все серверы, где были проблемы с односторонними соглашениями, для того, чтобы плагин Topology создал недостающие соглашения.

sudo ipactl restart

Соглашение создается, но не всегда запускается репликация после рестарта реплик. Как решение можно использовать команду:

ipa-replica-manage force-sync --from