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
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine