Chapter 10. Customizing Knife

In previous chapters, we mainly focused on customizations to the Chef run itself, and creating providers and resources for use in our recipes. In this chapter, we’re going to move outside of the Chef run and look at how we can customize Knife. As we saw in Chef Client Tools, Knife is the primary command-line tool for interacting with Chef servers and is installed by default as part of the Chef installation process. Out of the box, Knife ships with a number of default plugins that support a variety of common tasks, such as:

  • Uploading cookbooks to the Chef server
  • Bootstrapping nodes to install and run chef-client
  • Creating, modifying, and deleting user and client objects
  • Setting run lists on nodes

Tip

You can find a full listing of the commands supported by Knife out of the box on the Chef Documents site.

As with many of the features and tools that Chef ships with, however, Knife is not limited to only those commands provided by Chef, Inc. Under the hood, every command supported by Knife is driven by its extensible and flexible plugin interface, which we can also use to implement our own Knife commands.

In this chapter, we’ll learn about:

  • How to obtain and navigate around the Knife source code
  • The common framework shared by all Knife plugins
  • The anatomy of executing a Knife command
  • How to create and run our own Knife plugins
  • How Knife plugins work under the hood
  • How to ensure that our Knife plugins provide a standardized user experience
  • The ...

Get Customizing Chef now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.