Chef Cookbook Skeleton
Built from makenew/chef-cookbook.
Chef cookbook skeleton.
Bootstrap a new Chef cookbook in less than a minute.
- Dependency management with Bundler and Berkshelf.
- Rake, Thor, and Guard tasks for included tools.
- Cookbook publishing with Stove.
- Documentation generation with YARD and knife-cookbook-doc.
- Linting with RuboCop and Foodcritic.
- Unit testing with ChefSpec.
- Integration testing with Test Kitchen.
- Code coverage with SimpleCov and codecov.
- Travis CI and wercker ready.
- Keep a CHANGELOG.
- Consistent coding with EditorConfig.
- Badges from Shields.io.
Bootstrapping a New Project
Clone the master branch of this repository with
$ git clone --single-branch https://github.com/makenew/chef-cookbook.git new-chef-cookbook $ cd new-chef-cookbook
Optionally, reset to the latest release with
$ git reset --hard chef-cookbook-v3.3.4
and follow the prompts. This will replace the boilerplate, delete itself, and stage changes for commit. This script assumes the project repository will be hosted on GitHub. For an alternative location, you must update the URLs manually.
Fill in the README Description section and add (or remove) your own wercker badge to
doc/badges.md(you will need to create a new wercker application).
If choosing a license other than the one provided: update
LICENSE.txt, the README License section,
recipes/default.rbwith your chosen license.
$ rake readme. Do not edit
README.mddirectly: it will be generated from
_README.md.erbusing data from
metadata.rb, and the
.kitchen.ymlto a specific Chef version. You may also set the Ruby versions to test against in
wercker.yml. If using codecov and wercker, you must set the
If you want to pull in future updates from this skeleton, you can fetch and merge in changes from this repository.
If this repository is already set as
rename it to
$ git remote rename origin upstream
and then configure your
origin branch as normal.
Otherwise, add this as a new remote with
$ git remote add upstream https://github.com/makenew/chef-cookbook.git
You can then fetch and merge changes with
$ git fetch upstream $ git merge upstream/master
CHANGELOG.md is just a template for this skeleton.
The actual changes for this project are documented in the commit history
and summarized under Releases.
- Chef 12.
Add this as a dependency in your cookbook's
Alternatively, add this to your Berksfile with
and update your cookbooks with
- ubuntu (~> 14.04)
- makenew-chef_cookbook::default - Default recipe.
Development and Testing
The following Vagrant plugins are recommended:
Install the development dependencies with
The makenew-chef_cookbook source is hosted on GitHub. Clone the project with
$ git clone https://github.com/makenew/chef-cookbook.git
rake -T to see all Rake tasks.
rake all # Run all tasks rake doc # Build documentation rake foodcritic # Lint Chef cookbooks rake kitchen:all # Run all test instances rake kitchen:default-ubuntu-1404 # Run default-ubuntu-1404 test instance rake publish # Publish this cookbook rake readme # Generate README.md from _README.md.erb rake rubocop # Run RuboCop rake rubocop:auto_correct # Auto-correct RuboCop offenses rake spec # Run RSpec code examples rake test # Run kitchen integration tests rake yard # Generate YARD Documentation
thor -T to see all Thor tasks.
Guard tasks have been separated into the following groups:
By default, Guard will generate documentation, lint, and run unit tests.
The integration group must be selected manually with
guard -g integration.
Please submit and comment on bug reports and feature requests.
To submit a patch:
- Fork it (https://github.com/makenew/chef-cookbook/fork).
- Create your feature branch (
git checkout -b my-new-feature).
- Make changes. Write and run tests.
- Commit your changes (
git commit -am 'Add some feature').
- Push to the branch (
git push origin my-new-feature).
- Create a new Pull Request.
This software can be used freely, see The Unlicense. The copyright text appearing below and elsewhere in this repository is for demonstration purposes only and does not apply to this software.
Copyright 2016 Evan Sosenko
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holder or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.