Before going further to running integration tests on your cookbooks and roles we need to prepare a bit by creating an Lxd container, where we would run our tests. This is a script that creats an Lxd container with Chef installed and a running ssh server (required for Test Kitchen transport).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
codename=xenial
# download container
lxc init images:ubuntu/${codename}/amd64 u
# add network to the container
lxc network attach lxdbr0 u
lxc start u
# wait for network
sleep 5
lxc exec u apt-get -- update
# install ssh server
lxc exec u apt-get -- install openssh-server -y
# install Chef
lxc exec u apt-get -- install ruby ruby-dev make gcc -y
lxc exec u gem -- install chef -N
chef_version=`lxc exec u gem -- list ^chef$ -q`
# clean future image
lxc exec u apt-get -- clean
lxc exec u apt-get -- autoclean
lxc exec u find -- /var/lib/apt/ -type f -delete
lxc exec u rm -- -f ~/.bash_history
# create image
lxc stop u
lxc publish u --alias=kitchen-${codename}64 description="Ubuntu $codename (x64) with $chef_version"
lxc delete u