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
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request