I, too, have a vested interest in seeing this become a more permanent feature in chef. I've done a sort of hacky definition that seems to suit our purposes quite well. Check out this gist:
http://gist.github.com/366043
For example, we run a custom apache/php combo stack on our various application servers and sometimes their exact configuration differs between roles. In the past, we've solved the actual configuration of our nodes by precompiling these packages on a set of build vms (based off our current VM baseline) and rsync their install to a filer mount that's shared RO to all other nodes. The target node then NFS mounts this (filerX:/vol/packages/built/centos_5/x86_64 -> /z/services), and the nodes in the specific role symlink /usr/local/{apache,php} to /z/services/apache/2.2.14-prefork or /z/services/php/5.3.2
This lets us apply the 'build::apache' or 'build::php' to the run_list of our 'ign-build-c5_64' node (cent5 x86_64 build node), and then apply 'farms::oyster' to an application pool we have for 'roles::oyster'.
Closed duplicate
CHEF-408and taking assignment.