knife-inspect
is a knife plugin that inspects your chef repo as it
compares to what is on your chef server. You can inspect your entire repo,
or individual components.
$ gem install knife-inspect
$ cd [chef repo]
knife inspect
knife cookbook inspect [--no-cookbooks --no-data-bags --no-data-bag-items --no-environments --no-roles]
knife cookbook inspect [COOKBOOK]
knife data bag inspect
knife data bag inspect [BAG]
knife data bag inspect [BAG] [ITEM]
knife environment inspect
knife environment inspect [ENVIRONMENT]
knife role inspect
knife role inspect [ROLE]
So far it checks if...
- your cookbooks are in sync
- you have uncommitted changes in a cookbook (assuming your cookbooks are in their own git repos)
- you have commits in a cookbook that haven't been pushed to your remote (assuming your cookbooks are in their own git repos)
- your data bags are in sync
- your data bag items are in sync
- your environments are in sync
- your roles are in sync
You can use the option switches to disable checking for a resource type when
running knife inspect
:
--no-cookbooks
--no-data-bags
--no-data-bag-items
--no-environments
--no-roles
You can use it with your favorite Continuous Integration tool, it returns 0 when everything is in sync or 1 if it's not.
How is it different from knife diff?
- It returns the proper return code, so you can use it with a Continuous Integration tool
knife diff
seems to expect local roles to be json files, knife-inspect supports both JSON and Ruby.- It's my personal opinion, but I think the output from knife-inspect is more readable. Also I don't understand some of the errors I'm getting with
knife diff
(Only in .: clients
for example) - I actually didn't know there was a built-in
knife diff
command.
This gem is tested with Ruby 2.3 and has been tested with Chef 13, 12 and 11.
(in alphabetical order)
- Adam Sinnett (@quandrum)
- Eric Saxby (@sax)
- Dan Buch (@meatballhat)
- Kirt Fitzpatrick (@kirtfitzpatrick)
- Ben Hughes (@barn)
- Grégoire Seux (@kamaradclimber)
- Christian Höltje (@docwhat)
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Do not bump the version number
- Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request