# Rol openldap-docker Este rol configurar un servicio OpenLDAP dentro de un container Docker. Permite un esquema de replicación delta-syncrepl [deltasync]. El rol efectúa a grandes rasgos las siguientes tareas: 1. _Configuración general_: setea clave del administrador `cn=admin,cn=config` y carga esquemas. 2. _Configuración de provider delta-syncrepl_: configura los módulos `accesslog` y `syncprov` en el provider de replicación. 3. _Configuración de dominios_: Hace un _loop_ sobre cada dominio especificado en `openldap_domains`, configurando entradas de las base de datos en `cn=config` y clientes de replicación del dominio. La siguientes consideraciones deben ser tenidas en cuenta al usar este rol: * Se deben especificar *primero* los dominios más generales (`ejemplo.com.ar`) y luego los más específicos (`sub.ejemplo.com.ar`). * La base `cn=accesslog` del provider requiere que se especifique un usuario administrador en la variable `openldap_accesslog_admin_dn`. Este usuario *debe* pertenecer a alguno de los dominios configurados en el servidor. * Se debe setear una clave para el usuario administrador `cn=admin,cn=config` en la variable `openldap_admin_password`. ## Configuración del rol Las variables a continuación determinan el comportamiento del rol. El valor por defecto se muestra entre paréntesis. ### Configuraciones generales * `openldap_schemas`: Schemas a cargar. Cada schema personalizado se debe agregar el LDIF correspondiente en `files/schemas/NOMBRE.ldif` dentro del rol. Valor por defecto: ``` - core - cosine - nis - inetorgperson - misc ``` * `openldap_create_dit_entries` (`yes`): Especifica si se debe crear el DIT: dominios, usuarios administradores, OUs, para cada dominio. ### Replicación A no ser que se seteen las variables a continuación, el rol no configura replicación alguna. * `openldap_provider` (`no`): En un esquema de replicación, el host es provider. * `openldap_consumer` (`no`): En un esquema de replicación, el host es consumer. * `openldap_replicator_base` (`dc=example,dc=com`): DN base a partir del cual se replica. * `openldap_accesslog_dir` (`/var/lib/ldap/accesslog`): Directorio donde crear la base `cn=accesslog`. ### Credenciales * `openldap_admin_password` (`password`): Clave del usuario administrador `cn=admin,cn=config`. * `openldap_accesslog_admin_dn` (`cn=admin,dc=example,dc=com`): DN del usuario administrador para la base `cn=accesslog`. Se debe setear en el _provider_. * `openldap_replicator_dn` (`cn=replicator,dc=example,dc=com`): DN del usuario usado para replicación. Se debe setear en el _provider_ y en el _consumer_. * `openldap_replicator_password` (`password`): Clave del usuario usado para replicación. Se debe setear en el _provider_ y en el _consumer_. ### Valores por defecto para los dominios * `openldap_default_db_access`: Lista con permisos de acceso. Valor por defecto: ``` - {0}to attrs=userPassword by self write by anonymous auth by * none" - {1}to attrs=shadowLastChange by self write by * read" - {2}to * by * read" ``` * `openldap_default_db_index`: Lista con índices del dominio. Valor por defecto: ``` - cn,uid eq - member,memberUid eq - objectClass eq - uidNumber,gidNumber eq ``` * `openldap_default_db_limits`: Límites de acceso al dominio. Valor por defecto: `[]` (lista vacía) * `openldap_default_domain_ous`: OUs a crear dentro del dominio. Valor por defecto: ``` - Alias - Group - People ``` ### Configuración de dominios La configuración de los dominios se setea en la variable `openldap_domains` (`[]`). Esta variable es una _lista de diccionarios_ en la que cada item representa un dominio. Cada dominio (diccionario) tiene las siguientes claves: * `name`: Obligatorio. Nombre del dominio en notación `mi.dominio.com`. Para este ejemplo se crea la organizacion `dc=mi,dc=ejemplo,dc=com`. * `admincn` (`admin`): cn del administrador, cuyo DN vendrá dado por `cn=admin,dc=mi,dc=ejemplo,dc=com`. * `adminpw` (`password`): clave del administrador del dominio. Se recomienda cambiar este valor, o setear la variable `adminpw_id`. * `adminpw_id`: ID de la clave del administrador en Rattic. Sobreescribe el valor de `adminpw` con la clave obtenida de Rattic. * `access`: lista con permisos de acceso. Por defecto toma el valor de la variable `openldap_default_db_access`. * `ou`: unidades organizacionales del dominio. Por defecto toma el valor de la variable `openldap_default_domain_ous`. * Si bien se crea un usuario admin para los subdominios, éstos por defecto no tienen permiso alguno. [deltasync]: https://openldap.org/doc/admin24/replication.html#Delta-syncrepl