I don’t usually write blogposts for each new knife-spork release, but along with the usual smattering of bugfixes this release has a couple of fairly significant new features I wanted to highlight and explain in greater detail.
Spork Omni
One of the most requested features in knife-spork was a more simplified workflow. A lot of the people who use knife-spork follow the bump, upload, promote (or promote –remote) pattern every time they change a cookbook.
With that in mind, I’ve added a new command, spork omni. This essentially combines bump, upload and promote (or promote –remote) in to one step. Here’s an example of omni in action:
$ knife spork omni apache2 --remote OMNI: Bumping apache2 Successfully bumped apache2 to v0.3.99! OMNI: Uploading apache2 Freezing apache2 at 0.3.99... Successfully uploaded apache2@0.3.99! OMNI: Promoting apache2 Adding version constraint apache2 = 0.3.99 Saving changes to development.json Uploading development.json to Chef Server Promotion complete at 2013-08-08 11:43:12 +0100! Adding version constraint apache2 = 0.3.99 Saving changes to production.json Uploading production.json to Chef Server Promotion complete at 2013-08-08 11:43:12 +0100!
When using omni, all spork plugins run as if each individual step were being run, which is what in actual fact is happening under the hood. Omni is really a convenient wrapper for the most common spork workflow.
Node, role and databag Commands
One of the annoyances that we’ve experienced at Etsy is that whilst spork gives us excellent visibility into cookbook changes, we’re still effectively in the dark when it comes to role, node and databag changes. With that in mind, I’ve added spork commands which wrap all of the destructive knife default node, role and databag commands.
By destructive commands, I mean those which in some way alter the chef server by changing a run_list, uploading new data bag items etc. All of the spork equivalents run the default knife command under the hood, they just wrap them in spork’s plugin API so that you’re able to see IRC notifications when you upload a role, say.
The following data bag
commands are provided in knife-spork:
knife spork data bag create
knife spork data bag delete
knife spork data bag edit
knife spork data bag from file
The following node
commands are provided in knife-spork:
knife spork node create
knife spork node delete
knife spork node edit
knife spork node from file
knife spork node run_list add
knife spork node run_list remove
knife spork node run_list set
The following role
commands are provided in knife-spork:
knife spork role create
knife spork role delete
knife spork role edit
knife spork role from file
And here’s an example of the IRC notification you might see from running knife spork node run_list set mynode.mydomain.com
CHEF: Jon Cowie set the run_list for mynode.mydomain.com to ["role[Base]", "recipe[awesome::stuff]"]
You can find knife-spork-1.3.0 on Rubygems.org now, please do check out the CHANGELOG for details on the rest of the changes in the new version.