[SOLUCIONADO] Tratando de entender el deploy de LDAP para Arai

Estoy tratando de instalar LDAP para una instalacion de pruebas de Arai (y Expedientes)

Llego aca 1 y entiendo que debo ir aca 2. Dentro de este segundo enlace, me encuentro secciones como esta 3 donde esta bien explicado el QUE pero no el DONDE.

si miro el archivo ldap.yml, no esta ahi la configuración de la estructura. Sigo leyendo y veo referencias a un Ldap.yml pero que es una deficion, no parece ser tampoco lo que busco. Donde se realiza este “ajuste” indicado en 3???

Hola Tomas,

En [2] te hace referencia a esta página, que intenta describir los archivos.

El archivo de estructura o de objetos de referencia para LDAP sería este estructura-arai-usuarios.ldif. Con eso de ejemplo pueden armar uno a las necesidades de su UUNN.

Si seguis la guía [2] en el paso de instalación manual, el paso 5 es el que carga el archivo de estructura de tu UUNN.

Espero se entienda. Si les parece que es mejorable se aceptan sugerencias. La documentación de arai-usuarios es un poco independiente de la parte de expedientes por eso no los persigo para que la entiendan jeje.

Ok, tal vez me falto dejar esa parte clara. ¿Existe una manera de levantar todo LDAP desde algún container sin necesidad de la instalación manual? esta claro que desde la instalación manual puede hacerse todo esto, pero la idea es aprovechar el envión y dejar todo en containers. Ahora, capaz no esta hecho esto que estoy consultando. Que sea mejorable la verdad no me consta, porque tampoco es un deploy que yo tenga claro como para ponerme a criticar, es que sinceramente llegue a esa parte y me quede trabado (por no querer hacer la instalación manual mas que nada). Se entiende mejor ahí la duda?

Hola!

Para un despliegue en Docker de OpenLDAP, desde el SIU y para nuestros ambientes utilizamos una imagen basada en osixia. Muy completa y customizable.

La documentación para ir por OpenLDAP en Docker es esta. No es la recomendada sólo porque UDS tienen que tomarse el tiempo de ajustarla a sus necesidades y configurarla para un ambiente de producción.

Para que te des una idea, todo lo que dice acá de ajustar la imagen, es sobre el contenido de la imagen docker openldap publicada por el SIU (los fuentes, dockerfile, schema, ldif están acá).

Espero sea de utilidad!

Ok, a ver si entendi:

  • Hago un fork de este repo: https://github.com/SIU-Toba/docker
  • Customizo lo que este bajo el dir openldap de mi fork
  • Configuro para que Docker Hub buildee las imágenes (o hago yo la build local, es lo mismo)

Esa seria la metodología para “Ajustar la imágen a las necesidades”?

Tomas,

Perfectamente podes encarar por ese lado, con lo que mantienen uds en la imagen encapsulada toda la config necesaria.

El otro camino sería tomar la imagen original y montarle como volumen una versión personalizada de su estructura en el archivo 01-estructuraUsuarios.ldif. No es la mejor ya que lanzar el contenedor requiere muchos parámetros pero es la más rápida ya que no tienen que construir nada.

Trataré de armar un ejemplo con esto último, si les sirve.

Como quieras, es probable que lo encare de la primer forma igual asi que no seria necesario. Gracias igual por la paciencia.

Genial, saludos!

PD: cobro en moneda feedback :smiley:

Perdon que siga con el hilo solucionado, pero estoy en el paso de personalizar la image. Puntualmente el paso 3, de cambiar los defaults de los archivos environments.

Veo por ejemplo que aca hay claves: https://github.com/SIU-Toba/docker/blob/master/openldap/environment/my-env.startup.yaml

Y que incluso hay un directorio de certificados.

Es poco viable pretender que esto quede sincronizado en el repo (sobre todo porque hay que mantenerlo en github.com para que se pueda conectar con el Hub de Docker y hacer build de la imagen).

Si cambio los archivos pero no los commiteo, me arriesgo a perder los cambios si ustedes tocan algo (deje su repo como upstream). La otra opción es tenerlo solo en nuestro repositorio interno, pero sigue siendo feo commitear la clave del admin de LDAP (o una clave privada).

Que estoy pensando mal?

Tomas! No hay drama, para eso está!

