From 5bbec8f82935cea127bf9eb666ed1781d25595b2 Mon Sep 17 00:00:00 2001 From: Gregory Colpart Date: Wed, 23 Aug 2017 03:30:38 +0200 Subject: [PATCH] first step to improve userlogrotate in Debian 9 --- packweb-apache/files/userlogrotate | 11 +++---- packweb-apache/files/userlogrotate_jessie | 38 +++++++++++++++++++++++ packweb-apache/tasks/main.yml | 15 ++++++++- 3 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 packweb-apache/files/userlogrotate_jessie diff --git a/packweb-apache/files/userlogrotate b/packweb-apache/files/userlogrotate index 339101a9..9d45af6a 100644 --- a/packweb-apache/files/userlogrotate +++ b/packweb-apache/files/userlogrotate @@ -23,11 +23,6 @@ for log in access.log access-*.log error.log; do done done -for i in `ls -1 -d $HOMEPREFIX/*/log/php.log 2>/dev/null | grep -v \.bak\.`; do - USER=`user_for $i` - rotate $i www-$USER:$USER -done - for log in production.log delayed_job.log development.log test.log; do for i in `ls -1 -d $HOMEPREFIX/*/www/{,current/}log/$log 2>/dev/null | grep -v \.bak\.`; do USER=`user_for $i` @@ -35,4 +30,8 @@ for log in production.log delayed_job.log development.log test.log; do done done -apache2ctl restart > /dev/null +if /etc/init.d/apache2 status > /dev/null ; then \ + /etc/init.d/apache2 reload > /dev/null; \ +fi; + +test -x /usr/sbin/nginx && invoke-rc.d nginx rotate >/dev/null 2>&1 diff --git a/packweb-apache/files/userlogrotate_jessie b/packweb-apache/files/userlogrotate_jessie new file mode 100644 index 00000000..339101a9 --- /dev/null +++ b/packweb-apache/files/userlogrotate_jessie @@ -0,0 +1,38 @@ +#!/bin/bash + +DATE=`/bin/date +"%d-%m-%Y"` +HOMEPREFIX="/home" + +rotate () { + mv $1 $1.$DATE + gzip $1.$DATE + touch $1 + chown $2 $1 + chmod g+r $1 +} + +user_for() { + homedir=`echo $1 | sed "s#\($HOMEPREFIX/\([^/]\+\)\).*#\1#"` + stat -L -c '%G' $homedir +} + +for log in access.log access-*.log error.log; do + for i in `ls -1 -d $HOMEPREFIX/*/log/$log 2>/dev/null | grep -v \.bak\.`; do + USER=`user_for $i` + rotate $i root:$USER + done +done + +for i in `ls -1 -d $HOMEPREFIX/*/log/php.log 2>/dev/null | grep -v \.bak\.`; do + USER=`user_for $i` + rotate $i www-$USER:$USER +done + +for log in production.log delayed_job.log development.log test.log; do + for i in `ls -1 -d $HOMEPREFIX/*/www/{,current/}log/$log 2>/dev/null | grep -v \.bak\.`; do + USER=`user_for $i` + rotate $i $USER:$USER + done +done + +apache2ctl restart > /dev/null diff --git a/packweb-apache/tasks/main.yml b/packweb-apache/tasks/main.yml index 961f419e..764a60f6 100644 --- a/packweb-apache/tasks/main.yml +++ b/packweb-apache/tasks/main.yml @@ -1,5 +1,10 @@ --- +- fail: + msg: only compatible with Debian >= 8 + when: + - ansible_distribution != "Debian" or ansible_distribution_major_version | version_compare('8', '<') + - name: Include apache role include_role: name: apache @@ -30,11 +35,19 @@ - access.log - error.log -- name: Install userlogrotate +- name: "Install userlogrotate (jessie)" + copy: + src: userlogrotate_jessie + dest: /etc/cron.weekly/userlogrotate + mode: "0755" + when: ansible_distribution_release == "jessie" + +- name: "Install userlogrotate (Debian 9 or later)" copy: src: userlogrotate dest: /etc/cron.weekly/userlogrotate mode: "0755" + when: ansible_distribution_major_version | version_compare('9', '>=') - name: Force DIR_MODE to 0750 in /etc/adduser.conf lineinfile: