Book Image

Chef Infrastructure Automation Cookbook Second Edition

By : Matthias Marschall
Book Image

Chef Infrastructure Automation Cookbook Second Edition

By: Matthias Marschall

Overview of this book

Table of Contents (14 chapters)
Chef Infrastructure Automation Cookbook Second Edition
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Using libraries


You can use arbitrary Ruby code within your recipes. As long as your logic isn't too complicated, it's totally fine to keep it inside your recipe. However, as soon as you start using plain Ruby more than Chef DSL, it's time to the move logic into external libraries.

Libraries provide a place to encapsulate Ruby code so that your recipes stay clean and neat.

In this section, we'll create a simple library to see how this works.

Getting ready

Make sure you have a cookbook called my_cookbook and that the run_list of your node includes my_cookbook, as described in Creating and using cookbooks recipe of Chapter 1, Chef Infrastructure.

How to do it...

Let's create a library and use it in a cookbook:

  1. Create a helper method in your own cookbook's library:

    mma@laptop:~/chef-repo $ mkdir -p cookbooks/my_cookbook/libraries
    mma@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb
    
    class Chef::Recipe
      def netmask(ipaddress)
        IPAddress(ipaddress).netmask
      end
    end
  2. Use your...