diff --git a/roles/nginx/server/tasks/main.yml b/roles/nginx/server/tasks/main.yml index ec17df6..daf7775 100644 --- a/roles/nginx/server/tasks/main.yml +++ b/roles/nginx/server/tasks/main.yml @@ -45,6 +45,21 @@ - error.log when: ansible_os_family == "OpenBSD" +- name: install custom logrotate + template: + dest: /usr/local/sbin/nginx-logrotate + src: nginx-logrotate.sh + mode: 0755 + owner: root + group: "{{ ansible_wheel }}" + +- name: add logrotate cron job + cron: + name: nginx-logrotate + hour: "0" + minute: "0" + job: /usr/local/sbin/nginx-logrotate + # https://bugzilla.redhat.com/show_bug.cgi?id=1725248 - block: - name: create drop-in directory for service diff --git a/roles/nginx/server/templates/nginx-logrotate.sh b/roles/nginx/server/templates/nginx-logrotate.sh new file mode 100755 index 0000000..30b476a --- /dev/null +++ b/roles/nginx/server/templates/nginx-logrotate.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +umask 022 + +[ -f /var/run/nginx.pid ] || exit 0 + +SUFFIX="$(date +%Y%m%d-%H%M%S)" +LOGS="" + +for log in "{{ nginx_logdir }}"/*.log ; do + [ -s "$log" ] || continue + mv "$log" "${log}.${SUFFIX}" + LOGS="${LOGS} ${log}.${SUFFIX}" +done + +[ -z "$LOGS" ] && exit 0 + +kill -USR1 "$(cat /var/run/nginx.pid)" +sleep 5 + +for log in $LOGS ; do + gzip "$log" +done