lvps.389ds_replication

389ds-replication

Ansible Galaxy

Configurer la réplication entre les instances de serveur 389DS (serveur LDAP).

ansible-galaxy install lvps.389ds_replication

Exigences

  • Version d'Ansible : 2.7 ou supérieure
  • Système d'exploitation : CentOS 7

Si Ansible ne prend pas en charge le module ldap_attrs, cela signifie que vous utilisez une ancienne version des collections, mais vous pouvez essayer la version 1.0.x de ce rôle.

Variables du rôle

Variable Par défaut Description Peut être modifié Rôle
dirsv_replication_role Rôle de ce serveur : 'supplier', 'consumer' ou 'both' (maître). Hub n'est pas supporté. Non
dirsrv_server_uri "ldap://localhost" URI du serveur à configurer. Puisque cela s'exécute sur la cible Ansible, localhost devrait convenir. Il est possible de le définir sur ldaps://localhost pour utiliser TLS sur le port 636. CSB
dirsrv_rootdn "cn=Directory Manager" DN racine (nom d'utilisateur du compte administrateur) CSB
dirsrv_rootdn_password secret Mot de passe pour le compte DN racine CSB
dirsrv_use_starttls true Utiliser StartTLS pour se connecter au serveur CSB
dirsrv_tls_certificate_trusted true Vrai si le certificat TLS provient d'une autorité de certification de confiance, faux s'il est auto-signé ou provient d'une autorité privée, non utilisé si TLS n'est pas utilisé CSB
dirsrv_serverid default ID du serveur, alias ID d'instance, par exemple si le serveur est installé dans le répertoire dirsrv/slapd-example, "example" est l'ID du serveur CSB
dirsrv_suffix dc=example,dc=local Suffixe racine CSB
dirsrv_supplier_replica_id 1 Choisissez un nombre entre 1 et 65534. Ne l'assignez pas à d'autres serveurs sous peine de provoquer des problèmes. Non SB
dirsrv_consumer_uri "ldap://consumer.example.com:389/" URI complète, y compris le port, que le fournisseur utilisera pour se connecter et effectuer la réplication. Non SB
dirsrv_replication_user_remote Replication Manager Compte utilisateur qui existe sur le consommateur. Le fournisseur se connectera avec ce compte pour effectuer la réplication. "Replication Manager" signifie que le compte est "cn=Replication Manager,cn=config" Oui SB
dirsrv_replication_user_password_remote Mot de passe pour le compte de l'utilisateur de réplication (Replication Manager) Oui SB
dirsrv_replica_bind_method "PLAIN" Méthode de liaison que le fournisseur utilise pour se connecter au consommateur (SIMPLE, PLAIN, SASL) Oui SB
dirsrv_changelog_max_age "10d" Définit la valeur de nsslapd-changelogmaxage. Oui SB
dirsrv_replica_attributes_list "(objectclass=*) $ EXCLUDE authorityRevocationList accountUnlockTime memberof" Définit la valeur de nsds5ReplicatedAttributeList, la valeur par défaut de cette variable est utilisée dans les exemples de la documentation. Oui SB
dirsrv_replica_attributes_list_total "(objectclass=*) $ EXCLUDE accountUnlockTime" Définit la valeur de nsds5ReplicatedAttributeListTotal, la valeur par défaut de cette variable est utilisée dans les exemples de la documentation. Oui SB
dirsrv_replication_user Replication Manager Compte utilisateur à créer sur le consommateur. Ce compte sera utilisé par le fournisseur pour se connecter sur ce serveur (le consommateur). "Replication Manager" signifie que le compte sera créé à "cn=Replication Manager,cn=config" Oui CB
dirsrv_replication_user_password Mot de passe pour ce compte. Oui CB
dirsrv_begin_replication_immediately true Booléen, définit nsds5ReplicaEnabled sur "on" ou "off" dans l'accord de réplication. Cela devrait être sûr : si vous ajoutez un nouveau serveur, il ne commencera pas à pousser sa base de données vide vers d'autres serveurs. Non CB
dirsrv_consumer_referral_to_supplier "ldap://supplier.example.com:389/" URI LDAP complète y compris le port. Lorsqu'un client essaie d'écrire sur un consommateur, qui est en lecture seule, il sera redirigé vers ce serveur (un fournisseur qui peut accepter des écritures). Oui C

Tout d'abord, choisissez si le serveur est un fournisseur, un consommateur ou les deux, et définissez dirsv_role en conséquence. Ensuite, définissez les variables connexes : regardez dans la colonne des Rôles, C = Consommateur, S = Fournisseur, B = Les deux.

Certaines variables ne peuvent pas être modifiées une fois définies, les changer produira des résultats inattendus, allant de "rien ne se passe" à "le rôle échoue". D'autres (détails d'authentification, suffixe, etc.) doivent être définies avec la bonne valeur pour le serveur, peuvent être modifiées tant que cela a du sens, c'est-à-dire que vous pouvez changer dirsrv_rootdn_password si vous avez changé le mot de passe du DN racine pour que ce rôle puisse s'authentifier correctement, mais changer dirsrv_suffix entre un run et un autre sur le même serveur n'a pas de sens, à moins que vous ne parveniez d'une manière ou d'une autre à changer le suffixe dans 389DS.

