lvps.389ds_replication

389ds-replication

Ansible Galaxy

Configura la replicación entre instancias de servidor 389DS (servidor LDAP).

ansible-galaxy install lvps.389ds_replication

Requisitos

  • Versión de Ansible: 2.7 o superior
  • SO: CentOS 7

Si Ansible no soporta el módulo ldap_attrs, estás usando una versión antigua de las colecciones, pero puedes intentar la versión 1.0.x de este rol.

Variables del rol

Variable Predeterminado Descripción Se puede cambiar Rol
dirsv_replication_role Rol de este servidor: 'supplier' (proveedor), 'consumer' (consumidor) o 'both' (ambos). Hub no está soportado. No
dirsrv_server_uri "ldap://localhost" URI del servidor a configurar. Dado que esto se ejecuta en el objetivo de Ansible, localhost debería estar bien. También se puede establecer en ldaps://localhost para usar TLS en el puerto 636. CSB
dirsrv_rootdn "cn=Directory Manager" DN raíz (nombre de usuario de la cuenta "administrador") CSB
dirsrv_rootdn_password secreto Contraseña para la cuenta de DN raíz CSB
dirsrv_use_starttls true Usar StartTLS para conectarse al servidor CSB
dirsrv_tls_certificate_trusted true Verdadero si el certificado TLS es de una CA de confianza, falso si es autofirmado o de una CA privada, sin usar si no se utiliza TLS CSB
dirsrv_serverid default ID del servidor, también conocido como ID de instancia, por ejemplo, si el servidor está instalado en el directorio dirsrv/slapd-example, "example" es el ID del servidor CSB
dirsrv_suffix dc=example,dc=local Sufijo raíz CSB
dirsrv_supplier_replica_id 1 Elige un número entre 1 y 65534. No lo asignes a otros servidores o pueden suceder cosas malas. No SB
dirsrv_consumer_uri "ldap://consumer.example.com:389/" URI completo, incluyendo el puerto, al que el proveedor se conectará para realizar la replicación empujando cambios No SB
dirsrv_replication_user_remote Replication Manager Cuenta de usuario que existe en el consumidor. El proveedor se conectará con esta cuenta para realizar la replicación. "Replication Manager" significa que la cuenta es "cn=Replication Manager,cn=config" SB
dirsrv_replication_user_password_remote Contraseña para la cuenta de usuario de replicación (Replication Manager) SB
dirsrv_replica_bind_method "PLAIN" Método de enlace que el proveedor usa para conectarse al consumidor (SIMPLE, PLAIN, SASL) SB
dirsrv_changelog_max_age "10d" Establece el valor de nsslapd-changelogmaxage SB
dirsrv_replica_attributes_list "(objectclass=*) $ EXCLUDE authorityRevocationList accountUnlockTime memberof" Establece el valor de nsds5ReplicatedAttributeList, el valor predeterminado de esta variable se usa en ejemplos de la documentación SB
dirsrv_replica_attributes_list_total "(objectclass=*) $ EXCLUDE accountUnlockTime" Establece el valor de nsds5ReplicatedAttributeListTotal, el valor predeterminado de esta variable se usa en ejemplos de la documentación SB
dirsrv_replication_user Replication Manager Cuenta de usuario a crear en el consumidor. Esta cuenta será utilizada por el proveedor para realizar el enlace en este servidor (el consumidor). "Replication Manager" significa que la cuenta será creada en "cn=Replication Manager,cn=config" CB
dirsrv_replication_user_password Contraseña para esa cuenta. CB
dirsrv_begin_replication_immediately true Booleano, establece nsds5ReplicaEnabled en "on" u "off" en el acuerdo de replicación. Esto debería ser seguro: si agregas un nuevo servidor, no comenzará a enviar su base de datos vacía a otros servidores en ningún caso porque tienen un ID de generación diferente y la replicación falla (consulta ejemplos para más detalles), pero si quieres ser aún más seguro o hacer algunas personalizaciones al acuerdo de replicación, establece esto en falso No CB
dirsrv_consumer_referral_to_supplier "ldap://supplier.example.com:389/" URI LDAP completo incluyendo puerto. Cuando un cliente intenta escribir en un consumidor, que es solo de lectura, redirigirá al cliente a este servidor (un proveedor que puede aceptar escrituras). C

