Over the past two years, CommerceHub has been diving head-first into config management with Chef. We’ve come to realize that establishing a consistent workflow and common patterns when working with Chef across product teams can save us some pain.
When managing servers with Chef, sometimes it’s useful to trigger a run “right now.” One of our use cases was triggering a Chef deployment of an updated application as part of a continuous integration job, prior to running acceptance tests. One of the most common ways to trigger a run is `sudo chef-client`. You may also have stumbled upon the option of sending a USR1 signal to the chef daemon process (`sudo killall -USR1 chef-client`). Depending on your configuration, the `sudo killall -USR1 chef-client` approach may not trigger the run immediately, as it uses the configured “splay” to wait a random number of seconds before running. Both of these approaches require root privileges, which may be problematic in automation scenarios.