91 lines
2.6 KiB
91 lines
2.6 KiB
#!/bin/bash
|
|
|
|
## Should be executable N time in a row with same result.
|
|
|
|
## if I'm linked to a schedule-command, then add the scheduler dependency to source service
|
|
if read-0 ts _ _ < <(get_service_relation "$SERVICE_NAME" "schedule-command"); then
|
|
config-add "\
|
|
services:
|
|
$MASTER_BASE_SERVICE_NAME:
|
|
depends_on:
|
|
- \"$ts\"
|
|
"
|
|
fi
|
|
|
|
exit 0
|
|
|
|
. lib/common
|
|
|
|
set -e
|
|
|
|
LOGS=/var/log/apache2
|
|
|
|
|
|
|
|
## XXXvlab: hum it seems apache logging is run as root, so well...
|
|
# logs_creds=$(cached_cmd_on_base_image apache "stat -c '%u %g' '$LOGS'") || {
|
|
# debug "Failed to query for www-data gid in ${DARKYELLOW}apache${NORMAL} base image."
|
|
# return 1
|
|
# }
|
|
|
|
rotated_count=$(relation-get rotated-count 2>/dev/null) || true
|
|
rotated_count=${rotated_count:-52}
|
|
|
|
## XXXvlab: a lot of this intelligence should be moved away into
|
|
## ``logrotate`` charm
|
|
##
|
|
## Issues:
|
|
## - relation-joined will execute first log-rotate charm part of the
|
|
## relation, which is not what we want here, as we need to send
|
|
## default value for the creation of the config file on the server
|
|
## part.
|
|
## - we need to send the directory it seems, otherwise, docker will
|
|
## create directory when the log file is missing, and I'm not sure
|
|
## how processes will react when their file is moved out of their
|
|
## file-system scope when rotated (but I think there will be no
|
|
## issue here).
|
|
## The problem here is that we can't cleanly put all file in the
|
|
## same directory (and there are collision possible anyway).
|
|
## This means that if we want more than one target, we need
|
|
## sub-directories.
|
|
## - For this issue, we only fear the 'docker' run and mounting
|
|
## moment, and we are sure to run before, so we can make sure to
|
|
## ``touch`` the files.
|
|
## - can we move file that was been bound in a docker ? Well yes,
|
|
## but it won't change place in the docker:( ... I guess you need
|
|
## to reload the docker and the binding to work.
|
|
##
|
|
|
|
DST="$CONFIGSTORE/$TARGET_SERVICE_NAME/etc/logrotate.d/$SERVICE_NAME"
|
|
file_put "$DST" <<EOF
|
|
/var/log/docker/$SERVICE_NAME/*error.log
|
|
/var/log/docker/$SERVICE_NAME/*access.log
|
|
{
|
|
weekly
|
|
missingok
|
|
dateext
|
|
dateyesterday
|
|
dateformat _%Y-%m-%d
|
|
extension .log
|
|
rotate $rotated_count
|
|
compress
|
|
delaycompress
|
|
notifempty
|
|
create 640 root root
|
|
sharedscripts
|
|
postrotate
|
|
docker-send-signal \$${MASTER_BASE_CHARM_NAME^^}_NAME SIGUSR1;
|
|
endscript
|
|
}
|
|
EOF
|
|
|
|
config-add "\
|
|
$MASTER_TARGET_CHARM_NAME:
|
|
volumes:
|
|
- $DST:/etc/logrotate.d/docker-${SERVICE_NAME}:ro
|
|
- $SERVICE_DATASTORE$LOGS:/var/log/docker/$SERVICE_NAME:rw
|
|
$MASTER_BASE_CHARM_NAME:
|
|
volumes:
|
|
- $SERVICE_DATASTORE$LOGS:$LOGS:rw
|
|
"
|
|
|