As more companies become more DevOps focused, code testing is creeping its way out of just the software development realm. With software "eating the world," we are now seeing operations/system administrators writing more code. A lot of this code is "infrastructure code". This code automates tasks like VM creation, standing up databases, adding/removing users from machines and so on.

With the ever-increasing dependence on this "infrastructure code", it's becoming necessary to perform tests on this code through concepts like unit and integration testing.

One open source product that expedites integration testing is called Test Kitchen. Test Kitchen, developed by Chef, allows the user to dynamically bring up virtual machines, perform tests on them and quickly tear them down. It's a great tool to use to actually run your infrastructure code in a sandbox to ensure it does what you would expect.

Prerequisites

To get started with Test Kitchen, you'll need to install a few prerequisites.

Once you've got each of these tools installed, you can proceed. Test Kitchen can be run on Windows, Linux or MacOS but for this article, I will be using MacOS.

Installation

First, install the Test Kitchen Ruby gem in your Bash console. This will download Test Kitchen from the online repository and get it installed. For this post, I'll be working with version 1.13.2.

> sudo gem install test-kitchen
Installing Test Kitchen

Initializing Test Kitchen

The first task you must complete is initializing Test Kitchen. This is done through the kitchen init command.

Below I'm running kitchen init and specifying the kitchen-vagrant driver. In Test Kitchen, drivers are used to simulate testing on various providers. They are the layer between you and the provider (VirtualBox in this instance).

If the driver is not installed, it will be installed for you. This also creates the main kitchen.yml file where most of your configuration will be.

kitchen init

Let's take a look at the kitchen.yml file.

default kitchen.yml file

By default, the kitchen.yml file contains a template. This templates specifies that you'd like to bring up an Ubuntu 14.04 and a CentOS via Vagrant. Leave the default configuration file the way it is and now run kitchen list to see what will be created.

kitchen list

Bringing up VMs

Now bring up the VMs by running kitchen create. This will download the VMs if not on the local machine and get them configured using Vagrant.

kitchen create

Once the VMs are created is where your choices are open. Test Kitchen is built to test Chef recipes but can also run Pester tests and more. You're now on the way to building and running tests against the infrastructure that was just created!

At this point, the world is your oyster. You are encouraged to dive deeper into Test Kitchen by visiting the official Test Kitchen site. This is where you'll find similar examples of what was covered here as well as how to take your Test Kitchen installation further by incorporating Chef test recipes and more.

Summary

In this post, you were introduced to Chef's Test Kitchen product. This product allows developers and administrators to quickly provision virtual infrastructure. This virtual infrastructure can then be used for testing infrastructure as code scenarios ensuring your code is solid.

Join the Jar Tippers on Patreon

It takes a lot of time to write detailed blog posts like this one. In a single-income family, this blog is one way I depend on to keep the lights on. I'd be eternally grateful if you could become a Patreon patron today!

Become a Patron!