Furnish Knife Server Integration - Build Chef 10 and 11 Servers as a Provisioner.

This provides two provisioners which leverage the near-saintly knife-server orchestration to build chef servers for Chef 10 and 11.

The rather unsurprising provisioner names:

  • Furnish::Provisioner::Chef10Server
  • Furnish::Provisioner::Chef11Server

Build Chef 10 and Chef 11 servers respectively. Since most of the functionality is common, they both inherit from:

  • Furnish::Provisioner::KnifeServer

Which implements the knife-server integration.

If you're new to furnish, you should probably read up on that first.

Achtung!

Just like knife-server, after the chef server is built, your client_key and validation_key are moved out of the way, and the new ones created with knife configure -i are placed in their steads.

What this means is that you have not set the config_file attribute in the provisioners to something that is non-standard, very likely ~/.chef/knife.rb, wherever that is on whatever system you use this on, will contain the names of the files to throw these credentials into. It is a very good idea to template or generate knife.rb in a way that allows you careful control of how these files get generated. The provisioners do not do you any extra favors other than that.

Testing

There is a full test suite that uses our furnish-vagrant and furnish-ip provisioners to orchestrate locally. As of this writing one machine is created for Chef 10, and another for Chef 11. They both use the "precise64" vagrant box, and it will be downloaded on your first test run if you do not have it.

The tests are not fast and communicate very little by default. Output goes through furnish's logging system which is directed to a file by default. If you wish to change this, set FURNISH_DEBUG in your environment, and information about the run will be output to the TTY.

Installation

Add this line to your application's Gemfile:

gem 'furnish-knife-server'

And then execute:

$ bundle

Or install it yourself as:

$ gem install furnish-knife-server

Huge Thanks

Fletcher Nichol did most of the work in knife-server itself, this is just the glue. He's also been really keen on accepting both bug fixes and patches -- making it an easy decision to lean on his software to solve this problem.

So, thanks!

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request