‘Tidy’ to the rescue

Puppet-izing my lab’s machines, I phone it in a little and used the following logrotate definition.

logrotate::rule { 'postfix':
  path         => '/var/log/mail.*',
  rotate       => 1000,
  compress     => true,
  missingok    => true,
  rotate_every => 'week',
  postrotate   => 'invoke-rc.d syslog-ng reload > /dev/null',
}

This did terrible, terrible things.

-rw-r----- 1 root              adm            0 Dec  2 07:35 mail.log.1.gz.2.gz.2.gz.4.gz
-rw-r----- 1 root              adm            0 Dec 15 07:36 mail.log.1.gz.2.gz.3.gz
-rw-r----- 1 root              adm            0 Dec 15 07:36 mail.log.1.gz.2.gz.3.gz.1.gz
-rw-r----- 1 root              adm            0 Dec 15 07:36 mail.log.1.gz.2.gz.3.gz.1.gz.1.gz
-rw-r----- 1 root              adm            0 Dec 15 07:36 mail.log.1.gz.2.gz.3.gz.1.gz.1.gz.1.gz

I really didn’t want to clean this up by hand on my hosts. This is where tidy came in!

tidy { '/var/log': age => '0', backup => false , recurse => true , matches => ['mail.err.?.gz.*', 'mail.log.?.gz.*'], rmdirs => false, }

This brought me back to a nice sane /var/log directory