Forum: CFEngine Help
Subject: Re: CFEngine Help: Re: maintaining /etc/security/limits.conf with cf3
Author: milindk
Link to topic: https://cfengine.com/forum/read.php?3,24612,24641#msg-24641
Does this work ?
body common control
{
bundlesequence => { "configfiles" };
inputs => { "/var/cfengine/masterfiles/cfengine_stdlib.cf" };
version => "1.2.3";
}
bundle agent configfiles
{
vars:
# Files to edit
"files" string => "/tmp/limits.conf";
"limits[^\s*sybase\s*hard\s*memlock\s.*$]" string => "sybase hard
memlock 10000";
"limits[^\s*sybase\s*soft\s*memlock\s.*$]" string => "sybase soft
memlock unlimited";
methods:
"limits" usebundle => edit_limits;
}
bundle agent edit_limits
{
files:
"$(configfiles.files)"
comment => "Make sure sysctl.conf contains desired configuration settings",
create => "true",
edit_line => replace_or_add("configfiles.limits"),
classes => if_repaired("limits_modified");
}
bundle edit_line replace_or_add(v)
{
vars:
"pattern" slist => getindices("$(v)");
"cpattern[$(pattern)]" string => canonify("$(pattern)");
classes:
"${cpattern[$(pattern)]}_parameter_found" expression =>
regline("$(pattern)","$(configfiles.files)");
replace_patterns:
"$(pattern)"
replace_with => value("$($(v)[$(pattern)])"),
ifvarclass => "${cpattern[$(pattern)]}_parameter_found";
insert_lines:
"$($(v)[$(pattern)])"
location => before("# End of file"),
ifvarclass => "!${cpattern[$(pattern)]}_parameter_found";
reports:
parameter_found::
"${pattern}";
}
body location before(str)
{
before_after => "before";
select_line_matching => "$(str)";
}
It will replace the current setting if exists and add if does not exists
-----
# tail -2 /tmp/limits.conf
sybase hard memlock 65546
# End of file
# cf-agent -K -f ./n1.cf
# tail -3 /tmp/limits.conf
sybase hard memlock 10000
sybase soft memlock unlimited
# End of file
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine