lvps.389ds_replication

389ds-replikacja

Ansible Galaxy

Skonfiguruj replikację między instancjami serwera 389DS (serwer LDAP).

ansible-galaxy install lvps.389ds_replication

Wymagania

  • Wersja Ansible: 2.7 lub wyższa
  • System operacyjny: CentOS 7

Jeśli Ansible nie obsługuje modułu ldap_attrs, używasz starej wersji kolekcji, ale możesz spróbować wersji 1.0.x tego zadania.

Zmienne roli

Zmienna Wartość domyślna Opis Można zmienić Rola
dirsv_replication_role Rola tego serwera: 'dostawca', 'odbiorca' lub 'obydwa' (master). Hub nie jest obsługiwany. Nie
dirsrv_server_uri "ldap://localhost" URI serwera do skonfigurowania. Ponieważ działa to na docelowym systemie Ansible, localhost powinien być w porządku. Można ustawić na ldaps://localhost, aby używać TLS na porcie 636. CSB
dirsrv_rootdn "cn=Directory Manager" Root DN (nazwa użytkownika konta "administrator") CSB
dirsrv_rootdn_password hasło Hasło dla konta root DN CSB
dirsrv_use_starttls true Użyj StartTLS do połączenia z serwerem CSB
dirsrv_tls_certificate_trusted true Prawda, jeśli certyfikat TLS pochodzi z zaufanej CA, fałsz, jeśli jest samopodpisany lub z prywatnej CA, niewykorzystywany, jeśli TLS nie jest używany CSB
dirsrv_serverid default ID serwera, czyli ID instancji, np. jeśli serwer jest zainstalowany w katalogu dirsrv/slapd-example, "example" to ID serwera CSB
dirsrv_suffix dc=example,dc=local Sufiks root CSB
dirsrv_supplier_replica_id 1 Wybierz liczbę między 1 a 65534. Nie przypisuj jej innym serwerom, ponieważ mogą wystąpić problemy. Nie SB
dirsrv_consumer_uri "ldap://consumer.example.com:389/" Pełny URI, w tym port, do którego dostawca się połączy i wykona replikację, przesyłając zmiany Nie SB
dirsrv_replication_user_remote Menedżer replikacji Konto użytkownika, które istnieje na odbiorcy. Dostawca połączy się z tym kontem, aby wykonać replikację. "Menedżer replikacji" oznacza, że konto to "cn=Replication Manager,cn=config" Tak SB
dirsrv_replication_user_password_remote Hasło dla konta użytkownika replikacji (Menedżer replikacji) Tak SB
dirsrv_replica_bind_method "PLAIN" Metoda połączenia, której dostawca używa do połączenia z odbiorcą (SIMPLE, PLAIN, SASL) Tak SB
dirsrv_changelog_max_age "10d" Ustala wartość nsslapd-changelogmaxage Tak SB
dirsrv_replica_attributes_list "(objectclass=*) $ EXCLUDE authorityRevocationList accountUnlockTime memberof" Ustala wartość nsds5ReplicatedAttributeList, domyślna wartość tej zmiennej jest używana w dokumentacji jako przykład Tak SB
dirsrv_replica_attributes_list_total "(objectclass=*) $ EXCLUDE accountUnlockTime" Ustala wartość nsds5ReplicatedAttributeListTotal, domyślna wartość tej zmiennej jest używana w dokumentacji jako przykład Tak SB
dirsrv_replication_user Menedżer replikacji Konto użytkownika do utworzenia na odbiorcy. To konto będzie używane przez dostawcę do połączenia z tym serwerem (odbiorca). "Menedżer replikacji" oznacza, że konto będzie utworzone jako "cn=Replication Manager,cn=config" Tak CB
dirsrv_replication_user_password Hasło dla tego konta. Tak CB
dirsrv_begin_replication_immediately true Boolean, ustawia nsds5ReplicaEnabled na "on" lub "off" w umowie replikacji. Powinno to być bezpieczne: jeśli dodasz nowy serwer, nie zacznie przesyłać swojej pustej bazy danych do innych serwerów, ponieważ mają one inny identyfikator generacji, a replikacja kończy się niepowodzeniem (zobacz przykłady, aby uzyskać więcej szczegółów), ale jeśli chcesz być jeszcze bardziej ostrożny lub dostosować umowę replikacji, ustaw to na fałsz Nie CB
dirsrv_consumer_referral_to_supplier "ldap://supplier.example.com:389/" Pełny URI LDAP, w tym port. Gdy klient próbuje zapisać do odbiorcy, który jest tylko do odczytu, przekieruje klienta do tego serwera (dostawca, który może przyjąć zapis). Tak C

Najpierw wybierz, czy serwer jest dostawcą, odbiorcą, czy obydwa i ustaw zmienną dirsv_role odpowiednio. Następnie ustaw zmienne związane z tym: patrz w kolumnę Rola, C = Odbiorca, S = Dostawca, B = Obydwa.

Niektóre zmienne nie mogą być zmieniane po ustawieniu, ich zmiana spowoduje nieoczekiwane rezultaty, od "nic się nie dzieje" po "rola kończy się niepowodzeniem". Inne (szczegóły uwierzytelnienia, sufiks itp.) powinny być ustawione na odpowiednią wartość dla serwera, mogą być zmieniane tak długo, jak to ma sens, tzn. możesz zmienić dirsrv_rootdn_password, jeśli zmieniłeś hasło root DN, aby ta rola mogła się poprawnie uwierzytelnić, ale zmiana dirsrv_suffix między jednym a drugim uruchomieniem na tym samym serwerze jest bezsensowna, chyba że w jakiś sposób udało Ci się zmienić sufiks w 389DS.

