Chapter 9. Heavyweight Resources and Providers

In Chapter 8, we learned how lightweight resources and providers give us an easy and flexible way to create our own resources and providers, using a DSL to abstract away much of the complexity involved in interacting with Chef’s resource and provider classes. In this chapter, we’re going to learn about heavyweight resources and providers, which trade the convenience and ease of use afforded by the LWRP abstraction layer for being able to leverage the full power of Chef’s resource and provider classes.

Heavyweight resources and providers are written in native Ruby, and are particularly useful when the behavior of the LWRP DSL doesn’t quite fit your needs, or when you want to extend one of Chef’s built-in resource types. In this chapter, we’ll learn:

  • How the structure of an HWRP differs from that of an LWRP
  • What the components of an HWRP are
  • How to create your own HWRPs
  • How to extend existing Chef resource types
  • How to make use of Chef’s provider mapping to have Chef automatically use your provider

As with previous chapters, we’ll also augment our learning by working through a series of code examples to help our friends at AwesomeInc with some of the issues they have been experiencing.

Tip

Because LWRPs and HWRPs share some underlying commonalities, I recommend that, if you haven’t already done so, you read through Chapter 8 before starting this chapter. Much of the material in the earlier sections of Chapter 8 ...

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.