Chef Tutorials: Test Kitchen Workflow and Examples



# kitchen init --create-gemfile

Run the kitchen init --create-gemfile command in your newly created kitchen directory. The kitchen init command generates all the config files needed to add Test Kitchen support to a project. We need to use the --create-gemfile option, because if we don’t, Test Kitchen will immediately try to run gem install as a user instead of as an admin. This fails on some platforms because the Chef Development Kit installation doesn’t always make its gem directory user-writeable:


$ kitchen init --create-gemfile
 create .kitchen.yml
 create test/integration/default
 create Gemfile
 append Gemfile
 append Gemfile
You must run `bundle install' to fetch any new gems.

# bundle install
The bundle install command referenced in the preceding command line output refers to the Bundler tool. Bundler is a tool that downloads and manages Ruby gems. Test Kitchen needs you to run bundle install to download and install the kitchenvagrant driver and some supporting gems.

$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Using mixlib-shellout (1.4.0)
Using net-ssh (2.9.1)
Using net-scp (1.2.1)
Using safe_yaml (1.0.3)
Using thor (0.19.1)
Using test-kitchen (1.2.1)
Using kitchen-vagrant (0.15.0)
Using bundler (1.5.2)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.


kitchen.yml

Used to configure virtual environments for Test Kitchen

Gemfile

Bundler uses this file to configure the gem repository and the list of gems to down‐load. Bundler will automatically determine a gem’s dependencies by its references to other gems, so you need only list the top level gems you require.

Gemfile.lock

Records all the versions of the gems Bundler downloaded for the current project, plus the versions of all dependencies. This file can be used by another Chef devel‐oper to reproduce your current gem environment using bundle install.

.kitchen/

Hidden directory that Test Kitchen uses to store persistent data it needs to function properly.

.kitchen/logs/kitchen.log

Text file that contains the output from the last run of Test Kitchen.

test/

Directory structure that contains tests (initially just a skeleton structure with the subdirectory tree test/integration/default/).

Running the Commands in Sequence


# Kitchen List
$ kitchen list 

# Kitchen Create
$ kitchen create

# Kitchen Converge
$ kitchen converge

# Testing Setup - Kitchen login is used to test if the testing VM is provisioned correctly.
$ kitchen login 

# Finally Exit
$ exit

# Destroying Setup
$ Kitchen destroy 

Rajesh Kumar
Follow me
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x