Les variables suivantes portent exactement le même nom et signification que dans le rôle 389ds-server, donc si vous utilisez les deux rôles dans le même playbook, vous pouvez les définir une seule fois :

  • dirsrv_rootdn
  • dirsrv_rootdn_password
  • dirsrv_tls_certificate_trusted
  • dirsrv_serverid
  • dirsrv_suffix

Dépendances

Aucune.

Mais gardez à l'esprit que ce rôle s'attend à ce que 389DS soit déjà en cours d'exécution, il ne fait que configurer la réplication entre des serveurs existants.

Exemple de Playbook

Plus d'exemples, y compris l'installation de 389DS depuis le début et les configurations Vagrant nécessaires pour les tester, sont disponibles dans le référentiel 389ds-examples.

Notez que, généralement, la réplication ne commence pas immédiatement parce que la "génération de réplica" est différente entre les serveurs. Cela peut être corrigé avec la procédure de "rafraîchissement de réplica", qui est décrite par exemple dans la section 15.2.5 du guide d'administration. Vous devrez le faire sur les fournisseurs ou les serveurs avec le rôle "les deux".

Dans l'ensemble, procéder à un "rafraîchissement de réplica" poussera de force la base de données d'un fournisseur vers un consommateur, remplaçant ainsi l'ancienne base de données du consommateur : commencez par un fournisseur et progressez progressivement vers les autres, en faisant attention à ne pas remplacer une base de données de production par la base de données vide d'un serveur qui vient d'être installé. Lorsque deux serveurs ont exactement la même base de données, la réplication commence automatiquement et immédiatement.

La procédure est également expliquée plus en détail dans le référentiel 389ds-examples.

Consommateur et fournisseur

Configurez d'abord le consommateur, ce serveur contiendra une copie en lecture seule de la base de données :

- 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 # Créera cn=Replication Manager,cn=config avec ce mot de passe
      dirsrv_consumer_referral_to_supplier: "ldap://supplier.example.local:389/"

Ensuite, configurez le fournisseur, ce serveur acceptera les écritures et poussera tous les changements vers le consommateur :

- 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 # Se liera avec cn=Replication Manager,cn=config et ce mot de passe sur l'autre serveur
      dirsrv_consumer_uri: "ldap://consumer.example.local:389/" # L'autre serveur (le consommateur défini ci-dessus)
      dirsrv_supplier_replica_id: 123

Multi-maître avec deux maîtres

- 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" # Sur l'autre serveur
      dirsrv_consumer_uri: "ldap://mm2.example.local:389/" # L'autre serveur
      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" # Sur l'autre serveur
      dirsrv_consumer_uri: "ldap://mm1.example.local:389/" # L'autre serveur
      dirsrv_supplier_replica_id: 2

Bugs connus

Si dirsrv_replication_user_password est changé, aucun changement n'est signalé : c'est parce que le mot de passe change en fait à chaque exécution (Ansible ne peut pas dire si le mot de passe haché précédent est le même que le nouveau, donc il sera changé et haché à nouveau), mais il y a changed_when: false pour cacher ce détail.

Licence

MIT.

À propos du projet

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

Installer
ansible-galaxy install lvps.389ds_replication
Licence
mit
Téléchargements
1.9k
Propriétaire