Respecto a los certificados, nosotros lo usamos con LDAP_TLS=false por ahora, ya que se trata de ambientes de testing.

Así y todo, fijate esta sería una forma agradable de configurarle las claves, más sensibles:

version: '3.7'
services:
  ldap:
    image: siutoba/docker-openldap-arai:openldap-3
    environment:
      LDAP_ORGANIZATION: CIN
      LDAP_DOMAIN: "siu.cin.edu"
      LDAP_REMOVE_CONFIG_AFTER_SETUP: "false"
      LDAP_ADMIN_PASSWORD: admin 
      LDAP_CONFIG_PASSWORD: admin

Te recomiendo que lo leas a Osixia, está muy bien documentado como trabajar con sus imágenes! En especial como usar los secrets para las claves.

Saludos!

Pude avanzar un poco mas. Ahora tengo un error cuando quiero levantar con docker-compose una base LDAP. Copio la salida


root@portal-d:/var/aplicaciones/expedientes/dev/servicios# docker-compose -f ldap.yml -p ldap up -d
WARNING: Service "ldap" uses secret "usuarios_ldap_admin_pass" which is external. External secrets are not available to containers created by docker-compose.
WARNING: Service "ldap" uses secret "usuarios_ldap_config_pass" which is external. External secrets are not available to containers created by docker-compose.
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Creating volume "ldap_volumen_ldap_data" with default driver
Creating volume "ldap_volumen_ldap_config" with default driver
Pulling ldap (tdelvechio/docker-ldap-unlu:latest)...
latest: Pulling from tdelvechio/docker-ldap-unlu
8559a31e96f4: Pull complete
1ab40e40d006: Pull complete
b578faeebc89: Pull complete
d101246a274b: Pull complete
f07e49f51d05: Pull complete
b41b15b6b364: Pull complete
3c18a389bf1d: Pull complete
26752ae4d31f: Pull complete
26e71d0f11cd: Pull complete
c94f456b1a50: Pull complete
297fcfaa83b6: Pull complete
50dd03b11e38: Pull complete
Digest: sha256:8318c8a4fcca6c29854c008bf68e5f0fddf76c98f868504672baa235c6abe8e9
Status: Downloaded newer image for tdelvechio/docker-ldap-unlu:latest
Creating ldap_ldap_1 ... error

ERROR: for ldap_ldap_1  Cannot start service ldap: Could not attach to network red-siu: rpc error: code = PermissionDenied desc = network red-siu not manually
attachable

ERROR: for ldap  Cannot start service ldap: Could not attach to network red-siu: rpc error: code = PermissionDenied desc = network red-siu not manually attachable
ERROR: Encountered errors while bringing up the project.

Quise usar de base el yml de expendientes: https://hub.siu.edu.ar/siu/expedientes/-/blob/develop/dev/servicios/ldap.yml

(en dicho yml cambie la imagen del SIU por una propia personalizada y edite las variables de entorno. Ahora, porque se usan secrets ahi si no son compatibles con docker-compose? no me queda clara esa parte.

Ademas veo que es completamente diferente a esta otra parte de la doc de arai: https://documentacion.siu.edu.ar/usuarios/docs/cache/instalacion-bases-ldap/#desplegar

En este ultimo caso tampoco tengo claro como se conectarian entre si, ya que no usan las mismas redes de Docker.

Estas mezclando docker-compose con Docker Swarm. Tenes que levantarlo vía “docker stack deploy …” como te dice incluso el error arriba. Los secrets externos se usan vía swarm únicamente.

Es que una cosa es arai-usuarios, es una solución independiente y así lo refleja la documentación de arai-usuarios. Te da una idea de la solución a implementar pero no toma decisiones de implementación particular, podes ejecutar LDAP como docker ya sea en kubernetes, Swarm, Docker engine local. En esos casos siempre es diferente la forma de despliegue y lo que tengas que tener en consideración. Por eso uds tienen que evaluar en detalles como desplegar este OpenLDAP y tomar la decisión con la que más se sientan a gusto (manual, docker, docker swarm, etc).

La documentación de Expedientes Electrónicos integrado esta armada en torno a Docker Swarm. Si quieren poner LDAP vía Swarm tenes que armar un service acorde para producción con tus ajustes. Si es simplemente una prueba podes usar el que proponen en dev/servicios/ldap.yml respectivamente.