Chef 0.10.6 Released

It has been only three months since 0.10.4 and we have another huge release for you. Once again, the Chef community has delivered.

Andrea Campi of European consulting shop Zephirworks has been hard at work. He has been working on refactoring parts of the chef-server to be more modular, working toward allowing you to run it entirely on PaaS/SaaS offerings like Cloud Foundry. In this release he made it so you can set the solr_url path and it will be respected. He refactored the way checksum objects are used in the chef-server to support future work allowing files to be stored in the cloud, such as on S3. He also fixed a bug in sandboxes and improved their resiliency. Along the way he fixed unit tests for chef-expander and also improved its failure modes. With the help of AJ Christensen and Renaud Chaput he helped fix an issue in the FreeBSD package provider.

Andrea, we’re thrilled that you’re working in core Chef. You are this release’s MVP!

This release has some great Windows improvements; the service provider has been rewritten, fixing many bugs and our use of Chef and Windows also uncovered a Ruby 1.9 bug with SSL which we patched around. The cookbook syntax checker in knife became more Windows friendly and the not_if/only_if conditionals got some shellout love. The bootstrap templates can now transfer the encrypted databag secret for you. Knife bootstrap will ask for a password again, if needed and knife ssh gained csshX support. Many documentation bugs have been found and fixed as well.

Hall of Fame member Matthew Kent returns with many patches. If you liked the quieter logging in earlier versions of Chef so you could easily tell if nothing changed since the last run, you can optionally disable the verbose logging. Other logging fixes included removing a duplicate log for cookbook_file, and an over-excited remote_directory log line. As usual, he provided fixes to the yum_package provider: one case where including the architecture in the package name would cause it to always install, a unit test fix, and one related to the exit code. He added a feature to file specificity that allows you to differentiate between the version of the distribution installed. He also added support for managing “system” groups with the group provider, and fixed object deletion in the webui. Finally, he unpacked solr into the source, so we can have more control over how it is shipped, removed the deprecated and broken chef-solr-rebuild and resolved a dependency issue between chef-expander and git.

Prior Opscode MVP, Tommy Bishop continued to rock the tests, adding missing specs for knife cookbook, knife configure client, knife client, and helping them clean up after themselves.

Another previous MVP, Jason J. W. Williams, added platform support for some Solaris derivatives.

This release contains many more fixes, such as a possible privilege escalation issue with validation_clients.

The 0.10.6 Rubygems and Debian packages are up, as well as the Windows Omnibus Client build for the Windows Fast Start.

We’re going to start merging for 0.10.8 right away. Expect a feature freeze around mid-february and a release around the end of the month. Start getting your patches in folks!

Release Notes

