Forum: Cfengine Help Subject: Re: Cfengine Help: question about editing smb.conf Author: raymondcox Link to topic: https://cfengine.com/forum/read.php?3,22090,22108#msg-22108
I would like to change the following entries in smb.conf Each entry is preceded by a tab workgroup = MYGROUP security = domain realm = MY_REALM password server = I have the following field_edits defined: body common control { bundlesequence => { "smbcfgfiles" }; inputs => { "../cfengine_stdlib.cf", "../library.cf", }; } bundle agent smbcfgfiles { vars: "smbconfig" string => "/tmp/smb.conf"; # smb configuration to set "smb" string => " test"; "smb" string => " testdc.example.com"; "smb" string => " EXAMPLE.COM"; "smb" string => " ads"; methods: "smb" usebundle => edit_smb("$(smbconfig)", "smbcfgfiles.smb"); } bundle agent edit_smb(file,params) { files: "$(file)" handle => "edit_smb", comment => "Set desired /etc/samba/smb.conf parameters", edit_line => set_smb_values("$(params)"); } bundle edit_line set_smb_values(v) { vars: "index" slist => getindices("$(v)"); # Be careful if the index string contains funny chars "cindex[$(index)]" string => canonify("$(index)"); field_edits: # match a line starting like the key = something "\t*$(index)\s*=.*" edit_field => col("=","2","$($(v)[$(index)])","set"), classes => if_ok("$(cindex[$(index)])_in_file"), comment => "Match a line starting like key = something"; insert_lines: "$(index)=$($(v)[$(index)])", comment => "Insert a variable definition", ifvarclass => "!$(cindex[$(index)])_in_file"; } Which produces: workgroup = test security = ads realm = EXAMPLE.COM password server = passwor=$(smbcfgfiles.smb) I suspect the field_edits method is not well suited for this task, however I am not exactly sure of what the best method to use in this instance is. Thank you for your help. _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine