Awesome Chef
A curated list of amazingly awesome open source Chef resources. Chef is a systems and cloud infrastructure automation framework that makes it easy to deploy servers and applications to any physical, virtual, or cloud location, no matter the size of the infrastructure.
Table of Contents
Basics
- Chef (software) - An article in Wikipedia.
- An Overview - by official chef.io.
- Chef Workstation - Knife, chef-repo, Chef DK etc by official chef.io.
- Chef Server - Chef server components.
- Chef Node - How chef-client runs, run-list, node names, etc.
- Cookbook - What is a cookbook and its components (metadata, recipe, resource, attributes, templates, etc).
- Attribute - attibutes defined by type (default, normal, automatic), by useage (node, role, environment).
- Resource - Chef resource which is a building block of a recipe.
- Data Bag - Data bag and its usage.
Tutorials
- A Beginner’s Guide to Chef - A short descriptoions for key concepts of Chef
- Getting started with Chef - Learn how to configure, manage and provision cloud servers with Chef by following practical examples with real world applications.
Cookbooks
A cookbook is the fundamental unit of configuration and policy distribution in Chef. Each cookbook defines a scenario, such as everything needed to install and configure MySQL, and then it contains all of the components that are required to support that scenario. Chef maintains a collection of cookbooks that are important to Chef and are widely used by the Chef community. - What is a cookbook?
Docker
Ruby
- chruby
- rbenv - configure rbenv.
- ruby_build
- rvm
- unicorn - Deprecated
- xml::ruby - Installs the nokogiri gem into Chef's Ruby environment.
Java
PHP
Language Runtimes
Web Server
- apache2 - Apache HTTP server v2.x.
- nginx
- passenger_apache2 - Passenger for Apache2.
Database
- couchdb
- hadoop - Hadoop 2.0+.
- mariadb
- mongodb
- mysql
- percona - Percona XtraDB Cluster and other components.
- oracle
- postgresql
- redis
- riak - Riak
Loadbalancer, Cache, Proxy and Message Queue
Web Applications
- elasticsearch
- elkstack - ELK stack Combine Elasticsearch, Logstash and Kibana.
- gitlab
- jenkins
- postfix
- wordpress
Building/Installing Software
- build-essential - gcc, make, autoconf, bison, gettext etc.
- git
- xml - Installs development package for libxml.
Service Discovery
- consul - Hashicorp Consul
- consul-template
- etcd - etcd is a distributed key value store that provides a reliable way to store data across a cluster of machines.
- zookeeper - Apache Zookeeper
Logging/Monitoring
- collectd - Collectd
- datadog - DataDog
- fail2ban - Fail2ban
- grafana - Grafana (A Graphite Dashboard and Graph Editor)
- graphite - Graphite
- graphitus - Graphitus
- graylog - Graylog
- icinga - Icinga/CheckMK
- kibana - Kibana
- logrotate
- logstash
- nagios
- newrelic
- newrelic_plugins
- munin - Munin
- monit - Monit
- rsyslog
- sensu - Sensu
- splunk - Splunk
- zabbix - Zabbix
Network/Security
- iptables
- ntp
- openldap
- openssh
- openvpn
- resolver - Configures
/etc/resolv.conf
via attributes. - ssh-key - Creates
authorized_keys
in user~/.ssh
directory from a data bag (encrypted data bag supported).
File System/Storage
Resources
When you write wrapper cookbooks, use following resources. The list includes both Chef's built in resources and LWRP of community/open source cookbooks.
Commands/Scripts
- cron - Chef builtin resource.
- cron_d - LWRP to manage files in
/etc/cron.d
- execute - Chef builtin resource.
- magic_shell_alias, magic_shell_environment - Create a command alias or shell environment variable.
- script - Chef builtin resource.
Files/Directories
- ark - extract/build/configure.
- cookbook_file - Chef builtin resource.
- directory - Chef builtin resource.
- file - Chef builtin resource.
- link - Chef builtin resource.
- remote_file - Chef builtin resource.
- rsync_serve - rsync server module.
- s3_file - fetch files from AWS S3.
- template - Chef builtin resource.
- append_if_no_line, replace_or_add, delete_lines, add_to_list, delete_from_list - Edit lines in a file rather than replacing whole file.
User Management/Authorization
- group - Chef builtin resource.
- user_ulimit - User limits
- user - Chef builtin resource, manage user.
- users_manage - manage user using data bag search.
- sudo
Security
- certificate_manage - Manages x509 certificates and keys from encrypted Data Bags.
- firewall
- firewall_rule
- letsencrypt_certificate - Automatically get/renew free and trusted certificates from Let's Encrypt.
- random_password - useing openssl.
- openssl_dhparam
- openssl_rsa_key
- openssl_x509 - Generates self-signed, PEM-formatted x509 certificates.
- selinux_state
- simple_iptables_rule
- ssh_known_hosts_entry
Deployment
- git - Chef builtin resource.
- deploy - Chef builtin resource.
- application
- application_git
- application_javascript
- application_nodejs
- application_php
- application_python
- application_ruby
Apache HTTP Server Config
- php_fpm_pool
- web_app - setup Apache HTTP server v2.x virtual host.
Database Config/Management
Packages/Package Repositories
- package - Chef builtin resource.
- apt_repository
- yum_repository
Service Management/Init System
- runit_service - Configure runit.
- service - Chef builtin resource.
- supervisor_service - (Python) supervisor.
Operating System Configuration
- hostsfile_entry - /etc/hosts file.
- mount - Chef builtin resource.
- lvm_physical_volume
- lvm_logical_volume
- route - Chef builtin resource, manage system's routing table.
- sysctl_param - set the kernel parameter.
- vim
- zsh
Chef for Windows
List of cookbooks and resources which supports windows.
Application Cookbooks - Language Runtime
Application Cookbooks - Software
- iis - Microsoft Internet Information Services.
- sql_server - Microsoft SQL Server 2008 R2 and Microsoft SQL Server 2012 server and client.
- 7-zip
Resources - Files/Directories
- cookbook_file - Chef builtin resource.
- directory - Chef builtin resource.
- file - Chef builtin resource.
- link - Chef builtin resource.
- mount - Chef builtin resource.
- remote_file - Chef builtin resource.
- template - Chef builtin resource.
Resources - Command Execution / Launching Software
- batch - Chef builtin resource, manage batch script.
- windows_auto_run - Configure an software to run at login.
Resources - Package/Software Installation
- chocolatey_package - Chef builtin resource. Manage packages using. Chocolatey windows package management system.
- env - Chef builtin resource, manage environment keys in Microsoft Windows.
- powershell
- reboot - Chef builtin resource.
- windows_feature
- windows_package - Chef builtin resource.
Resources - OS configuration
- user - Chef builtin resource, Windows compatible
- windows_certificate - Installs a certificate into the Windows certificate store from a file.
- windows_path
- registry_key
- windows_registry
- windows_service - Chef builtin resource.
- windows_task
Resources - Application configuration
Chef handlers
A handler is used to identify situations that may arise during a chef-client run, and to then instruct the chef-client how to handle these situations, should they occur. — Handlers
- About Handlers - Official reference page
- Supermarket - Handlers registered in Supermarket.
- Chef Elapsed Time Handler - A chef handler that reports on per-resource elapsed times in a simple graphical form.
- Chef Datadog Handler - Get Chef stats directly into Datadog. Add the gem as an execution and report handler to your Chef run.
- Chef SNS Handler - Chef report handler to send Amazon SNS notifications on failures or changes, includes IAM roles support.
- Chef Users Handler - A dead simple Chef handler to report changes in users. Can send emails using the Pony gem.
- Chef Zookeeper Handler - A simple Chef report handler to send notifications to ZooKeeper about Chef runs.
- Chef Airbrake Handler - Chef handler for sending exceptions to Airbrake.
- Chef Zabbix Handler - Send chef-client statistics to zabbix using a report handler.
- Chef Campfire Handler - Chef Exception & Reporting Handler for Campfire
- Chef Cookbook Version Handler - This cookbook installs a Chef report handler to log the cookbooks and versions run on the node as part of the Chef run.
- Chef Flowdock Handler - A Chef handler that collects exception and report handler data and reports it to Flowdock, a web-based team inbox and chat tool.
- Chef Graphite Handler - Simple handler to send data to Graphite about your node's Chef runs, including elapsed time, total number of resources, number of resources updated, and success or failure.
- Chef Graylog2/Gelf Handler - A Chef handler that reports to Graylog2 servers.
- Chef Growl Handler - A simple Chef report handler using ruby_gntp to send growl notifications.
- Chef HipChat Handler - A handler that collects exception and report handler data and then sends it as a Growl notification.
- Chef IRC Snitch Handler - An exception handler for OpsCode Chef runs, GitHub Gist & IRC.
- Chef Librato Handler - A handler that sends Chef run metrics to Librato.
- Chef Mail Handler - A simple chef report handler that uses the Pony gem to send email reports generated from an Erubis template.
- Chef Splunk Storm Handler - A Chef Exception & Reporting Handler for Splunk Storm.
- Chef Syslog Handler - Syslog report and error handler for Chef.
- Chef Updated Resources Handler - Simple Report Handler of Updated Resources.
Add-ons
- Chef Rewind - Monkeypatch chef to edit existing resources in place.
- Chef Sugar - Chef Sugar is a Gem & Chef Recipe that includes series of helpful sugar of the Chef core and other resources to make a cleaner, more lean recipe DSL, enforce DRY principles, and make writing Chef recipes an awesome experience!
- Knife Spork - A workflow plugin to help many devs work with cookbooks and environments at once.
- Knife Flip - A knife plugin to quickly move a node between environments.
- Chef Whitelist - Simple library to enable host based rollouts of changes.
- Poise Appenv - Helpers for application-specific envronment settings in Chef.
- Chef-Guard - An add-on that protects your Chef server from untested and uncommitted (i.e. potentially dangerous) cookbooks.
Podcasts
Chef podcast
- Food Fight Show - The Podcast where DevOps chefs do battle.
DevOps podcast
- DevOps Cafe Podcast -
- Ops All The Things! - A Podcast about all things Operations, DevOps and Systems Administration.
- Arrested DevOps - There's always DevOps in the banana stand.
Books
- Chef Infrastructure Automation Cookbook - For systems administrators and developers this book could revolutionize your cloud and server infrastructure through automation. Packed with real world situations and practical recipes, it’s a dazzling insight into Chef.
- Customizing Chef - Getting the Most Out of Your Infrastructure Automation. Take advantage of Chef’s highly customizable design to tackle specific automation issues that you can’t solve by simply using Chef’s tools, resources, and services out of the box.
- Learning Chef - A Guide to Configuration Management and Automation.
- Test-Driven Infrastructure with Chef - Bring behaviour-driven development to infrastructure as code.
- Test-Driven Infrastructure with Chef, 2nd Edition - Bring Behavior-Driven Development to Infrastructure as Code.
- Managing Windows Servers with Chef - Harness the power of Chef to automate management of Windows-based systems using hands-on examples.
- The chef-book - People Keep Asking Me How to Start With Chef.
- Getting started with Chef - Learn how to configure, manage and provision cloud servers with Chef by following practical examples with real world applications.
Newsletters
- UsingChef Newsletter - This newsletter is intended for the Chef practitioner who uses Chef every day and wants to learn something new, make their lives easier, and stay up to date.
Articles
- Secrets Management and Chef - Everyone has secrets. Database passwords, API credentials, recovery questions. These secrets need to be stored somewhere, and then made available to servers that use them.
- How to Write Reusable Chef Cookbooks, Gangnam Style -
Contribution Guidelines
Please ensure your pull request adheres to the following guidelines:
- Please search previous suggestions before making a new one, as yours may be a duplicate.
- Please make an individual pull request for each suggestion.
- Use the following format: [RESOURCE](LINK) - DESCRIPTION.
- Keep descriptions short and simple.
- End all descriptions with a full stop/period.
- Check your spelling and grammar.
- New categories, or improvements to the existing categorisation are welcome.
Thank you for your suggestions!