You need to put cf.preconf in /var/cfengine, not /var/cfengine/inputs as you might think.
CFEngine will skip the group/class when parsing unless you add it with AddInstallable.
We use:
LocateLineMatching "case \"\$ADDRESS\" in " BeginGroupIfNoLineMatching "\*,\*,\*,$(macAddrEth1)\)" ResetSearch "1" LocateLineMatching "case \"\$ADDRESS\" in" InsertLine "*,*,*,$(macAddrEth1))" InsertLine " IPADDR=\"$(ipAddrEth1)\"" # etc ... EndGroup
One page links to CFEngineNotes: