Using Kitchen-Docker Driver to test cookbooks
- In this series lets understand how to use docker instances to verify chef cookbooks
- Using docker to test cookbooks drastically simplifies testing various environments and reduces cost
- So we would be using the test kitchen driver which is a docker
- For demonstrating this, I am using the ubuntu virtual machine as chef workstation
- So lets start with installing the chefdk on the ubuntu virtual machine
- Download the current release of chef dk from here and install it . I will be downloading the deb file since my workstation is ubuntu 18
cd /tmp
wget https://packages.chef.io/files/stable/chefdk/4.7.73/ubuntu/18.04/chefdk_4.7.73-1_amd64.deb
sudo dpkg -i /tmp/chefdk_4.7.73-1_amd64.deb
- one the chefdk is installed, check the installation using version command
chef --version
- Now since we would be using docker as a driver, lets install docker using docker shell script from here
cd /tmp
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
sudo usermod -aG docker $USER
- Now exit and relogin into the linux system.
- Create a chef cookbook
chef generate cookbook -b kitchendockerdemo
cd kitchendockerdemo\
- Now install kitchen-docker gem using the following command
chef gem install kitchen-docker
- Now change kitchen.yml file to match the driver specifications are mentioned over here
---
driver:
name: docker
provisioner:
name: chef_zero
always_update_cookbooks: true
verifier:
name: inspec
platforms:
- name: ubuntu
- name: centos
driver_config:
image: centos:7
platform: centos
transport:
name: docker
suites:
- name: default
run_list:
- recipe[kitchendockerdemo::default]
verifier:
inspec_tests:
- test/integration/default
attributes:
- Now add some code to default.rb in recipes
#
# Cookbook:: kitchendockerdemo
# Recipe:: default
#
# Copyright:: 2020, The Authors, All Rights Reserved.
file '/tmp/readme.txt' do
content 'Created for demo'
action :create
end
- Now execute the following commands
- List kitchen test environments using the command
kitchen list
- Create test environments using the command
kitchen create
- Now List kitchen test environments using the command to know status
kitchen list
- Converge the test environments using command
kitchen converge
- Now List kitchen test environments using the command to know status
kitchen list
- Once you have finished testing the cookbook, destroy the instances using
kitchen destroy
- List kitchen test environments using the command