The one-eyed fanged yak is becoming on you.

A Preview of Shovey

The long promised “shovey” jobs for goiardi, a serf-based way to push commands out to nodes, is finally ready for a preview. There’s still some loose ends to pull together, like saving job status on the client so if it’s interrupted it can report that fact back to the server and making the goiardi end work with MySQL and Postgres, but it’s ready to play with.

To try playing with it, you’ll need schob, the shovey client, and knife-shove, the knife plugin to manage shovey jobs.

As explained in the schob README:

  1. Checkout the “serfing” branch from goiardi
  2. Create an RSA keypair for signing shovey requests
  3. Install serf and run it as “serf agent”
  4. Run goiardi in in-memory mode (at this writing, MySQL and Postgres in goiardi don’t support shovey yet) with these extra options: --use-serf --use-shovey --sign-priv-key=/path/to/private.key --sign-pub-key=/path/to/public.key
  5. Install knife-shove from https://github.com/ctdk/knife-shove
  6. Set up the node in goiardi you want to test shovey on. I’ve been using the computer I do my usual goiardi dev work for most of it.
  7. Install schob the usual go way
  8. Note where the testing whitelist file is (probably somewhere like ~/go/src/github.com/ctdk/schob/test/whitelist.json).
  9. Run schob like so: schob -VVVV -e http://chef-server.local:4545 -n node-name.local -k /path/to/node.key -w /path/to/schob/test/whitelist.json -p /path/to/public.key --serf-addr=

Run schob with -h to see all current options.

Cookbooks for setting this all up and better documentation are coming, including documenting the HTTP and serf APIs for communicating with the server and client. The HTTP API is broadly similar to the Chef Pushy API, but not identical. Everything about shovey is still subject to change until it’s officially released, but it’s ready to play with now. Suggestions and comments are, of course, welcome.