Skip to content

Commit 6e46609

Browse files
committed
replication
1 parent c3f1e6d commit 6e46609

File tree

7 files changed

+41
-44
lines changed

7 files changed

+41
-44
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ By default TLS is enable, a certificate is created for the CN (common name) ldap
9595

9696
Add your custom certificate, private key and CA certificate in the directory **image/service/slapd/assets/ssl** adjust filename in **image/env.yml** and rebuild the image ([see manual build](#manual-build)).
9797

98-
Or you can set your custom certificate at run time, by mouting a directory containing thoses files to **/osixia/slapd/ssl** and adjust there name with the following environment variables :
98+
Or you can set your custom certificate at run time, by mouting a directory containing thoses files to **/osixia/slapd/assets/ssl** and adjust there name with the following environment variables :
9999

100-
docker run -v /path/to/certifates:/osixia/slapd/ssl \
100+
docker run -v /path/to/certifates:/osixia/slapd/assets/ssl \
101101
-e SSL_CRT_FILENAME=my-ldap.crt \
102102
-e SSL_KEY_FILENAME=my-ldap.key \
103103
-e SSL_CA_CRT_FILENAME=the-ca.crt \

image/Dockerfile

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM osixia/baseimage:0.10.4
1+
FROM osixia/baseimage:0.10.5
22
MAINTAINER Bertrand Gouny <[email protected]>
33

44
# Use baseimage-docker's init system.
@@ -7,25 +7,21 @@ CMD ["/sbin/my_init"]
77
# Add openldap user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
88
RUN groupadd -r openldap && useradd -r -g openldap openldap
99

10-
# Install OpenLDAP and ldap-utils (and ssl-kit from baseimage), remove default ldap db
10+
# Install OpenLDAP, ldap-utils and ssl-kit from baseimage, remove default ldap db
1111
RUN apt-get -y update && /sbin/enable-service ssl-kit \
1212
&& LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes --no-install-recommends \
1313
slapd ldap-utils ntp \
1414
&& rm -rf /var/lib/ldap /etc/ldap/slapd.d
1515

16-
# Add OpenLDAP assets
17-
ADD service/slapd/assets /osixia/slapd
16+
# Add services to /osixia
17+
ADD service /osixia
1818

19-
# Clean all
20-
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
19+
# Use baseimage service auto-install script and clean all
20+
RUN ./sbin/auto-install && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
2121

2222
# Add default env variables
2323
ADD env.yml /etc/env.yml
2424

25-
# Add OpenLDAP container start config & daemon
26-
ADD service/slapd/container-start.sh /etc/my_init.d/slapd
27-
ADD service/slapd/daemon.sh /etc/service/slapd/run
28-
2925
# Set OpenLDAP data and config directories in a data volume
3026
VOLUME ["/var/lib/ldap", "/etc/ldap/slapd.d"]
3127

image/env.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ SSL_KEY_FILENAME: ldap.key
1414
SSL_CA_CRT_FILENAME: ca.crt
1515

1616
USE_REPLICATION: true
17+
1718
REPLICATION_HOSTS:
1819
- ldap://ldap.example.org:
1920
- server_id: 1

image/service/slapd/assets/config/tls/tls-enable.ldif

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ replace: olcTLSCipherSuite
44
olcTLSCipherSuite: SECURE256:-VERS-SSL3.0
55
-
66
replace: olcTLSCACertificateFile
7-
olcTLSCACertificateFile: /osixia/slapd/ssl/ca.crt
7+
olcTLSCACertificateFile: /osixia/slapd/assets/ssl/ca.crt
88
-
99
replace: olcTLSCertificateFile
10-
olcTLSCertificateFile: /osixia/slapd/ssl/ldap.crt
10+
olcTLSCertificateFile: /osixia/slapd/assets/ssl/ldap.crt
1111
-
1212
replace: olcTLSCertificateKeyFile
13-
olcTLSCertificateKeyFile: /osixia/slapd/ssl/ldap.key
13+
olcTLSCertificateKeyFile: /osixia/slapd/assets/ssl/ldap.key
1414
-
1515
replace: olcTLSDHParamFile
16-
olcTLSDHParamFile: /osixia/slapd/ssl/dhparam.pem
16+
olcTLSDHParamFile: /osixia/slapd/assets/ssl/dhparam.pem
1717
-
1818
replace: olcTLSVerifyClient
19-
olcTLSVerifyClient: never
19+
olcTLSVerifyClient: never
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
Add your ssl crt, key and ca crt here
2-
or during docker run mount a data volume with thoses files to /osixia/slapd/ssl
2+
or during docker run mount a data volume with thoses files to /osixia/slapd/assets/ssl

image/service/slapd/container-start.sh

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ if [ ! -e "$FIRST_START_DONE" ]; then
4545
local LDAP_KEY=$3
4646

4747
# check certificat and key or create it
48-
/sbin/ssl-kit "/osixia/slapd/ssl/$LDAP_CRT" "/osixia/slapd/ssl/$LDAP_KEY" --ca-crt=/osixia/slapd/ssl/$CA_CRT --gnutls
48+
/sbin/ssl-kit "/osixia/slapd/assets/ssl/$LDAP_CRT" "/osixia/slapd/assets/ssl/$LDAP_KEY" --ca-crt=/osixia/slapd/assets/ssl/$CA_CRT --gnutls
4949

5050
# create DHParamFile if not found
51-
[ -f /osixia/slapd/ssl/dhparam.pem ] || openssl dhparam -out /osixia/slapd/ssl/dhparam.pem 2048
51+
[ -f /osixia/slapd/assets/ssl/dhparam.pem ] || openssl dhparam -out /osixia/slapd/assets/ssl/dhparam.pem 2048
5252

5353
# fix file permissions
5454
chown -R openldap:openldap /osixia/slapd
@@ -118,13 +118,13 @@ EOF
118118

119119
# convert schemas to ldif
120120
SCHEMAS=""
121-
for f in $(find /osixia/slapd/config/bootstrap/schema -name \*.schema -type f); do
121+
for f in $(find /osixia/slapd/assets/config/bootstrap/schema -name \*.schema -type f); do
122122
SCHEMAS="$SCHEMAS ${f}"
123123
done
124-
/osixia/slapd/schema-to-ldif.sh "$SCHEMAS"
124+
/osixia/slapd/assets/schema-to-ldif.sh "$SCHEMAS"
125125

126126
# add schemas
127-
for f in $(find /osixia/slapd/config/bootstrap/schema -name \*.ldif -type f); do
127+
for f in $(find /osixia/slapd/assets/config/bootstrap/schema -name \*.ldif -type f); do
128128
echo "Processing file ${f}"
129129
# add schema if not already exists
130130
SCHEMA=$(basename "${f}" .ldif)
@@ -139,14 +139,14 @@ EOF
139139

140140
# adapt config password
141141
CONFIG_PASSWORD_ENCRYPTED=$(slappasswd -s $LDAP_CONFIG_PASSWORD)
142-
sed -i "s|{{ CONFIG_PASSWORD_ENCRYPTED }}|$CONFIG_PASSWORD_ENCRYPTED|g" /osixia/slapd/config/bootstrap/ldif/config-password.ldif
142+
sed -i "s|{{ CONFIG_PASSWORD_ENCRYPTED }}|$CONFIG_PASSWORD_ENCRYPTED|g" /osixia/slapd/assets/config/bootstrap/ldif/config-password.ldif
143143

144144
# adapt security config file
145145
get_base_dn
146-
sed -i "s|dc=example,dc=org|$BASE_DN|g" /osixia/slapd/config/bootstrap/ldif/security.ldif
146+
sed -i "s|dc=example,dc=org|$BASE_DN|g" /osixia/slapd/assets/config/bootstrap/ldif/security.ldif
147147

148148
# process config files
149-
for f in $(find /osixia/slapd/config/bootstrap/ldif -name \*.ldif -type f); do
149+
for f in $(find /osixia/slapd/assets/config/bootstrap/ldif -name \*.ldif -type f); do
150150
echo "Processing file ${f}"
151151
ldapmodify -Y EXTERNAL -Q -H ldapi:/// -f $f
152152
done
@@ -161,11 +161,11 @@ EOF
161161
check_tls_files $SSL_CA_CRT_FILENAME $SSL_CRT_FILENAME $SSL_KEY_FILENAME
162162

163163
# adapt tls ldif
164-
sed -i "s,/osixia/slapd/ssl/ca.crt,/osixia/slapd/ssl/${SSL_CA_CRT_FILENAME},g" /osixia/slapd/config/tls/tls-enable.ldif
165-
sed -i "s,/osixia/slapd/ssl/ldap.crt,/osixia/slapd/ssl/${SSL_CRT_FILENAME},g" /osixia/slapd/config/tls/tls-enable.ldif
166-
sed -i "s,/osixia/slapd/ssl/ldap.key,/osixia/slapd/ssl/${SSL_KEY_FILENAME},g" /osixia/slapd/config/tls/tls-enable.ldif
164+
sed -i "s,/osixia/slapd/assets/ssl/ca.crt,/osixia/slapd/assets/ssl/${SSL_CA_CRT_FILENAME},g" /osixia/slapd/assets/config/tls/tls-enable.ldif
165+
sed -i "s,/osixia/slapd/assets/ssl/ldap.crt,/osixia/slapd/assets/ssl/${SSL_CRT_FILENAME},g" /osixia/slapd/assets/config/tls/tls-enable.ldif
166+
sed -i "s,/osixia/slapd/assets/ssl/ldap.key,/osixia/slapd/assets/ssl/${SSL_KEY_FILENAME},g" /osixia/slapd/assets/config/tls/tls-enable.ldif
167167

168-
ldapmodify -Y EXTERNAL -Q -H ldapi:/// -f /osixia/slapd/config/tls/tls-enable.ldif
168+
ldapmodify -Y EXTERNAL -Q -H ldapi:/// -f /osixia/slapd/assets/config/tls/tls-enable.ldif
169169

170170
[[ -f "$WAS_STARTED_WITH_TLS" ]] && rm -f "$WAS_STARTED_WITH_TLS"
171171
touch $WAS_STARTED_WITH_TLS
@@ -175,18 +175,18 @@ EOF
175175
chmod +x $WAS_STARTED_WITH_TLS
176176

177177
# add localhost route to certificate cn (need docker 1.5.0)
178-
cn=$(openssl x509 -in /osixia/slapd/ssl/$SSL_CRT_FILENAME -subject -noout | sed -n 's/.*CN=\(.*\)\/*\(.*\)/\1/p')
178+
cn=$(openssl x509 -in /osixia/slapd/assets/ssl/$SSL_CRT_FILENAME -subject -noout | sed -n 's/.*CN=\(.*\)\/*\(.*\)/\1/p')
179179
echo "127.0.0.1 $cn" >> /etc/hosts
180180

181181
# local ldap tls client config
182-
sed -i "s,TLS_CACERT.*,TLS_CACERT /osixia/slapd/ssl/${SSL_CA_CRT_FILENAME},g" /etc/ldap/ldap.conf
182+
sed -i "s,TLS_CACERT.*,TLS_CACERT /osixia/slapd/assets/ssl/${SSL_CA_CRT_FILENAME},g" /etc/ldap/ldap.conf
183183

184184
else
185185

186186
echo "Don't use TLS"
187187

188188
[[ -f "$WAS_STARTED_WITH_TLS" ]] && rm -f "$WAS_STARTED_WITH_TLS"
189-
ldapmodify -c -Y EXTERNAL -Q -H ldapi:/// -f /osixia/slapd/config/tls/tls-disable.ldif || true
189+
ldapmodify -c -Y EXTERNAL -Q -H ldapi:/// -f /osixia/slapd/assets/config/tls/tls-disable.ldif || true
190190

191191
fi
192192

@@ -197,7 +197,7 @@ EOF
197197
echo "Set replication"
198198

199199
# copy template file
200-
cp /osixia/slapd/config/replication/replication-enable-template.ldif /osixia/slapd/config/replication/replication-enable.ldif
200+
cp /osixia/slapd/assets/config/replication/replication-enable-template.ldif /osixia/slapd/assets/config/replication/replication-enable.ldif
201201

202202
function addReplicationSyncRepl() {
203203

@@ -228,9 +228,9 @@ EOF
228228
done
229229

230230
if [ "$TYPE" == "CONFIG" ]; then
231-
sed -i "s|{{ REPLICATION_HOSTS_CONFIG_SYNC_REPL }}|$olcSyncReplLine\n{{ REPLICATION_HOSTS_CONFIG_SYNC_REPL }}|g" /osixia/slapd/config/replication/replication-enable.ldif
231+
sed -i "s|{{ REPLICATION_HOSTS_CONFIG_SYNC_REPL }}|$olcSyncReplLine\n{{ REPLICATION_HOSTS_CONFIG_SYNC_REPL }}|g" /osixia/slapd/assets/config/replication/replication-enable.ldif
232232
else
233-
sed -i "s|{{ REPLICATION_HOSTS_HDB_SYNC_REPL }}|$olcSyncReplLine\n{{ REPLICATION_HOSTS_HDB_SYNC_REPL }}|g" /osixia/slapd/config/replication/replication-enable.ldif
233+
sed -i "s|{{ REPLICATION_HOSTS_HDB_SYNC_REPL }}|$olcSyncReplLine\n{{ REPLICATION_HOSTS_HDB_SYNC_REPL }}|g" /osixia/slapd/assets/config/replication/replication-enable.ldif
234234
fi
235235
}
236236

@@ -254,7 +254,7 @@ EOF
254254

255255
# olcServerID
256256
if [ "$key" == "server_id" ]; then
257-
sed -i "s|{{ REPLICATION_HOSTS }}|olcServerID: $value $HOST\n{{ REPLICATION_HOSTS }}|g" /osixia/slapd/config/replication/replication-enable.ldif
257+
sed -i "s|{{ REPLICATION_HOSTS }}|olcServerID: $value $HOST\n{{ REPLICATION_HOSTS }}|g" /osixia/slapd/assets/config/replication/replication-enable.ldif
258258
SERVER_ID_FOUND=true
259259

260260
# olcSyncRepl for config and hdb
@@ -307,12 +307,12 @@ EOF
307307
done
308308

309309

310-
sed -i "/{{ REPLICATION_HOSTS }}/d" /osixia/slapd/config/replication/replication-enable.ldif
311-
sed -i "/{{ REPLICATION_HOSTS_CONFIG_SYNC_REPL }}/d" /osixia/slapd/config/replication/replication-enable.ldif
312-
sed -i "/{{ REPLICATION_HOSTS_HDB_SYNC_REPL }}/d" /osixia/slapd/config/replication/replication-enable.ldif
310+
sed -i "/{{ REPLICATION_HOSTS }}/d" /osixia/slapd/assets/config/replication/replication-enable.ldif
311+
sed -i "/{{ REPLICATION_HOSTS_CONFIG_SYNC_REPL }}/d" /osixia/slapd/assets/config/replication/replication-enable.ldif
312+
sed -i "/{{ REPLICATION_HOSTS_HDB_SYNC_REPL }}/d" /osixia/slapd/assets/config/replication/replication-enable.ldif
313313

314-
cat /osixia/slapd/config/replication/replication-enable.ldif
315-
ldapmodify -c -Y EXTERNAL -Q -H ldapi:/// -f /osixia/slapd/config/replication/replication-enable.ldif -v -d -1
314+
cat /osixia/slapd/assets/config/replication/replication-enable.ldif
315+
ldapmodify -c -Y EXTERNAL -Q -H ldapi:/// -f /osixia/slapd/assets/config/replication/replication-enable.ldif -v -d -1
316316

317317
else
318318

test/test.bats

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ load test_helper
3232

3333
@test "ldapsearch new database with strict TLS and custom ca/crt" {
3434

35-
run_image -v $BATS_TEST_DIRNAME/ssl:/osixia/slapd/ssl -e SSL_CRT_FILENAME=ldap-test.crt -e SSL_KEY_FILENAME=ldap-test.key -e SSL_CA_CRT_FILENAME=ca-test.crt
35+
run_image -v $BATS_TEST_DIRNAME/ssl:/osixia/slapd/assets/ssl -e SSL_CRT_FILENAME=ldap-test.crt -e SSL_KEY_FILENAME=ldap-test.key -e SSL_CA_CRT_FILENAME=ca-test.crt
3636
wait_service slapd
3737
run docker exec $CONTAINER_ID ldapsearch -x -h ldap.osixia.net -b dc=example,dc=org -ZZ -D "cn=admin,dc=example,dc=org" -w admin
3838
clear_container
@@ -54,4 +54,4 @@ load test_helper
5454

5555
[ "$status" -eq 0 ]
5656

57-
}
57+
}

0 commit comments

Comments
 (0)