diff --git a/scripts/slapd.sh b/scripts/slapd.sh index 6d2e774d..da3fffdf 100755 --- a/scripts/slapd.sh +++ b/scripts/slapd.sh @@ -10,41 +10,47 @@ set -eu cd -- "$(dirname "$0")/.." +run_cmd() { + echo ">" "$@" >&2 + "$@" +} + keep_running= if [ $# -gt 0 ] && [ "$1" = "--keep" ]; then - keep_running=1 + keep_running=1 fi if [ -z "$keep_running" ] || [ "$(docker inspect --format="{{.State.Running}}" ldap 2> /dev/null)" != "true" ]; then - echo "LDAP container not running, or running and --keep not specified." - echo "Removing old LDAP container (if any)..." - docker rm --force ldap || true - echo "Starting LDAP container..." - # Currently the most popular OpenLDAP image on Docker Hub. Comes with the latest version OpenLDAP 2.4.50. - docker run -p 389:389 -p 636:636 -v $PWD:$PWD --name ldap --detach osixia/openldap:1.4.0 + echo "LDAP container not running, or running and --keep not specified." + echo "Removing old LDAP container (if any)..." + run_cmd docker rm --force ldap || true + echo "Starting LDAP container..." + # Currently the most popular OpenLDAP image on Docker Hub. Comes with the latest version OpenLDAP 2.4.50. + run_cmd docker run -p 389:389 -p 636:636 -v $PWD:$PWD --name ldap --detach osixia/openldap:1.4.0 - tries=1 - max_tries=10 - echo "Waiting for LDAP container ($tries/$max_tries)..." - # Wait until expected line "structuralObjectClass: organization" shows up. - # Seems to work more reliably than waiting for exit code 0. That would be: - # while ! docker exec ldap slapcat -b "dc=example,dc=org" > /dev/null 2>&1; do - while [[ ! "$(docker exec ldap slapcat -b "dc=example,dc=org" 2>/dev/null)" =~ organization ]]; do - ((++tries)) - if [ "$tries" -gt "$max_tries" ]; then - echo "ERROR: Timeout waiting for LDAP container." - exit 1 - fi - sleep 1 - echo "Waiting for LDAP container ($tries/$max_tries)..." - done + tries=1 + max_tries=10 + echo "Waiting for LDAP container ($tries/$max_tries)..." + # Wait until expected line "structuralObjectClass: organization" shows up. + # Seems to work more reliably than waiting for exit code 0. That would be: + # while ! docker exec ldap slapcat -b "dc=example,dc=org" > /dev/null 2>&1; do + while [[ ! "$(docker exec ldap slapcat -b "dc=example,dc=org" 2>/dev/null)" =~ organization ]]; do + ((++tries)) + if [ "$tries" -gt "$max_tries" ]; then + echo "ERROR: Timeout waiting for LDAP container." + exit 1 + fi + sleep 1 + echo "Waiting for LDAP container ($tries/$max_tries)..." + done fi echo "Adding example entries to directory..." -set -x -docker exec ldap ldapadd \ - -x \ - -D "cn=admin,dc=example,dc=org" \ - -w admin \ - -H ldap://localhost:389/ \ - -f $PWD/examples/config-ldap.ldif +run_cmd docker exec ldap ldapadd \ + -x \ + -D "cn=admin,dc=example,dc=org" \ + -w admin \ + -H ldap://localhost:389/ \ + -f $PWD/examples/config-ldap.ldif + +echo "OK."