Skip to content
A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure.
Ruby HTML Groff JavaScript CSS Shell Other
Find file
Latest commit a030711 @lamont-granquist lamont-granquist Merge pull request #4573 from chef/lcg/bump-rubocop
pull rubocop 0.37.2 into chefstyle
Failed to load latest commit information.
acceptance Merge pull request #4563 from chef/salam/readme-update
bin auto fixing some rubocops
chef-config convert MultilineOperationIndentation style to "indented"
ci Disable unit tests in later stages of CD pipeline
distro Copyright year update for 2016 and massive cleanup.
ext/win32-eventlog autofixing whitespace cops
kitchen-tests autofixing whitespace cops
lib-backcompat/chef/chef_fs/file_system Add missing acl_entry backwards compatibility "require"
lib Merge pull request #4573 from chef/lcg/bump-rubocop
omnibus Allow checking out pedump from a fork.
rubygems-pkg Run rubygems from master for perf improvements
spec Merge pull request #4573 from chef/lcg/bump-rubocop
tasks autofixing whitespace cops
.gitattributes [OC-3564] move core Chef to the repo root \o/ \m/
.gitignore remove Gemfile.lock from omnibus
.kitchen.yml Addressing review comments, adding documentation
.mailmap Use chef.io addresses for current Chef employees
.rspec Use RSpec documentation formatter.
.rubocop.yml Use double quotes by default
.travis.yml Trying travis fix
.yardopts [OC-3564] move README to markdown format
CBGB.md Governers -> Governors
CBGB.toml Add CBGB to the repository
CHANGELOG.md 12.7.2 release prep, removing some unstable acceptance tests so we ca…
CHEF_MVPS.md Blog links use chef.io domain
CLA_ARCHIVE.md Add CLA_ARCHIVE -- List of CLAs from pre-supermarket times
CONTRIBUTING.md Update URLs to chef.io
DOC_CHANGES.md non msi packages must explicitly provide a source attribute on install
Gemfile Fix /acls/data_bags local mode path
LICENSE Initial commit
MAINTAINERS.md removed "Bryant Lippert / agentmeerkat" from Maintainers.md and added…
MAINTAINERS.toml Correct capitalization of GitHub username of a maintainer
NOTICE Update for chef.io domain in copyright lines too.
README.md Copyright year update for 2016 and massive cleanup.
RELEASE_NOTES.md update release notes for chef-solo -r changes
ROADMAP.md Roadmap updates for Windows
Rakefile autofixing whitespace cops
VERSION 12.7.2 release prep, removing some unstable acceptance tests so we ca…
appveyor.yml Use progress formatter for appveyor
chef-windows.gemspec autofixing auto-inserted delimiters
chef.gemspec autofixing whitespace cops
pedant.gemfile Remove dependency on master of ohai and friends

README.md

Chef

Code Climate Build Status Master Build Status Master

Want to try Chef? Get started with learnchef

Chef is a configuration management tool designed to bring automation to your entire infrastructure.

This README focuses on developers who want to modify Chef source code. If you just want to use Chef, check out these resources:

Installing From Git

NOTE: Unless you have a specific reason to install from source (to try a new feature, contribute a patch, or run chef on an OS for which no package is available), you should head to the installer page to get a prebuilt package.

Prerequisites

Install these via your platform's preferred method (apt, yum, ports, emerge, etc.):

  • git
  • C compiler, header files, etc. On Ubuntu/Debian, use the build-essential package.
  • ruby 2.0.0 or later
  • rubygems
  • bundler

Chef Installation

Then get the source and install it:

# Clone this repo
git clone https://github.com/chef/chef.git

# cd into the source tree
cd chef

# Install dependencies with bundler
bundle install

# Build a gem
bundle exec rake gem

# Install the gem you just built
gem install pkg/chef-VERSION.gem

Contributing/Development

Before working on the code, if you plan to contribute your changes, you need to read the Chef Contributions document.

The general development process is:

  1. Fork this repo and clone it to your workstation.
  2. Create a feature branch for your change.
  3. Write code and tests.
  4. Push your feature branch to github and open a pull request against master.

Once your repository is set up, you can start working on the code. We do use TDD with RSpec, so you'll need to get a development environment running. Follow the above procedure ("Installing from Git") to get your local copy of the source running.

Reporting Issues

Issues can be reported by using GitHub Issues.

Full details on how to report issues can be found in the CONTRIBUTING doc.

Note that this repository is primarily for reporting chef-client issues. For reporting issues against other Chef projects, please look up the appropriate repository to report issues against in the Chef docs in the community contributions section. If you can't detemine the appropriate place to report an issue, then please open it against the repository you think best fits and it will be directed to the appropriate project.

Testing

We use RSpec for unit/spec tests. It is not necessary to start the development environment to run the specs--they are completely standalone.

# Run All the Tests
bundle exec rake spec

# Run a Single Test File
bundle exec rspec spec/PATH/TO/FILE_spec.rb

# Run a Subset of Tests
bundle exec rspec spec/PATH/TO/DIR

When you submit a pull request, we will automatically run the functional and unit tests in spec/functional/ and spec/unit/ respectively. These will be run on Ubuntu through Travis CI, and on Windows through AppVeyor. The status of these runs will be displayed with your pull request.

License

Chef - A configuration management system

Author: Adam Jacob (adam@chef.io)
Copyright: Copyright 2008-2016, Chef Software, Inc.
License: Apache License, Version 2.0

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

http://www.apache.org/licenses/LICENSE-2.0

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.

Something went wrong with that request. Please try again.