Primero, elige si el servidor es un proveedor, consumidor o ambos y establece dirsv_role en consecuencia. Luego, establece las variables relacionadas: mira en la columna Rol, C = Consumidor, S = Proveedor, B = Ambos.

Algunas variables no se pueden cambiar una vez configuradas, cambiarlas puede generar resultados inesperados que van desde "no pasa nada" hasta "el rol falla". Algunas otras (detalles de autenticación, sufijo, etc.) deben establecerse en el valor correcto para el servidor, se pueden cambiar siempre que tenga sentido, es decir, puedes cambiar dirsrv_rootdn_password si has cambiado la contraseña de DN raíz para que este rol pueda autenticar correctamente, pero cambiar dirsrv_suffix entre una ejecución y otra en el mismo servidor no tiene sentido, a menos que hayas logrado cambiar el sufijo en 389DS.

Las siguientes variables tienen el mismo nombre y significado que en el rol 389ds-server, por lo que si estás utilizando ambos roles en el mismo playbook, puedes definirlas una sola vez:

  • dirsrv_rootdn
  • dirsrv_rootdn_password
  • dirsrv_tls_certificate_trusted
  • dirsrv_serverid
  • dirsrv_suffix

Dependencias

Ninguna.

Pero ten en cuenta que este rol espera que 389DS ya esté en funcionamiento, solo configura la replicación entre servidores existentes.

Ejemplo de Playbook

Más ejemplos, incluyendo la instalación de 389DS desde cero y las configuraciones de Vagrant necesarias para probarlas, están disponibles en el repositorio 389ds-examples.

Ten en cuenta que, generalmente, la replicación no comienza de inmediato porque la "generación del réplica" es diferente entre los servidores. Esto se puede solucionar con el procedimiento de "recarga de réplica", que se describe, por ejemplo, en la sección 15.2.5 de la Guía de Administración. Necesitarás realizarlo en proveedores o servidores con el rol "ambos".

Básicamente, hacer una "recarga de réplica" empujará forzosamente la base de datos de un proveedor a un consumidor, reemplazando la base de datos anterior del consumidor: haz esto comenzando desde un proveedor y moviéndote gradualmente hacia los demás, teniendo cuidado de no reemplazar una base de datos de producción con la base de datos vacía de un servidor que apenas ha sido instalado. Cuando dos servidores tienen exactamente la misma base de datos, la replicación comienza automáticamente e inmediatamente.

El procedimiento también se explica con más detalles en el repositorio 389ds-examples.

Consumidor y proveedor

Configura primero el consumidor, este servidor contendrá una copia de lectura de la base de datos:

- 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: secreto
      dirsrv_replication_user_password: foo # Se creará cn=Replication Manager,cn=config con esta contraseña
      dirsrv_consumer_referral_to_supplier: "ldap://supplier.example.local:389/"

Luego configura el proveedor, este servidor aceptará escrituras y empujará todos los cambios al consumidor:

- 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: muysecreto
      dirsrv_replication_user_password_remote: foo # Se conectará con cn=Replication Manager,cn=config y esta contraseña en el otro servidor
      dirsrv_consumer_uri: "ldap://consumer.example.local:389/" # El otro servidor (el consumidor definido arriba)
      dirsrv_supplier_replica_id: 123

Multi-maestro con dos maestros

- 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: secreto1
      dirsrv_replication_user_password: "aaaaaa"
      dirsrv_replication_user_password_remote: "bbbbbb" # En el otro servidor
      dirsrv_consumer_uri: "ldap://mm2.example.local:389/" # El otro servidor
      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: secreto2
      dirsrv_replication_user_password: "bbbbbb"
      dirsrv_replication_user_password_remote: "aaaaaa" # En el otro servidor
      dirsrv_consumer_uri: "ldap://mm1.example.local:389/" # El otro servidor
      dirsrv_supplier_replica_id: 2

Errores conocidos

Si dirsrv_replication_user_password se cambia, no se reporta ningún cambio: esto se debe a que la contraseña realmente cambia en cada ejecución (Ansible no puede saber si la contraseña hash anterior es la misma que la nueva, así que se cambiará y se hashará de nuevo), pero hay un changed_when: false para ocultar ese detalle.

Licencia

MIT.

Acerca del proyecto

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

Instalar
ansible-galaxy install lvps.389ds_replication
Licencia
mit
Descargas
1.9k
Propietario