If you only need one OS, the easiest solution may be to use that OS’ unattended functionality.
For my own needs, I wrote a Ruby script that communicates with the VM host, creates the new VM, and installs CentOS using a kickstarter script that in turn includes everything needed for chef, including the validation certificate etc.
This isn’t technically using chef, though, but it works for me.
Whom the IT Pros Call
Our values: Privacy, Liberty, Justice