Poniższe zmienne mają tę samą nazwę i znaczenie jak w roli 389ds-server, więc jeśli używasz obu ról w tym samym playbooku, możesz zdefiniować je tylko raz:

  • dirsrv_rootdn
  • dirsrv_rootdn_password
  • dirsrv_tls_certificate_trusted
  • dirsrv_serverid
  • dirsrv_suffix

Zależności

Brak.

Ale pamiętaj, że ta rola oczekuje, że 389DS będzie już uruchomiony, tylko konfiguruje replikację między istniejącymi serwerami.

Przykładowy Playbook

Więcej przykładów, w tym instalacja 389DS od podstaw oraz potrzebne konfiguracje Vagrant do ich testowania, dostępne są w repozytorium 389ds-examples.

Zauważ, że zazwyczaj replikacja nie rozpoczyna się od razu, ponieważ "generacja repliki" jest inna między serwerami. Można to naprawić za pomocą procedury "odświeżania replikacji", która jest opisana na przykład w rozdziale 15.2.5 Przewodnika Administracyjnego. Należy to wykonać na dostawcach lub serwerach z rolą "obydwa".

Ogólnie rzecz biorąc, wykonanie "odświeżenia replikacji" wymusi przetransferowanie bazy danych z jednego dostawcy do odbiorcy, zastępując poprzednią bazę danych odbiorcy: zrób to, zaczynając od jednego dostawcy i stopniowo przechodząc do pozostałych, uważając, aby nie zastąpić bazy danych produkcyjnej pustą bazą danych serwera, który dopiero co został zainstalowany. Kiedy dwa serwery mają dokładnie tę samą bazę danych, replikacja zaczyna się automatycznie i natychmiast.

Procedura ta jest również dokładniej opisana w repozytorium 389ds-examples.

Odbiorca i dostawca

Najpierw skonfiguruj odbiorcę, ten serwer będzie zawierał kopię bazy danych tylko do odczytu:

- hosts: consumer
  become: true

  roles:
    -
      role: lvps.389ds_replication
      dirsrv_replica_role: consumer
      dirsrv_suffix: "dc=example,dc=local"
      dirsrv_server_uri: "ldap://localhost"
      dirsrv_rootdn_password: secret
      dirsrv_replication_user_password: foo # Utworzy cn=Replication Manager,cn=config z tym hasłem
      dirsrv_consumer_referral_to_supplier: "ldap://supplier.example.local:389/"

Następnie skonfiguruj dostawcę, ten serwer będzie akceptował zapisy i przesyłał wszystkie zmiany do odbiorcy:

- hosts: supplier
  become: true

  roles:
    -
      role: lvps.389ds_replication
      dirsrv_replica_role: supplier
      dirsrv_suffix: "dc=example,dc=local"
      dirsrv_server_uri: "ldap://localhost"
      dirsrv_rootdn_password: verysecret
      dirsrv_replication_user_password_remote: foo # Połączy się z cn=Replication Manager,cn=config i tym hasłem na innym serwerze
      dirsrv_consumer_uri: "ldap://consumer.example.local:389/" # Inny serwer (odbiorca zdefiniowany powyżej)
      dirsrv_supplier_replica_id: 123

Multi-master z dwoma masterami

- hosts: mm1
  become: true
  roles:
    -
      role: lvps.389ds_replication
      dirsrv_replica_role: 'both'
      dirsrv_suffix: "dc=example,dc=local"
      dirsrv_server_uri: "ldap://localhost"
      dirsrv_rootdn_password: secret1
      dirsrv_replication_user_password: "aaaaaa"
      dirsrv_replication_user_password_remote: "bbbbbb" # Na drugim serwerze
      dirsrv_consumer_uri: "ldap://mm2.example.local:389/" # Inny serwer
      dirsrv_supplier_replica_id: 1
- hosts: mm2
  become: true
  roles:
    -
      role: lvps.389ds_replication
      dirsrv_replica_role: 'both'
      dirsrv_suffix: "dc=example,dc=local"
      dirsrv_server_uri: "ldap://localhost"
      dirsrv_rootdn_password: secret2
      dirsrv_replication_user_password: "bbbbbb"
      dirsrv_replication_user_password_remote: "aaaaaa" # Na drugim serwerze
      dirsrv_consumer_uri: "ldap://mm1.example.local:389/" # Inny serwer
      dirsrv_supplier_replica_id: 2

Znane błędy

Jeśli dirsrv_replication_user_password zostanie zmienione, nie zostanie zgłoszona żadna zmiana: dzieje się tak, ponieważ hasło faktycznie zmienia się przy każdym uruchomieniu (Ansible nie może określić, czy poprzednie zaszyfrowane hasło jest takie samo jak nowe, dlatego zostanie zmienione i ponownie zaszyfrowane), ale istnieje changed_when: false, aby ukryć ten szczegół.

Licencja

MIT.

O projekcie

Configure replication between 389DS server (LDAP server) instances.

Zainstaluj
ansible-galaxy install lvps.389ds_replication
Licencja
mit
Pobrania
1.9k
Właściciel