Well I finally, kind-of, sorted this problem - not exactly the way I wanted but it's good enough.
Basically vCenter 4.1's updated DRS rule system has been upgraded a lot. The new version lets you create groups of hosts and groups of VMs then create one of four different rules against these. The rules are;
- VM members in a named VM group must run on hosts members in a named host group
- VM members in a named VM group should run on hosts members in a named host group
- VM members in a named VM group mustn't run on hosts members in a named host group
- VM members in a named VM group shouldn't run on hosts members in a named host group
Now this is far from the ideal I was looking for which was to have the ability to store the enclosure and/or rack number with the host meta data then define VM groups and apply a rule saying 'spread these VMs as evenly as possible amongst these hosts' - but beggars can't be choosers etc.
So the way I've done it, and this might sound crude but it works and is easy to maintain, was to create a host group called something like 'evens' and another called 'odds' I can then fill these host groups out with hosts that live in racks that are even or odd numbered. For instance all hosts in rack VV041 go into the 'odd's group, whereas hosts in rack 'FF068' go into the 'even's group.
What I then did was do the same for VMs', for instance servers 'web01', 'sql1' & 'app75' go into the 'odds' VM group and 02's, 24's, 98's etc. go into the 'even's group.
After that all you need to do is create two rules, one that says 'odd numbered VMs should live on odd numbered hosts' and vice versa. Expect a vMotion storm if you manually run DRS :)
So that works ok for me, I have a roughly even balance of VMs across hosts and importantly no two-member clusters could ever live in the same enclosure/rack as I'd always name them sequentially (i.e. 01 and 02). Does the job and is easy to manage.
Hope this helps the 0.000002% of IT geeks this addresses :)