Community Plugins¶
This page lists plugins for knife, Ohai, handlers, and the chef-client that are developed and maintained by the Chef community.
Knife¶
knife is a command-line tool that provides an interface between a local chef-repo and the Chef server. knife helps users to manage:
- Nodes
- Cookbooks and recipes
- Roles, Environments, and Data Bags
- Resources within various cloud environments
- The installation of the chef-client onto nodes
- Searching of indexed data on the Chef server
knife plugins for cloud hosting platforms— knife azure, knife bluebox, knife ec2, knife eucalyptus, knife google, knife linode, knife openstack, and knife rackspace, —are built and maintained by Chef.
The following table lists knife plugins built by the Chef community.
Plugin | Description |
---|---|
knife-audit | Adds the ability to see how many (and which) nodes have a cookbook in its run-list. |
knife-baremetalcloud | Adds the ability to manage compute nodes in baremetalcloud. |
knife-batch | Adds the ability to execute commands like knife ssh , but in groups of N with a sleep between execution iterations. |
knife-block | Adds the ability to create and manage multiple config.rb files for working with many servers. |
knife-brightbox | Adds the ability to create, bootstrap, and manage instances in the brightbox cloud. |
knife-bulk-change-environment | Adds the ability to move nodes from one environment to another. |
knife-canon | Adds the ability to compare command output across hosts. |
knife-cfn | Adds the ability to validate, create, describe, and delete stacks in AWS CloudFormation. |
knife-cisco_asa | Adds the ability to manage Cisco ASA devices. |
knife-cleanup | Adds the ability to remove unused versions of cookbooks that are hosted on the Chef server. (Cookbook versions that are removed are backed-up prior to deletion.) |
knife-cloudstack-fog | Adds the ability to create, bootstrap, and manage instances in CloudStack using Fog, a Ruby gem for interacting with various cloud providers. |
knife-cloudstack | Adds the ability to create, bootstrap, and manage CloudStack instances. |
knife-community | Adds the ability to assist with deploying completed cookbooks to the community web site. |
knife-crawl | Adds the ability to display the roles that are included recursively within a role and (optionally) all of the roles that include it. |
knife-digital_ocean | Adds the ability to create, bootstrap, and manage instances in DigitalOcean. |
knife-ec2-amis-ubuntu | Adds the ability to retrieve a list of released Ubuntu Amazon Machine Images (AMI). |
knife-elb | Adds the ability to add and remove instances from existing enterprise load balancers, enlist them, and then show them. (This does not add the ability to create or delete enterprise load balancers.) |
knife-env-diff | Adds the ability to diff the cookbook versions for two (or more) environments. |
knife-esx | Adds support for VMware. |
knife-file | Adds utilities that help manipulate files in a chef-repo. |
knife-flip | Adds improvements to knife-set-environment with added functionality and failsafes. |
knife-gandi | Adds the ability to create, bootstrap, and manage servers on the gandi.net hosting platform. |
knife-gather | Adds the ability to collate multi-line output from parallel knife ssh outputs into one section per host. |
knife-github-cookbooks | Adds the ability to create vendor branches automatically from any GitHub cookbook. |
knife-glesys | Adds the ability to create, delete, list, and bootstrap servers on GleSYS. |
knife-ipmi | Adds simple power control of nodes using IPMI. |
knife-kvm | Adds Linux support for KVM. |
knife-lastrun | Adds key metrics from the last chef-client run on a given node. |
knife-oci | Adds support for Oracle Cloud Infrastructure. |
knife-ohno | Adds the ability to view nodes that haven’t checked into the platform for N hours. |
knife-oktawave | Adds the ability to manage Oktawave Cloud Instances. |
knife-onehai | Adds the ability to get the last seen time of a single node. |
knife-playground | Adds miscellaneous tools for knife. |
knife-plugins | Adds a set of plugins that help manage data bags. |
knife-pocket | Adds the ability to save a knife search query for later use, such as when using knife ssh . |
knife-preflight | Adds the ability to check which nodes and roles use a cookbook. This is helpful when making changes to a cookbook. |
knife-profitbricks | Adds the ability to create, bootstrap, and manage instances in the ProfitBricks IaaS. |
knife-rhn | Adds the ability to manage the Red Hat network. |
knife-rightscale | Adds the ability to provision servers on clouds managed by the RightScale platform. |
knife-role_copy | Adds the ability to get data from a role, and then set up a new role using that data (as long as the new role doesn’t have the same name as an existing role). |
knife-rvc | Integrates a subset of knife functionality with Ruby vSphere Console. |
knife-santoku | Adds the ability to build processes around the chef-client. |
knife-select | Adds the ability for selecting the chef server or organization to interact with. |
knife-server | Adds the ability to manage a Chef server, including bootstrapping a Chef server on Amazon EC2 or a standalone server and backing up and/or restoring node, role, data bag, and environment data. |
knife-set-environment | Adds the ability to set a node environment. |
knife-skeleton | Adds the ability to create skeleton integrating chefspec, rubocop, foodcritic, knife test and kitchen. |
knife-softlayer | Adds the ability to launch and bootstrap instances in the IBM SoftLayer cloud. |
knife-solo | Adds support for bootstrapping and running chef-solo, search, and data bags. |
knife-slapchop | Adds the ability create and tag clusters of Amazon EC2 nodes with a multi-threading bootstrap process. |
knife-spork | Adds a simple environment workflow so that teams can more easily work together on the same cookbooks and environments. |
knife-ssh_cheto | Adds extra features to be used with SSH. |
knife-ucs | Adds the ability to provision, list, and manage Cisco UCS servers. |
knife-voxel | Adds the ability to provision instances in the Voxel cloud. |
knife-whisk | Adds the ability to create new servers in a team environment. |
knife-xapi | Adds support for Citrix XenServer. |
Ohai¶
Ohai is a tool that is used to collect system configuration data, which is provided to the chef-client for use within cookbooks. Ohai is run by the chef-client at the beginning of every Chef run to determine system state. Ohai includes many built-in plugins to detect common configuration details as well as a plugin model for writing custom plugins.
The types of attributes Ohai collects include but are not limited to:
- Operating System
- Network
- Memory
- Disk
- CPU
- Kernel
- Host names
- Fully qualified domain names
- Virtualization
- Cloud provider metadata
Attributes that are collected by Ohai are automatic level attributes, in that these attributes are used by the chef-client to ensure that these attributes remain unchanged after the chef-client is done configuring the node.
The following Ohai plugins are available from the open source community:
Plugin | Description |
---|---|
dell.rb | Adds some useful Dell server information to Ohai. For example: service tag, express service code, storage info, RAC info, and so on. To use this plugin, OMSA and SMBIOS applications need to be installed. |
ipmi.rb | Adds a MAC address and an IP address to Ohai, where available. |
kvm_extensions.rb | Adds extensions for virtualization attributes to provide additional host and guest information for KVM. |
ladvd.rb | Adds ladvd information to Ohai, when it exists. |
lxc_virtualization.rb | Adds extensions for virtualization attributes to provide host and guest information for Linux containers. |
network_addr.rb | Adds extensions for network attributes with additional ipaddrtype_iface attributes to make it semantically easier to retrieve addresses. |
network_ports.rb | Adds extensions for network attributes so that Ohai can detect to which interfaces TCP and UDP ports are bound. |
parse_host_plugin.rb | Adds the ability to parse a host name using three top-level attribute and five nested attributes. |
r.rb | Adds the ability to collect basic information about the R Project. |
sysctl.rb | Adds sysctl information to Ohai. |
vserver.rb | Adds extensions for virtualization attributes to allow a Linux virtual server host and guest information to be used by Ohai. |
wtf.rb | Adds the irreverent wtfismyip.com service so that Ohai can determine a machine’s external IPv4 address and geographical location. |
xenserver.rb | Adds extensions for virtualization attributes to load up Citrix XenServer host and guest information. |
win32_software.rb | Adds the ability for Ohai to use Windows Management Instrumentation (WMI) to discover useful information about software that is installed on any node that is running Microsoft Windows. |
win32_svc.rb | Adds the ability for Ohai to query using Windows Management Instrumentation (WMI) to get information about all services that are registered on a node that is running Microsoft Windows. |
Handlers¶
Use a handler to identify situations that arise during a chef-client run, and then tell the chef-client how to handle these situations when they occur.
The following open source handlers are available from the Chef community:
Handler | Description |
---|---|
Airbrake | A handler that sends exceptions (only) to Airbrake, an application that collects data and aggregates it for review. |
Asynchronous Resources | A handler that asynchronously pushes exception and report handler data to a STOMP queue, from which data can be processed into data storage. |
Campfire | A handler that collects exception and report handler data and reports it to Campfire, a web-based group chat tool. |
Datadog | A handler that collects chef-client stats and sends them into a DATADOG newsfeed. |
Flowdock | A handler that collects exception and report handler data and sends it to users via the Flowdock API.. |
Graphite | A handler that collects exception and report handler data and reports it to Graphite, a graphic rendering application. |
Graylog2 GELF | A handler that provides exception and report handler status (including changes) to a Graylog2 server, so that the data can be viewed using Graylog Extended Log Format (GELF). |
Growl | A handler that collects exception and report handler data and then sends it as a Growl notification. |
HipChat | A handler that collects exception handler data and sends it to HipChat, a hosted private chat service for companies and teams. |
IRC Snitch | A handler that notifies administrators (via Internet Relay Chat (IRC)) when a chef-client run fails. |
Journald | A handler that logs an entry to the systemd journal with the chef-client run status, exception details, configurable priority, and custom details. |
net/http | A handler that reports the status of a Chef run to any API via net/HTTP. |
Simple Email | A handler that collects exception and report handler data and then uses pony to send email reports that are based on Erubis templates. |
SendGrid Mail Handler | A chef handler that collects exception and report handler data and then uses SendGrid Ruby gem to send email reports that are based on Erubis templates. |
SNS | A handler that notifies exception and report handler data and sends it to a SNS topic. |
Slack | A handler to send chef-client run notifications to a Slack channel. |
Splunk Storm | A handler that supports exceptions and reports for Splunk Storm. |
Syslog | A handler that logs basic essential information, such as about the success or failure of a chef-client run. |
Updated Resources | A handler that provides a simple way to display resources that were updated during a chef-client run. |
ZooKeeper | A Chef report handler to send Chef run notifications to ZooKeeper. |
chef-client¶
The following plugins are available for the chef-client:
Plugin | Description |
---|---|
chef-deploy | Adds a gem that contains resources and providers for deploying Ruby web applications from recipes. |
chef-gelf | Adds a handler that reports run status, including changes made to a Graylog2 server. |
chef-handler-twitter | Adds a handler that tweets. |
chef-handler-librato | Adds a handler that sends metrics to Librato’s Metrics. |
chef-hatch-repo | Adds a knife plugin and a Vagrant provisioner that can launch a self-managed Chef server in a virtual machine or Amazon EC2. |
chef-irc-snitch | Adds an exception handler for chef-client runs. |
chef-jenkins | Adds the ability to use Jenkins to drive continuous deployment and synchronization of environments from a git repository. |
chef-rundeck | Adds a resource endpoint for Rundeck. |
chef-trac-hacks | Adds the ability to fill a coordination gap between Amazon Web Services (AWS) and the chef-client. |
chef-vim | Adds a plugin that makes cookbook navigation quick and easy. |
chef-vpc-toolkit | Adds a set of Rake tasks that provide a framework that helps automate the creation and configuration of identical virtual server groups in the cloud. |
jclouds-chef | Adds Java and Clojure components to the Chef server API REST API. |
kitchenplan | A utility for automating the installation and configuration of a workstation on macOS. |
stove | A utility for releasing and managing cookbooks. |