namespace :logrotated do desc <<-DESC Create logrotated conf. You probably use this in other recipes and not standalone. "Source":#{link_to_source(__FILE__)} DESC task_arg(:logrotate_name, "Name of file in /etc/logrotate.d/") task_arg(:logrotate_log_path, "Path to log file. Can include wildcards, like /var/log/foo_*.log.") task_arg(:logrotate_options, <<-EOS) Log rotate options * :rotate (Number of times to rotate before discarding) * :size (Rotate when file hits this size) * :daily, :weekly, :monthly (How often to perform rotate) * :missingok * :compress * :delaycompress * :notifempty * :copytruncate See man page for all the options.
set :logrotate_options, [ { :rotate => 7, :size => 10MB },
:daily, :missingok, :compress, :delaycompress, :notifempty, :copytruncate ]
EOS
task :install_conf do
text = []
logrotate_options.each do |option|
if option.is_a?(Hash)
option.each do |key, value|
text << "#{key.to_s} #{value.to_s}"
end
else
text << option.to_s
end
end
set :logrotate_options_text, " " + text.join("\n ")
utils.install_template("logrotated/conf.erb", "/etc/logrotate.d/#{logrotate_name}")
end
desc <<-DESC
Force rotate files.
"Source":#{link_to_source(__FILE__)}
DESC
task_arg(:logrotate_bin_path, "Logrotate bin path", :default => "logrotate", :example => "/usr/local/bin/logrotate")
task_arg(:logrotate_conf_path, "Path to logrotate conf", :default => "/etc/logrotate.conf")
task :force do
run_via "#{logrotate_bin_path} -f #{logrotate_conf_path}"
end
end