Infrastructure Code Deserves Tests Too

Get Started

What is Kitchen?

Kitchen provides a test harness to execute infrastructure code on one or more platforms in isolation.

A driver plugin architecture is used to run code on various cloud providers and virtualization technologies such as Amazon EC2, Google GCE, Azure, Blue Box, CloudStack, Digital Ocean, Rackspace, OpenStack, Vagrant, Docker, LXC containers, and more.

Many testing frameworks are supported out of the box including InSpec, Serverspec, and Bats

For Chef workflows, cookbook dependency resolution via Berkshelf or Policyfiles is supported or include a cookbooks/ directory and Kitchen will know what to do.

Kitchen is used by all Chef-managed community cookbooks and is the integration testing tool of choice for cookbooks.

---
driver:
  name: vagrant

provisioner:
  name: chef_zero

platforms:
  - name: ubuntu-14.04
  - name: windows-2012r2

suites:
  - name: client
    run_list:
      - recipe[postgresql::client]
  - name: server
    run_list:
      - recipe[postgresql::server]
$ kitchen create

$ kitchen converge

$ kitchen setup

$ kitchen verify

$ kitchen destroy

How do I run Kitchen?

There are five basic commands to provision platforms and test infrastructure code.

--> Running rspec test suites

  ✔ git binary is found in PATH

3 tests, 2 failures

Finished verifying

<default-ubuntu-1404> (0m0.98s).

--> Destroying

--> Kitchen is finished.
(1m44.11s)

How do I get started?

Install the Chef Development Kit (ChefDK) to get started. Alternatively, install the gem directly with gem install test-kitchen.

Get Started