This repository has been archived by the owner. It is now read-only.
Fetching contributors…
Cannot retrieve contributors at this time
296 lines (224 sloc) 11.2 KB

This is the current, previous and future development milestones and contains the features backlog.

2.8.0 (stable)

  • flags for subsets of the manifest with --only (Issue 57)
  • cluster delete throws an error (Issue 59)
  • Support for an options key that tags on options to all nodes (Chris Yates)
  • Zero padding with {{n}} (Issue 62)
  • Printed deletion knife commands are incorrect for rackspace server delete (Issue 65)
  • bundler support (Issue 67)
  • Berkshelf 3 support (Issue 69)
  • fix Ubuntu parallel (Issue 72)
  • Sync with ChefDK dependencies (Issue 74)
  • upgrade to ffi-yajl (Issue 75)
  • Better handling of empty directories. (Issue 79)
  • --chef-client produces lower-case search query (Issue 81)
  • Rubocop cleanups (Andrew Glick)
  • Support for knife-vcair, cleanup of stale cloud providers

2.7.0 (unreleased)

  • updated Gem dependencies to match ChefDK
  • Berkshelf 3.x upgrade
  • rubocop cleanups
  • massive rspec updates
  • Chef Software copyright headers


  • Linode and Digital Ocean support (Fletcher Nichol)
  • fixed cluster behavior for --delete and --refresh
  • --node-only mode for uploading node files and applying their run list without bootstrapping
  • google support
  • delete removes from the providers when the name is known (as opposed to the bulkdelete)
  • the manifest no longer has to be the last option


  • overly-aggressive mixlib-shellout timeout of 60 seconds was causing berks uploads to timeout. New default is 300 seconds.


  • replace the 'json' gem with 'yajl'
  • fixed Berkshelf 2.0 support (Chris Roberts)
  • updated Ruby dependency to > 1.9.2 because of the ActiveSupport dependency of Berkshelf
  • add a --timeout option for invoked commands (Tim Brown)
  • add '-u' with --parallel to show continuous output for larger commands
  • made the Chef version checks safe for pre-release versions of Chef
  • validation of the knife commands that the plugins exist for nodes, clusters and knife commands
  • cluster and environment validation
  • knife-kvm support (
  • --chef-client now a supported options
  • added methods for knife ssh chef client searches and processing run lists into standard formats
  • added '-a/--attribute' for supporting --chef-client
  • --chef-client supports ssh options of --sudo, --no-host-key-verify, -i, -G, -P, -p, -x,-E and -N (and longforms)
  • knife-kvm fixes (Robert Berger)
  • Ruby 2.0 works with Chef 11.6


  • add "knife" commands


  • Berkshelf 2.0 breaks compatibility, setting version to pre-2.0 until fixed.



  • added Cli::process_manifest method so acts more like a library
  • '--log_level' changed to '--loglevel' because camel-case cli options are non-standard
  • disable the -j for clusters, since it is unevenly available in the various knife plugins (KNIFE-264)
  • clusters use environments instead of tags since tags are not fully supported yet
  • fixed "Data bag wildcard syntax errors out" (reported by Mike Fiedler)
  • added support for nesting role files in subdirectories of the role/ directory. (reported by Brian Bianco)
  • added full wildcard and subdirectory support for data bags, roles and environments
  • allow configuration via knife. Use loader for cookbook discovery (Chris Roberts)


  • Resolve undefined 'name' in Environments#validate. (Colin Rymer)
  • Resolve nil error for berksfile in extract_local (Colin Rymer)
  • Fixing respecting the --knifeconfig option. (Ari Lerner)

2.1.1 (unreleased)

  • fix JSON support for environments and roles.


  • Spiceweasel no longer works with Ruby 1.8.7 due to the Berkshelf dependency.
  • Berkshelf support (Chris Roberts)
  • add vagrant provider to support knife-vagrant (Jesse Nelson)
  • use of Command and CommandHelper to clean up working with commands (Chris Roberts)
  • use Chef::Environment to validate Environments (Chris Roberts)
  • use Chef::Role to validate Roles (Chris Roberts)
  • corrected windows node handling
  • knife cookbook upload now uploads multiple cookbooks if there are no options
  • knife role from file now uploads multiple roles
  • knife environment from file now uploads multiple environments
  • knife data bag from file now uploads multiple items
  • cookbook versions provided in --extract** commands


  • file permissions, how do they work? Had to re-push gem.


  • Refresh of the YAML/JSON syntax in order to support a richer set of options and be more explicit.
  • renamed Spiceweasel classes to match the manifest items (cookbooks, environments, roles, data bags and nodes)
  • client deletion is now supported by --delete
  • added support for a new top-level 'clusters' grouping for nodes, has more.
  • reorganize Classes into Spiceweasel module to refactor the bin/spiceweasel and act more like a library
  • added spiceweasel/config using mixlib-config to clean up use of constants.
  • added spiceweasel/log using mixlib-log for real logging support.
  • support for new --cluster-file option for specifying an external cluster definition and switching endpoints.
  • dropped --dry-run flag because it is the default action
  • added -e/--execute to execute the commands
  • replaced use of strings with an array and dropped use of "\n"
  • fixed "Validation for encrypted data bag secret should expand path"
  • updated rspec test to use "-r" for a full delete and create test
  • cookbook metadata.rb files are now loaded for validation and name checks have been added (versions coming soon)
  • DirectoryExtactor renamed to ExtractLocal, use of CookbookData replaced by Chef::Cookbook::Metadata



  • properly auto name by number provider instances (Fletcher Nichol & Michael Beuken)
  • YAML wildcards should be quoted (Joshua Timberman)
  • Don't add empty strings to the cookbook dependency list (Chris Griego)
  • handle single and double-quoted quoting styles in metadata.rb (Fletcher Nichol)
  • Remove the already initialized constant error (John Dewey)


  • Handle deleting an environment that has had multiple versions of cookbooks uploaded (Mike Fiedler)
  • Document how to use parallel to name nodes during server create


  • explicitly list broken/missing cookbooks during extracts, with --novalidation override


  • fixed issue in cookbook dependency sorting



  • added knife-hp


  • --no-validation to skip validation
  • switched from raising exceptions to just exiting with STDERR
  • validation for cookbooks
  • check metadata.rb for their dependencies
  • validation for environments
  • supports both .json and .rb
  • check names within files rather than the names of files
  • cookbooks referenced in environments
  • validation for roles
  • supports both .json and .rb
  • check names within files rather than the names of files
  • cookbooks referenced in roles
  • roles referenced in roles
  • validate data bags
  • exist and items exist
  • JSON parses and id matches
  • secret key in place
  • validate node run_lists
  • existing recipes and roles
  • validate custom bootstrap templates?


  • support for knife bootstrap windows


  • flag to enable 'knife cookbook site install' since we're using site download currently
  • on provider delete take count of vendor-specific, delete if match (ec2 server delete and node delete)
  • use GNU parallel with knife for vendor-specific knife server creates
  • reprioritized backlog


  • fixed Issue #6, catch empty cookbooks, environments, roles, data bags and nodes.
  • fixed Issue #7, permissions in spiceweasel gem folder
  • fixed Issue #8, allow passthrough of knife options (in particular -c KNIFECONFIGFILES) through to the outputted knife commands. (Geoff Meakin)
  • linked ravel-repo and php quickstart examples


  • typo fix by Rick Martinez (digx)


  • refactor by Elliot Crosby-McCullough into libraries and adding testing.


  • fixed run list parsing
  • updated examples for Chef 0.10
  • fixed validation on existing cookbooks
  • added examples directory


  • add support for environments
  • rescue from parser errors
  • update cookbook download syntax
  • multiple nodes with same runlists syntax
  • add support for encrypted data bags
  • wildcard support for data bag items


  • add support for cookbook options


  • support JSON and YAML


  • support versions for cookbooks
  • support site vendor for cookbooks


  • renamed to
  • fixed version number
  • updated YAML schema and examples because Ruby 1.8 does not order hashes.
  • validate that the recipes and roles listed in the nodes are loaded


  • switch to mixlib-cli
  • --dryrun The option --dryrun will print the commands to run, but not actually execute them (the default behavior)
  • --delete The option --delete will delete each cookbook, role, data bag, environment and node described in the yml file. All nodes from the system are deleted with knife node bulk_delete.
  • --rebuild The option --rebuild will remove all currently managed infrastructure for this chef repository and rebuild it from scratch.


  • initial describing goals
  • command-line tool
  • basic options all supported
  • create repo on GitHub
  • publish as a gem on RubyGems


  • environment-specific run_lists
  • sort roles by dependencies of other roles?
  • multiple input file support (besides current --cluster-file)
  • Spiceweasel config file support (or just overload knife.rb?)
  • make deletion smarter, use tags for providers
    • see if -P is supported?
  • Librarian integration
    • load in the librarian file
    • output the knife commands
    • validate the librarian cookbooks vs. roles, environments and run lists
  • knife batch extract to a tarball named for the organization
  • option to include credentials and knife.rb
  • translate json back to rb?
  • do we need global use of the *_list attrs for later use?
  • --simple mode to unroll multiple uploads per command?
  • ie. "knife cookbook upload apt\n knife cookbook upload ntp" instead of 1 liner
  • do we need to support concept of Groups from Berkshelf, to allow uploading multiple versions of cookbooks?
  • cluster support, check to see how many nodes result that match the query?

Targetted for 3.0

  • knife batch create from file infrastructure.yml
  • knife batch delete from file infrastructure.json
  • knife batch rebuild from file infrastructure.yml
  • Output as Chef Metal recipe
  • should spiceweasel talk directly to the Chef API?