Sign inSign up

jordijsmx/ldap

By jordijsmx

•Updated over 2 years ago

Image
0

1.1K

jordijsmx/ldap repository overview

⁠LDAP Server

⁠Imatges:

  • jordijsmx/ldap:base Servidor amb les dades de edt.org.
  • jordijsmx/ldap:config Servidor amb nova base de dades pròpia i base de dades cn=config a slapd.conf
  • jordijsmx/ldap:editat Servidor amb les dades de edt.org amb els canvis:
    • user01-user10 amb password xifrat
    • 2 ou noves i 2 usuaris a dins d'aquestes ou
    • Password de manager xifrat
    • Base de dades cn=config a slapd.conf
  • jordijsmx/ldap:repte4 Servidor LDAP en detach amb ENTRYPOINT i persistència de dades
  • jordijsmx/ldap:repte5 Servidor LDAP en detach amb més ENTRYPOINT i persistència de dades
  • jordijsmx/ldap:repte6 Servidor LDAP en detach exportant variables d'entorn pròpies per canviar el nom d'admin i la seva contrasenya

⁠jordijsmx/ldap:config

Servidor amb nova base de dades pròpia i base de dades cn=config a slapd.conf

Fitxers necessaris al directori context

Dockerfile
edt-org.ldif
jordi-org.ldif
slapd.conf
startup.sh

Creació de domini propi

Crearem la nostre base de dades ldap en el fitxer jordi-org.ldif

dn: dc=jordi,dc=org
dc: jordi
description: organitzacio de en pere
objectClass: dcObject
objectClass: organization
o: jordi.org

dn: ou=empleats,dc=jordi,dc=org
ou: empleats
description: Container per a persones empleades
objectclass: organizationalunit

dn: cn=Pau Pou,ou=empleats,dc=jordi,dc=org
objectclass: inetOrgPerson
cn: Pau Pou
cn: Pauet Pou
sn: Pou
homephone: 555-222-2220
mail: [email protected]
description: Watch out for this guy

dn: cn=Anna Pou,ou=empleats,dc=jordi,dc=org
objectclass: inetOrgPerson
cn: Anna Pou
cn: Annita Pou
sn: Pou
homephone: 555-222-2221
mail: [email protected]
description: Watch out for this girl

Contingut slapd.conf

Modificarem l'arxiu de configuració per afegir la nova base de dades i, a més, una base de dades cn=config per administrar les bases de dades del LDAP

# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
# debian packages: slapd ldap-utils

include		/etc/ldap/schema/corba.schema
include		/etc/ldap/schema/core.schema
include		/etc/ldap/schema/cosine.schema
include		/etc/ldap/schema/duaconf.schema
include		/etc/ldap/schema/dyngroup.schema
include		/etc/ldap/schema/inetorgperson.schema
include		/etc/ldap/schema/java.schema
include		/etc/ldap/schema/misc.schema
include		/etc/ldap/schema/nis.schema
include		/etc/ldap/schema/openldap.schema
#include		/etc/ldap/schema/ppolicy.schema
include		/etc/ldap/schema/collective.schema

# Allow LDAPv2 client connections.  This is NOT the default.
allow bind_v2

pidfile		/var/run/slapd/slapd.pid
#argsfile	/var/run/openldap/slapd.args

modulepath /usr/lib/ldap
moduleload back_mdb.la
moduleload back_monitor.la

# ----------------------------------------------------------------------
database mdb
suffix "dc=edt,dc=org"
rootdn "cn=Manager,dc=edt,dc=org"
rootpw secret
directory /var/lib/ldap
index objectClass eq,pres
access to * by self write by * read
# ---------------------------------------------------------------------
database mdb
suffix "dc=jordi,dc=org"
rootdn "cn=mymanager,dc=jordi,dc=org"
rootpw jordi
directory /var/lib/ldap-jordi
index objectClass eq,pres
access to * by * write
# ----------------------------------------------------------------------
database config
rootdn "cn=Sysadmin,cn=config"
rootpw syskey
# ----------------------------------------------------------------------
database monitor
access to *
       by dn.exact="cn=Manager,dc=edt,dc=org" read
       by * none
# ----------------------------------------------------------------------

Generar la imatge

docker build -t jordijsmx/ldap:config .

Arrancar la imatge

docker run --rm -h ldap.edt.org -it jordijsmx/ldap:config /bin/bash

Arrancar la imatge en detach

docker run --rm --name ldap -h ldap.edt.org -d jordijsmx/ldap:config

Entrar al container engegat

docker exec -it ldap /bin/bash

⁠jordijsmx/ldap:repte4

Servidor LDAP en detach amb ENTRYPOINT i persistència de dades

Contingut directori context

Dockerfile
edt-org.ldif
slapd.conf
startup.sh

Contingut Dockerfile

En aquest cas hem de substituir CMD per ENTRYPOINT.

  • CMD indica l'ordre amb que s'ha diniciar el container. Si s'indica al final del docker run, aquesta ordre té prioritat sobre el CMD indicat.

  • Amb ENTRYPOINT la ordre indicada s'executara si o si com a ordre d'arrancada del container (PID 1)

FROM debian:latest
LABEL author="@jordijsmx Jordi Jubete"
LABEL subject="ldapserver"
RUN apt-get update
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install procps iproute2 tree nmap vim ldap-utils slapd less
RUN mkdir /opt/docker
COPY * /opt/docker/
RUN chmod +x /opt/docker/startup.sh
WORKDIR /opt/docker
ENTRYPOINT ["/opt/docker/startup.sh"]
EXPOSE 389

Contingut startup.sh

#!/bin/bash

function initdb() {
  rm -rf /etc/ldap/slapd.d/*
  rm -rf /var/lib/ldap/*
  slaptest -f /opt/docker/slapd.conf -F /etc/ldap/slapd.d
  slapadd -F /etc/ldap/slapd.d -l /opt/docker/edt-org.ldif
  chown -R openldap.openldap /etc/ldap/slapd.d /var/lib/ldap
  /usr/sbin/slapd -d0
}

function startdb() {
  /usr/sbin/slapd -d0
}

case $1 in
  initdb)
    echo "Inicialitzant la base de dades" 
    initdb;;
  startdb)
    echo "Engegant la base de dades" 
    startdb;;
esac

Creació de volums

docker volume create ldap-config
docker volume create ldap-data

Generar la imatge

docker build -t jordijsmx/ldap:repte4 .

Inicialitzar base de dades LDAP (entrypoint "initdb")

docker run --rm --name repte4 -h ldap.edt.org -v ldap-config:/etc/ldap/slapd.d -v ldap-data:/var/lib/ldap -d jordijsmx/ldap:repte4 initdb

Entrar al container engegat

docker exec -it repte4 /bin/bash

Arrancar la imatge amb persistència de dades (entrypoint "startdb")

  • Fitxers de configuració: /etc/ldap/slapd.d
  • Fitxers de dades: /var/lib/ldap
docker run --rm --name repte4 -h ldap.edt.org -v ldap-config:/etc/ldap/slapd.d -v ldap-data:/var/lib/ldap -d jordijsmx/ldap:repte4 startdb

Tag summary

Content type

Image

Digest

sha256:63aa81c1a…

Size

106.8 MB

Last updated

over 2 years ago

docker pull jordijsmx/ldap