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.
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 email@example.com! 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.
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
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
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.