Bug

  • [CHEF-1202] – Update regular expression placeholders to quote substituted values.
  • [CHEF-1656] – The knife man page has no description of the -F/–format options
  • [CHEF-1697] – Chef service resource confused by services names with spaces under Windows
  • [CHEF-1830] – knife bootstrap no longer prompts for password
  • [CHEF-1898] – Knife error messages get sent to stdout
  • [CHEF-1958] – Misleading error message when files entry isn't under "default"
  • [CHEF-1959] – file provider ignores create_if_missing
  • [CHEF-2061] – knife bootstrap not finding add-on bootstrap dir
  • [CHEF-2107] – windows service provider works incorrectly on windows versions other than english
  • [CHEF-2342] – knife bootstrap script for centos should use rhel.rpm from aegisco to install yum repository
  • [CHEF-2344] – "knife configure -i" overwrites client key with 'nil' when run for an existing client name
  • [CHEF-2357] – shell_out should support cwd on windows platform
  • [CHEF-2358] – shell_out should support passing environment variables on windows platform
  • [CHEF-2363] – knife node edit: "EOFError: end of file reached" on save
  • [CHEF-2376] – Broken client scenario "Remove cached file checksums that are no longer needed"
  • [CHEF-2377] – Broken client scenario "Synchronize dependent cookbooks"
  • [CHEF-2378] – Chef expander's "rake install" fails with undefined method `version'
  • [CHEF-2437] – clear attribute list after each Knife::NodeShow.run
  • [CHEF-2462] – chef-expander in 0.10.2 requires git
  • [CHEF-2491] – init scripts should implement reload
  • [CHEF-2509] – "knife configure -i" incorrectly adds the deprecated cookbook shadowing configuration
  • [CHEF-2516] – Shef::SoloSession#rebuild_context raises NameError for undefined local variable or method run_status in solo mode
  • [CHEF-2519] – remote_directory create always logging
  • [CHEF-2530] – chef-solr-rebuild is broken
  • [CHEF-2531] – chef-expander, chef-expander-vnode argument parsing
  • [CHEF-2534] – Chef debian package should depend on ucf
  • [CHEF-2541] – windows service provider reports success on a failed restart
  • [CHEF-2547] – yum provider – arch in package name triggers provides search
  • [CHEF-2548] – Options list in knife manpages are out of date
  • [CHEF-2553] – chef-solr configs are packed within tar.gz
  • [CHEF-2559] – –with-uri option broken for multiple commands
  • [CHEF-2569] – Cannot bootstrap CentOS instances because of Aegisco RPMs fixed to specifc version in bootstrap
  • [CHEF-2573] – knife ssh interactive mode via tmux fails on OS X when search queries contain a colon
  • [CHEF-2579] – ~ in cookbook_path fails to expand on cookbook create
  • [CHEF-2580] – unable to delete via the webui
  • [CHEF-2588] – webui status page doesn't respect environment selection
  • [CHEF-2595] – Can't use the –description option when creating a role
  • [CHEF-2632] – Update chef for new yajl-ruby
  • [CHEF-2634] – FreeBSD packages: fail to build when using ports – incorrect use of port Makefile and working dir?
  • [CHEF-2637] – yum provider – packages installed but non zero exit status
  • [CHEF-2649] – validation client should not be able to create admin clients
  • [CHEF-2657] – Failing specs in chef-expander
  • [CHEF-2660] – chef-expander: undefined method `stop' for Chef::Expander::VNodeSupervisor:Class
  • [CHEF-2661] – Chef::Cookbook::SyntaxCheck shouldn't shell_out to run erubis via sh
  • [CHEF-2672] – Bad conditional in yum_spec.rb
  • [CHEF-2674] – Failing specs in chef-server-api
  • [CHEF-2675] – Typos in Sandboxes#update
  • [CHEF-2676] – Sandboxes#update fails if the sandbox is already complete
  • [CHEF-2684] – Windows Ruby 1.9: uninitialized constant Chef::Mixin::Command::Windows::Open4
  • [CHEF-2699] – Don't depend on the value of an masgn
  • [CHEF-2712] – rake install is broken in master due typo in Rakefile
  • [CHEF-2721] – not_if and only_if work incorrectly for commands on windows
  • [CHEF-2787] – knife help search examples reference 'nodes' when it should be 'node'

Improvement

  • [CHEF-294] – response_file handles grabbing a file via remote_file, but doesn't allow for dynamic preseeding through a template
  • [CHEF-597] – Debian service provider should use invoke-rc.d <script> rather than /etc/init.d/<script>
  • [CHEF-630] – Deploy should create the directories it needs if they don't exist
  • [CHEF-909] – Rollback on deploy errors
  • [CHEF-1506] – group resource should support 'system' similar to user
  • [CHEF-1677] – Support csshX in knife ssh
  • [CHEF-2179] – new log output for chef runs is a bit too verbose
  • [CHEF-2186] – Chef::Rest should ask the server to gzip the response
  • [CHEF-2193] – knife bootstrap – search for bootstrap templates in external knife plugins
  • [CHEF-2207] – Add gemfile and development dependencies to chef client
  • [CHEF-2260] – knife cookbook create should use markdown as default README file format.
  • [CHEF-2431] – Present node JSON data in a similar manner to editing a node
  • [CHEF-2439] – "owner changed" info notice on cookbook_files is always repeated
  • [CHEF-2492] – Ifconfig provider doesn't allow modeling of onparent
  • [CHEF-2532] – Clean up spec output
  • [CHEF-2542] – Missing specs for some of the knife client commands
  • [CHEF-2549] – Add start handlers to a chef-client run.
  • [CHEF-2563] – Missing specs for some of the knife cookbook commands
  • [CHEF-2570] – new :reconfig action for the package resource
  • [CHEF-2607] – Missing spec for knife configure client
  • [CHEF-2647] – improve file specificity with component versions

New Feature

  • [CHEF-2434] – bootstrap templates should transfer/rendering of encrypted_data_bag_secret in client.rb
  • [CHEF-2626] – Platform/distribution identification for Solaris derivitives
  • [CHEF-2739] – knife exec search configurable directories

Sub-task

  • [CHEF-2651] – solr_url ignores the path
  • [CHEF-2652] – solr-expander hardcodes solr_url
  • [CHEF-2655] – Refactor Checksum to support more storage strategies