Thanks Mikail,

Posting finished promise just in case anyone else is trying to do similar. 
Comments on improvement welcome.

Cheers

body common control
{
bundlesequence => { "sys_cleanup" };
inputs          => { "cfengine_stdlib.cf" };
}

bundle agent sys_cleanup
{
vars:

 redhat::
  #Keep 7 copies of /var/log/wtmp rotate everyday
  "rtf[wtmp]" string => "/var/log";             "rr[wtmp]" string => "7";       
        "rd[wtmp]" string => "cfengine_3";

 aix::

  #Keep 7 copies of /var/adm/wtmp rotate everyday
  "rtf[wtmp]" string => "/var/adm";             "rr[wtmp]" string => "7";       
        "rd[wtmp]" string => "cfengine_3";

 any::

  ###################
  #Rotated Targets
  ###################
  #Keep 31 copies of /var/tsm/dsmsched.log rotate everyday
  "rtf[dsmsched.log]" string => "/var/tsm";     "rr[dsmsched.log]" string => 
"31";      "rd[dsmsched.log]" string => "cfengine_3";

  #Keep 4 copies of /var/adm/sulog rotate Sunday
  "rtf[sulog]" string => "/var/adm";            "rr[sulog]" string => "4";      
        "rd[sulog]" string => "Sunday";

  #Keep 4 copies of /var/adm/sudo.log rotate Sunday
  "rtf[sudo.log]" string => "/var/adm";         "rr[sudo.log]" string => "4";   
        "rd[sudo.log]" string => "Sunday";

  #Keep 14 copies of /var/adm/cron/log rotate everyday
  "rtf[log]" string => "/var/adm/cron";         "rr[log]" string => "14";       
        "rd[log]" string => "cfengine_3";

  #Keep 14 copies of /var/log/cron rotate everyday
  "rtf[cron]" string => "/var/log";             "rr[cron]" string => "14";      
        "rd[cron]" string => "cfengine_3";

  #Keep 4 copies of /etc/security/failedlogin rotate Sunday
  "rtf[failedlogin]" string => "/etc/security"; "rr[failedlogin]" string => 
"4";       "rd[failedlogin]" string => "Sunday";

  ##################
  #Cleaned Targets
  ##################
  #Keep 14 days of /app_logs clean everyday
  "ctd[/app_logs/]" string => "inf";            "cr[/app_logs/]" string => 
"14";                "cd[/app_logs/]" string => "cfengine_3";                
"creg[/app_logs/]" string => ".*";

  #Keep 7 days of any files under /app_logs/.*/tmp clean everyday
  "ctd[/app_logs/.*/tmp/]" string => "inf";     "cr[/app_logs/.*/tmp/]" string 
=> "7";          "cd[/app_logs/.*/tmp/]" string => "cfengine_3";         
"creg[/app_logs/.*/tmp/]" string => ".*";

  #Keep 31 days of any files under /var/log/*.nmon clean everyday
  "ctd[/var/log/stats/]" string => "0";         "cr[/var/log/stats/]" string => 
"31";           "cd[/var/log/stats/]" string => "cfengine_3";           
"creg[/var/log/stats/]" string => ".*.nmon";

  #Generate Indicies of file / dir  names to rotate / clean
  "rfn" slist => getindices("rtf");
  "cdn" slist => getindices("ctd");

files:

  "$(rtf[$(rfn)])/$(rfn)"

    comment => "Rotate files in rtf (rotated_target_files), rr 
(rotated_retention), rd (day to perform rotate), location of file on string 
rtf",
    rename => rotate("$(rr[$(rfn)])"),
    ifvarclass => canonify("$(rd[$(rfn)])"),
    action => log;

  "$(cdn)"

    comment => "Delete files in ctd (cleaned_target_directory), recursively if 
set on string ctd (0,1,2..inf), cd (day to perform clean), creg (regex to match 
files too)",
    delete => tidy_keep_dirs,
    file_select => plain_filename_days_old("$(cr[$(cdn)])","$(creg[$(cdn)])"),
    depth_search => recurse("$(ctd[$(cdn)])"),
    ifvarclass => canonify("$(cd[$(cdn)])"),
    action => log;

commands:

  "/bin/gzip $(rtf[$(rfn)])/$(rfn).* >/dev/null 2>&1"

    comment => "Gzip rotated log files",
    contain => in_shell;

}

body delete tidy_keep_dirs

{
dirlinks => "keep";
rmdirs   => "false";
}

body file_select plain_filename_days_old(days,name)
{
mtime       => irange(0,ago(0,0,"$(days)",0,0,0));
leaf_name   => { "$(name)" };
file_types  => { "plain" };
file_result => "mtime.file_types.leaf_name";
}

body action log
{
log_level => "inform";
}

-----Original Message-----
From: help-cfengine-boun...@cfengine.org 
[mailto:help-cfengine-boun...@cfengine.org] On Behalf Of Mikhail Gusarov
Sent: Wednesday, 18 May 2011 4:08 PM
To: help-cfengine@cfengine.org
Subject: Re: regex problem - version 3.1.4

On 18.05.2011 01:18, Jones, Stephen (MAS) wrote:

> commands:
>
>    "/bin/gzip /var/adm/$(rotate_daily_var_adm).*"
           contain => shellcommand;
> }

body contain shellcommand {
  useshell => "yes";
}

-- 
Mikhail Gusarov
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to