Forum: CFEngine Help
Subject: Re: add users to /etc/shadow
Author: bbomgardner
Link to topic: https://cfengine.com/forum/read.php?3,22920,22949#msg-22949
If you want to modify the password after the line is already there this will
require a field edit. What is common to do use a bundle that does both,
depending on what is found in the file:
1. Insert line if not present
2. Field change if line is present
This is what the set_variable_values bundle does.
Try testing with this sample (the bundles if_ok and col are in the cfengine
standard lib):
body common control {
bundlesequence => { "test" };
}
bundle agent test {
files:
"/tmp/shadow"
create => "true",
edit_line => set_shadow_values("user1","foo");
}
bundle edit_line set_shadow_values(user,pw) {
field_edits:
"^$(user):.*"
edit_field => col(":","2","$(pw)","set"),
classes => if_ok("$(user)_line_ok");
insert_lines:
"$(user):$(pw):::::::",
ifvarclass => "!$(user)_line_ok";
}
body classes if_ok(x)
{
promise_repaired => { "$(x)" };
promise_kept => { "$(x)" };
}
body edit_field col(split,col,newval,method)
{
field_separator => "$(split)";
select_field => "$(col)";
value_separator => ",";
field_value => "$(newval)";
field_operation => "$(method)";
extend_fields => "true";
allow_blank_fields => "true";
}
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine