CFEngine says "No preconfiguration file" even though I have one

You need to put cf.preconf in /var/cfengine, not /var/cfengine/inputs as you might think.

I'm setting up groups in an imported file and then trying to import files based on those groups

CFEngine will skip the group/class when parsing unless you add it with AddInstallable.

How do I write a config for a "block" based config file like /etc/pcmcia/wireless.opts?

We use:

LocateLineMatching "case \"\$ADDRESS\" in "
BeginGroupIfNoLineMatching "\*,\*,\*,$(macAddrEth1)\)"
  ResetSearch "1"
  LocateLineMatching "case \"\$ADDRESS\" in"
  InsertLine "*,*,*,$(macAddrEth1))"
  InsertLine "  IPADDR=\"$(ipAddrEth1)\""
  # etc ...