Skip to content

Commit 46a87ee

Browse files
committed
Added usage of certificates from internal path
1 parent 1d7c633 commit 46a87ee

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,14 @@ argument to entrypoint if you don't want to overwrite them.
159159

160160
#### Seed from internal path
161161

162-
This image can load ldif and schema files at startup from an internal path. This is useful if a continuous integration service mounts automatically the working copy (sources) into a docker service, which has a relation to the ci job.
162+
This image can load ldif and schema files at startup from an internal path. Additionally, certificates can be copied from an internal path. This is useful if a continuous integration service mounts automatically the working copy (sources) into a docker service, which has a relation to the ci job.
163163

164164
For example: Gitlab is not capable of mounting custom paths into docker services of a ci job, but gitlab automatically mounts the working copy in every service container. So the working copy (sources) are accessible under `/builds` in every services
165165
of a ci job. The path to the working copy can be obtained via `${CI_PROJECT_DIR}`. See also: https://docs.gitlab.com/runner/executors/docker.html#build-directory-in-service
166166

167167
This may also work with other CI services, if they automatically mount the working directory to the services of a ci job like gitlab ci does.
168168

169-
In order to seed ldif or schema files from internal path you must set the specific environment variable `LDAP_SEED_INTERNAL_LDIF_PATH` and/or `LDAP_SEED_INTERNAL_SCHEMA_PATH`. If set this will copy any *.ldif or *.schema file into the default seeding
169+
In order to seed ldif or schema files from internal path you must set the specific environment variable `LDAP_SEED_INTERNAL_LDIF_PATH` and/or `LDAP_SEED_INTERNAL_SCHEMA_PATH`. If set this will copy any files in the specified directory into the default seeding
170170
directories of this image.
171171

172172
Example variables defined in gitlab-ci.yml:
@@ -175,6 +175,14 @@ Example variables defined in gitlab-ci.yml:
175175
LDAP_SEED_INTERNAL_LDIF_PATH: "${CI_PROJECT_DIR}/docker/openldap/ldif"
176176
LDAP_SEED_INTERNAL_SCHEMA_PATH: "${CI_PROJECT_DIR}/docker/openldap/schema"
177177

178+
Also, certificates can be used by the internal path. The file, specified in a variable, will be copied in the default certificate directory of this image. If desired, you can use these with the LDAP_TLS_CRT_FILENAME, LDAP_TLS_KEY_FILENAME, LDAP_TLS_CA_CRT_FILENAME and LDAP_TLS_DH_PARAM_FILENAME to set a different filename in the default certificate directory of the image.
179+
180+
variables:
181+
LDAP_SEED_INTERNAL_LDAP_TLS_CRT_FILE: "${CI_PROJECT_DIR}/docker/certificates/certs/cert.pem"
182+
LDAP_SEED_INTERNAL_LDAP_TLS_KEY_FILE: "${CI_PROJECT_DIR}/docker/certificates/certs/key.pem"
183+
LDAP_SEED_INTERNAL_LDAP_TLS_CA_CRT_FILE: "${CI_PROJECT_DIR}/docker/certificates/ca/ca.pem"
184+
LDAP_SEED_INTERNAL_LDAP_TLS_DH_PARAM_FILE: "${CI_PROJECT_DIR}/certificates/dhparam.pem"
185+
178186
### Use an existing ldap database
179187

180188
This can be achieved by mounting host directories as volume.

image/environment/default.startup.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,9 @@ LDAP_SSL_HELPER_PREFIX: ldap # ssl-helper first search config from LDAP_SSL_HELP
6363
SSL_HELPER_AUTO_RENEW_SERVICES_IMPACTED: slapd
6464

6565
# Internal seeding. For example, for services in Gitlab CI.
66+
LDAP_SEED_INTERNAL_LDAP_TLS_CRT_FILE:
67+
LDAP_SEED_INTERNAL_LDAP_TLS_KEY_FILE:
68+
LDAP_SEED_INTERNAL_LDAP_TLS_CA_CRT_FILE:
69+
LDAP_SEED_INTERNAL_LDAP_TLS_DH_PARAM_FILE:
6670
LDAP_SEED_INTERNAL_LDIF_PATH:
6771
LDAP_SEED_INTERNAL_SCHEMA_PATH:

image/service/slapd/startup.sh

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,6 @@ file_env 'LDAP_ADMIN_PASSWORD'
3838
file_env 'LDAP_CONFIG_PASSWORD'
3939
file_env 'LDAP_READONLY_USER_PASSWORD'
4040

41-
# Seed ldif from internal path if specified
42-
file_env 'LDAP_SEED_INTERNAL_LDIF_PATH'
43-
if [ ! -z "${LDAP_SEED_INTERNAL_LDIF_PATH}" ]; then
44-
mkdir -p /container/service/slapd/assets/config/bootstrap/ldif/custom/
45-
cp -R ${LDAP_SEED_INTERNAL_LDIF_PATH}/*.ldif /container/service/slapd/assets/config/bootstrap/ldif/custom/
46-
fi
47-
48-
# Seed schema from internal path if specified
49-
file_env 'LDAP_SEED_INTERNAL_SCHEMA_PATH'
50-
if [ ! -z "${LDAP_SEED_INTERNAL_SCHEMA_PATH}" ]; then
51-
mkdir -p /container/service/slapd/assets/config/bootstrap/schema/custom/
52-
cp -R ${LDAP_SEED_INTERNAL_SCHEMA_PATH}/*.schema /container/service/slapd/assets/config/bootstrap/schema/custom/
53-
fi
54-
5541
# create dir if they not already exists
5642
[ -d /var/lib/ldap ] || mkdir -p /var/lib/ldap
5743
[ -d /etc/ldap/slapd.d ] || mkdir -p /etc/ldap/slapd.d
@@ -74,6 +60,29 @@ LDAP_TLS_CRT_PATH="${CONTAINER_SERVICE_DIR}/slapd/assets/certs/$LDAP_TLS_CRT_FIL
7460
LDAP_TLS_KEY_PATH="${CONTAINER_SERVICE_DIR}/slapd/assets/certs/$LDAP_TLS_KEY_FILENAME"
7561
LDAP_TLS_DH_PARAM_PATH="${CONTAINER_SERVICE_DIR}/slapd/assets/certs/$LDAP_TLS_DH_PARAM_FILENAME"
7662

63+
copy_internal_seed_if_exists() {
64+
local src=$1
65+
local dest=$2
66+
if [ ! -z "${src}" ]; then
67+
echo -e "Copy internal seed from ${src} to ${dest}"
68+
mkdir -p ${dest}
69+
cp -R ${src} ${dest}
70+
fi
71+
}
72+
73+
# Copy seed files from internal path if specified
74+
file_env 'LDAP_SEED_INTERNAL_LDAP_TLS_CRT_FILE'
75+
copy_internal_seed_if_exists "${LDAP_SEED_INTERNAL_LDAP_TLS_CRT_FILE}" "${LDAP_TLS_CRT_PATH}"
76+
file_env 'LDAP_SEED_INTERNAL_LDAP_TLS_KEY_FILE'
77+
copy_internal_seed_if_exists "${LDAP_SEED_INTERNAL_LDAP_TLS_KEY_FILE}" "${LDAP_TLS_KEY_PATH}"
78+
file_env 'LDAP_SEED_INTERNAL_LDAP_TLS_CA_CRT_FILE'
79+
copy_internal_seed_if_exists "${LDAP_SEED_INTERNAL_LDAP_TLS_CA_CRT_FILE}" "${LDAP_TLS_CA_CRT_PATH}"
80+
file_env 'LDAP_SEED_INTERNAL_LDAP_TLS_DH_PARAM_FILE'
81+
copy_internal_seed_if_exists "${LDAP_SEED_INTERNAL_LDAP_TLS_DH_PARAM_FILE}" "${LDAP_TLS_DH_PARAM_PATH}"
82+
file_env 'LDAP_SEED_INTERNAL_SCHEMA_PATH'
83+
copy_internal_seed_if_exists "${LDAP_SEED_INTERNAL_SCHEMA_PATH}" "${CONTAINER_SERVICE_DIR}/slapd/assets/config/bootstrap/schema/custom"
84+
file_env 'LDAP_SEED_INTERNAL_LDIF_PATH'
85+
copy_internal_seed_if_exists "${LDAP_SEED_INTERNAL_LDIF_PATH}" "${CONTAINER_SERVICE_DIR}/slapd/assets/config/bootstrap/ldif/custom"
7786

7887
# CONTAINER_SERVICE_DIR and CONTAINER_STATE_DIR variables are set by
7988
# the baseimage run tool more info : https://github.com/osixia/docker-light-baseimage

0 commit comments

Comments
 (0)