|
|
|
@ -2,7 +2,7 @@
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
### start openldap container using params file variables
|
|
|
|
|
# version 3.1
|
|
|
|
|
# version 3.2
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -45,11 +45,13 @@ cyan=$(tput setaf 6)
|
|
|
|
|
err=$(tput bold)$(tput setaf 1)
|
|
|
|
|
magenta=$(tput setaf 5)
|
|
|
|
|
norm=$(tput sgr0)
|
|
|
|
|
red=$(tput setaf 1)
|
|
|
|
|
yellow=$(tput setaf 3)
|
|
|
|
|
width=$(tput cols)
|
|
|
|
|
|
|
|
|
|
### parameter defaults
|
|
|
|
|
scriptName="$( basename "$0" )"
|
|
|
|
|
clean=false
|
|
|
|
|
restore=false
|
|
|
|
|
container_name="ab-openldap"
|
|
|
|
|
volume_data="ab-openldap_data"
|
|
|
|
@ -91,6 +93,9 @@ scriptHelp () {
|
|
|
|
|
textblock "${cyan}-s|--shell${norm}"
|
|
|
|
|
textblock "Switch parameter. Enter the container using an interactive POSIX shell. This happens after startup operations but *before* openLDAP (slapd) is started. This is a great way to test out configuration changes or run custom queries. You can combine this with '--rm' for easy configuration checks or LDIF imports."
|
|
|
|
|
printf "\n"
|
|
|
|
|
textblock "${cyan}--clean${norm}"
|
|
|
|
|
textblock "Switch parameter. This option will stop and remove ALL running openLDAP containers *AND DESTROY ALL VOLUMES*. This is meant to give you a 'clean start' if you've made configuration changes, etc."
|
|
|
|
|
printf "\n"
|
|
|
|
|
textblock "${cyan}--restore${norm}"
|
|
|
|
|
textblock "Switch parameter. Restore a 'slapcat' backup to the data and ldif volumes in preparation for mounting them in a normal container. It is strongly recommended you review your '-t' '--data' and '--ldif' settings before proceeding with this option."
|
|
|
|
|
printf "\n"
|
|
|
|
@ -136,6 +141,10 @@ while [ $# -gt 0 ]; do
|
|
|
|
|
# start shell instead of default CMD
|
|
|
|
|
shell=true
|
|
|
|
|
;;
|
|
|
|
|
--clean)
|
|
|
|
|
# stop if necessary, delete volumes
|
|
|
|
|
clean=true
|
|
|
|
|
;;
|
|
|
|
|
--restore)
|
|
|
|
|
# restore backup
|
|
|
|
|
restore=true
|
|
|
|
@ -191,8 +200,48 @@ done
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### process main operations
|
|
|
|
|
if [ $clean = true ]; then
|
|
|
|
|
# cleanup containers and volumes
|
|
|
|
|
# display warning and confirm user's intentions
|
|
|
|
|
printf "\nThis will stop and remove all ab-openldap containers %sAND REMOVE ALL PERSISTENT DATA VOLUMES%s. Please ensure you have a backup and understand how to restore your data.\n" \
|
|
|
|
|
"$red" "$norm"
|
|
|
|
|
printf "%sThis action CANNOT be undone!%s\n\n" \
|
|
|
|
|
"$red" "$norm"
|
|
|
|
|
prompt_yn
|
|
|
|
|
|
|
|
|
|
if [ $restore = true ]; then
|
|
|
|
|
# get all ab-openldap containers
|
|
|
|
|
containers=$(docker ps -a --no-trunc --filter "label=org.label-schema.name=ab-openldap" --format "{{ .Names }}")
|
|
|
|
|
# check for null value -- no containers to remove
|
|
|
|
|
if [ -z "$containers" ]; then
|
|
|
|
|
consoleError '0' 'No openldap containers to remove.'
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# iterate containers, stop them and remove straggling volumes
|
|
|
|
|
set -- dummy $containers
|
|
|
|
|
shift
|
|
|
|
|
for container; do
|
|
|
|
|
printf "\n%sFound %s -- processing:%s\n" \
|
|
|
|
|
"$cyan" "$container" "$norm"
|
|
|
|
|
# stop container
|
|
|
|
|
printf "\t%sStopping container...%s\n" "$red" "$norm"
|
|
|
|
|
docker stop ${container} > /dev/null 2>&1
|
|
|
|
|
# find volumes
|
|
|
|
|
volumes=$(docker inspect --format '{{ range .Mounts }}{{ println .Name }}{{ end }}' ${container})
|
|
|
|
|
# remove container
|
|
|
|
|
printf "\t%sRemoving container...%s\n" "$red" "$norm"
|
|
|
|
|
docker rm -f ${container} > /dev/null 2>&1
|
|
|
|
|
# pause to allow write flushing
|
|
|
|
|
sleep 3
|
|
|
|
|
# iterate volumes
|
|
|
|
|
set -- dummy2 $volumes
|
|
|
|
|
shift
|
|
|
|
|
for volume; do
|
|
|
|
|
printf "\t%sRemoving volume '%s'...%s\n" "$red" "$volume" "$norm"
|
|
|
|
|
docker volume rm -f ${volume} > /dev/null 2>&1
|
|
|
|
|
done
|
|
|
|
|
printf "%s...done%s\n" "$cyan" "$norm"
|
|
|
|
|
done
|
|
|
|
|
elif [ $restore = true ]; then
|
|
|
|
|
# automatically restore backups using a temp container to create volumes
|
|
|
|
|
printf "%s\n*** Restoring Backup ***\n\n%s" "$magenta" "$norm"
|
|
|
|
|
printf "To avoid errors due to existing files, this script will delete any volumes that have the following names (based on --data and --ldif):\n"
|
|
|
|
|