Hello, we tried to use cfengine3 v3.0.2 to update our /etc/passwd.
The promises.cf reads: body common control { bundlesequence => { "handle_passwd" }; inputs => { "passwd.cf" }; } body agent control { ifelapsed => "0"; } body monitor control { forgetrate => "0.7"; histograms => "true"; } body executor control { splaytime => "1"; mailto => "a...@b"; smtpserver => "smtpserver"; mailmaxlines => "30"; exec_command => "$(sys.workdir)/bin/cf-agent -f failsafe.cf && $(sys.workdir)/bin/cf-agent"; } body reporter control { reports => { "performance", "last_seen", "monitor_history" }; build_directory => "/tmp/log"; report_output => "html"; } The passwd.cf is: bundle agent handle_passwd { vars: ipv4_10:: "file_new" string => "/var/cfengine/inputs/passwd_new"; "file_obsolete" string => "/var/cfengine/inputs/passwd_obsolete"; "newlines" slist => { readstringlist($(file_new),"#.*","",2048,65536) }; "obsolete" slist => { readstringlist($(file_obsolete),"#.*","",2048,65536) }; files: ipv4_10:: "/var/cfengine/inputs/passwd" edit_line => addline($(newlines)), comment => "add new lines", action => immediate; "/var/cfengine/inputs/passwd" edit_line => remove($(obsolete)), comment => "removed obsolete users $(obsolete)", action => immediate; reports: ipv4_10:: "passwd updated"; } bundle edit_line addline(newline) { insert_lines: "$(newline)"; } bundle edit_line remove(obsolete) { delete_lines: "$(obsolete):.*"; } We start with the following /var/cfengine/inputs/passwd: org:a:b:c obs:a:b:c /var/cfengine/inputs/passwd_obsolete: obs and /var/cfengine/inputs/passwd_new: new:a:b:c After launching 'cf-agent -v -f /tmp/promises.cf' I get for the /var/cfengine/inputs/passwd: org:a:b:c obs:a:b:c new:a:b:c Apparently the deletion of the 'obs:.*' line failed. There is also an empty line after the 'new:a:b:c' line. Here are some snippets of the verbose output: : cf3 ......................................................... cf3 cf3 -> This promise has already been verified cf3 -> Saving edit changes to file /var/cfengine/inputs/passwd cf3 Edited file /var/cfengine/inputs/passwd cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: /var/cfengine/inputs/passwd cf3 cf3 Comment: removed obsolete users obs cf3 ......................................................... cf3 cf3 -> Using literal pathtype for /var/cfengine/inputs/passwd cf3 -> Handling file existence constraints on /var/cfengine/inputs/passwd cf3 -> Handling file edits in edit_line bundle remove cf3 cf3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * cf3 BUNDLE remove( {'obs '} ) cf3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * cf3 cf3 ? Augment scope remove with obsolete cf3 ?? Private class context cf3 cf3 cf3 = = = = = = = = = = = = = = = = = = = = = = = = = = = = cf3 delete_lines in bundle remove cf3 = = = = = = = = = = = = = = = = = = = = = = = = = = = = cf3 cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: obs :.* cf3 ......................................................... cf3 cf3 ?? Private class context cf3 cf3 cf3 = = = = = = = = = = = = = = = = = = = = = = = = = = = = cf3 delete_lines in bundle remove cf3 = = = = = = = = = = = = = = = = = = = = = = = = = = = = cf3 cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: obs :.* cf3 ......................................................... cf3 cf3 -> This promise has already been verified cf3 ?? Private class context cf3 cf3 cf3 = = = = = = = = = = = = = = = = = = = = = = = = = = = = cf3 delete_lines in bundle remove cf3 = = = = = = = = = = = = = = = = = = = = = = = = = = = = cf3 cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: obs :.* cf3 ......................................................... cf3 cf3 -> This promise has already been verified cf3 -> No edit changes to file /var/cfengine/inputs/passwd need saving cf3 cf3 ========================================================= cf3 reports in bundle handle_passwd (1) cf3 ========================================================= cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: passwd updated cf3 ......................................................... cf3 cf3 R: passwd updated cf3 cf3 + Private classes augmented: cf3 cf3 - Private classes diminished: cf3 cf3 cf3 cf3 ========================================================= cf3 files in bundle handle_passwd (2) cf3 ========================================================= : cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 Outcome of version (not specified) (agent-0): Promises observed to be kept 33%, Promises repaired 67%, Promises not repaired 0% There are strange line breaks like cf3 Promise made by: obs :.* Do you have an idea why the the 'obs' lines are not deleted? Thank you. Cheers, Henning _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine