Hi Eric,
You need to understand first what exactly you want to be run and at which point.
From the quick glance it could be running Chef on already provisioned server (use SSH to do that when you need it) or creating a new server in the cloud for running tests etc on it. (It's likely there are some more usecases I'm missing here).
Not sure what is the most recommended way to do that with Jenkins (I'd love to hear about that too) but we use Vagrant for spinning up servers for integration tests.
Jenkins kicks Vagrant to create a new server. You can then use Vagrant Chef provisioners or whatever you like to setup your server.
After the test run is finished we just retrieve the test reports from the server and terminate it.
Hope that makes sense for you.
Regards,