forked from 0k/0k-charms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
#!/bin/bash
|
|
|
|
## Init is run on host
|
|
## For now it is run every time the script is launched, but
|
|
## it should be launched only once after build.
|
|
|
|
## Accessible variables are:
|
|
## - SERVICE_NAME Name of current service
|
|
## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
|
|
## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
|
|
## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
|
|
|
|
set -e
|
|
|
|
uid=$(docker_get_uid "$SERVICE_NAME" "redis")
|
|
|
|
CONFIG=$SERVICE_CONFIGSTORE/etc/redis-local.conf
|
|
|
|
PASSWORD=$(options-get password 2>/dev/null) || {
|
|
if [ -e "$CONFIG" ]; then
|
|
PASSWORD=$(grep ^requirepass "$CONFIG" | sed -r 's/^requirepass\s+(.+)$/\1/g')
|
|
fi
|
|
if [ -z "$PASSWORD" ]; then
|
|
info "Generating redis admin password"
|
|
PASSWORD=$(gen_password 64)
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
mkdir -p "$(dirname "$CONFIG")"
|
|
cat <<EOF > "$CONFIG"
|
|
daemonize no
|
|
loglevel notice
|
|
logfile ""
|
|
bind 0.0.0.0
|
|
requirepass $PASSWORD
|
|
|
|
EOF
|
|
chown -v "$uid" "$CONFIG"
|
|
|
|
|
|
dirs=(/var/log/redis /var/lib/redis)
|
|
host_dirs=()
|
|
for dir in "${dirs[@]}"; do
|
|
host_dirs+=("$SERVICE_DATASTORE$dir")
|
|
done
|
|
|
|
mkdir -p "${host_dirs[@]}"
|
|
find "${host_dirs[@]}" \! -user "$uid" -print0 | while read-0 f; do
|
|
chown -v "$uid" "$f" || exit 1
|
|
done
|
|
|
|
config_hash=$(cat "$CONFIG" | md5_compat) || exit 1
|
|
init-config-add "
|
|
$MASTER_BASE_SERVICE_NAME:
|
|
labels:
|
|
- compose.config_hash=$config_hash
|
|
"
|