I am trying to get Test Kitchen to use Docker containers for our Chef cookbook testing, using chef-solo
.
FROM centos:centos6
MAINTAINER Eric Krupnik <[email protected]>
# Update and install base tools
RUN yum update -y && yum groupinstall -y "Development Tools"
# Install packages needed for Ruby and rmv
RUN yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel
RUN yum install -y libyaml-devel libffi-devel openssl-devel make
RUN yum install -y bzip2 autoconf automake libtool bison iconv-devel
RUN yum install -y which tar
# Install Ruby Version Manager (rvm)
RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
RUN curl -L get.rvm.io | bash -s stable
RUN source /usr/local/rvm/scripts/rvm
RUN source /etc/profile.d/rvm.sh
# Install Ruby 1.9.3
RUN /bin/bash -l -c "rvm requirements"
RUN /bin/bash -l -c "rvm install 1.9.3"
# Set the Ruby version to use
RUN /bin/bash -l -c "rvm use 1.9.3 --default"
# By default, add the --no-ri and --no-doc to all 'gem install' commands
RUN echo "gem: --no-ri --no-rdoc" > ~/.gemrc
# Install the gems
RUN /bin/bash -l -c "gem install bundler"
RUN /bin/bash -l -c "gem install ohai -v=6.18.0"
RUN /bin/bash -l -c "gem install chef -v=11.6.0"
RUN /bin/bash -l -c "gem install ruby-shadow"
RUN /bin/bash -l -c "gem install minitest-chef-handler -v=1.0.1"
RUN /bin/bash -l -c "gem install ci_reporter -v=1.9.0"
RUN /bin/bash -l -c "gem uninstall ci_reporter -v=2.0.0" || true
RUN /bin/bash -l -c "gem install mixlib-shellout -v=1.4.0"
RUN /bin/bash -l -c "gem uninstall mixlib-shellout -v=1.6.0" || true
RUN /bin/bash -l -c "gem uninstall ohai -v=7.4.0" || true
# Create and populate Test Kitchen cache
# Note: The trailing slashes for the destination are required
RUN mkdir -p /tmp/kitchen/cache
ADD <our_artifactory_url>/com/oracle/java/jdk/7u67/jdk-7u67-linux-x64.tar.gz /tmp/kitchen/cache/
ADD <our_artifactory_url>/org/apache/tomcat/apache-tomcat/7.0.56/apache-tomcat-7.0.56.tar.gz /tmp/kitchen/cache/
docker build -t="ekrupnik/test:latest" .
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ekrupnik/test latest ca982e782896 27 hours ago 809.3 MB
---
driver_plugin: docker
driver:
name: docker
use_sudo: false
driver_config:
require_chef_omnibus: false
platforms:
- name: centos
driver_config:
platform: centos
image: ekrupnik/test:latest
suites:
- name: default
provisioner:
solo_rb:
environment: CHEFDEV
encrypted_data_bag_secret_key_path: "<path_to_the_key>"
data_bags_path: "../../data_bags"
roles_path: "../../roles"
environments_path: "../../environments"
run_list: ["recipe[rup_utils]", "recipe[minitest-handler]"]
attributes:
cloud:
provider: "ec2"
-----> Starting Kitchen (v1.2.1)
D [kitchen::driver::docker command] BEGIN (docker >> /dev/null 2>&1)
D [kitchen::driver::docker command] END (0m0.02s)
D Berksfile found at /RUP/workspaces/infrastructure/ccc-chef/cookbooks/rup_utils/Berksfile, loading Berkshelf
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/version.rb:3: warning: already initialized constant VERSION
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/version.rb:4: warning: already initialized constant VERSION_ARRAY
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/version.rb:5: warning: already initialized constant VERSION_MAJOR
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/version.rb:6: warning: already initialized constant VERSION_MINOR
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/version.rb:7: warning: already initialized constant VERSION_BUILD
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/common.rb:99: warning: already initialized constant NaN
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/common.rb:101: warning: already initialized constant Infinity
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/common.rb:103: warning: already initialized constant MinusInfinity
/home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/json-1.8.1/lib/json/common.rb:128: warning: already initialized constant UnparserError
D Berkshelf 2.0.14 library loaded
-----> Cleaning up any prior instances of <default-centos>
-----> Destroying <default-centos>...
Finished destroying <default-centos> (0m0.00s).
-----> Testing <default-centos>
-----> Creating <default-centos>...
D [kitchen::driver::docker command] BEGIN (docker -H unix:///var/run/docker.sock build -)
Sending build context to Docker daemon 2.56 kB
Sending build context to Docker daemon
Step 0 : FROM ekrupnik/test:latest
---> 380c1d1d996b
Step 1 : RUN yum clean all
---> Using cache
---> 4d207a3c779f
Step 2 : RUN yum install -y sudo openssh-server openssh-clients which curl
---> Using cache
---> ae2e40e2de42
Step 3 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
---> Using cache
---> 5e84cf748f84
Step 4 : RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
---> Using cache
---> 3d2e1f2b8476
Step 5 : RUN useradd -d /home/kitchen -m -s /bin/bash kitchen
---> Using cache
---> 822b8c1fe35f
Step 6 : RUN echo kitchen:kitchen | chpasswd
---> Using cache
---> 14aaba805c8f
Step 7 : RUN echo 'kitchen ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
---> Using cache
---> c767c1a531ef
Step 8 : RUN echo 'kitchen ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/kitchen
---> Using cache
---> dac87bcf2c14
Successfully built dac87bcf2c14
D [kitchen::driver::docker command] END (0m0.42s)
D [kitchen::driver::docker command] BEGIN (docker -H unix:///var/run/docker.sock run -d -p 22 dac87bcf2c14 /usr/sbin/sshd -D -o UseDNS=no -o UsePAM=no -o PasswordAuthentication=yes -o UsePrivilegeSeparation=no -o PidFile=/tmp/sshd.pid)
511a400bdd456b8be5e5bb41c8f34f5e22f9754a75153e9ee9df239ce32b50ba
D [kitchen::driver::docker command] END (0m0.41s)
D [kitchen::driver::docker command] BEGIN (docker -H unix:///var/run/docker.sock inspect 511a400bdd456b8be5e5bb41c8f34f5e22f9754a75153e9ee9df239ce32b50ba)
[{
"AppArmorProfile": "",
"Args": [
"-D",
"-o",
"UseDNS=no",
"-o",
"UsePAM=no",
"-o",
"PasswordAuthentication=yes",
"-o",
"UsePrivilegeSeparation=no",
"-o",
"PidFile=/tmp/sshd.pid"
],
"Config": {
"AttachStderr": false,
"AttachStdin": false,
"AttachStdout": false,
"Cmd": [
"/usr/sbin/sshd",
"-D",
"-o",
"UseDNS=no",
"-o",
"UsePAM=no",
"-o",
"PasswordAuthentication=yes",
"-o",
"UsePrivilegeSeparation=no",
"-o",
"PidFile=/tmp/sshd.pid"
],
"CpuShares": 0,
"Cpuset": "",
"Domainname": "",
"Entrypoint": null,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"ExposedPorts": {
"22/tcp": {}
},
"Hostname": "511a400bdd45",
"Image": "dac87bcf2c14",
"Memory": 0,
"MemorySwap": 0,
"NetworkDisabled": false,
"OnBuild": null,
"OpenStdin": false,
"PortSpecs": null,
"StdinOnce": false,
"Tty": false,
"User": "",
"Volumes": null,
"WorkingDir": ""
},
"Created": "2015-01-10T18:36:16.541847658Z",
"Driver": "devicemapper",
"ExecDriver": "native-0.2",
"HostConfig": {
"Binds": null,
"CapAdd": null,
"CapDrop": null,
"ContainerIDFile": "",
"Devices": [],
"Dns": null,
"DnsSearch": null,
"ExtraHosts": null,
"Links": null,
"LxcConf": [],
"NetworkMode": "bridge",
"PortBindings": {
"22/tcp": [
{
"HostIp": "",
"HostPort": ""
}
]
},
"Privileged": false,
"PublishAllPorts": false,
"RestartPolicy": {
"MaximumRetryCount": 0,
"Name": ""
},
"SecurityOpt": null,
"VolumesFrom": null
},
"HostnamePath": "/var/lib/docker/containers/511a400bdd456b8be5e5bb41c8f34f5e22f9754a75153e9ee9df239ce32b50ba/hostname",
"HostsPath": "/var/lib/docker/containers/511a400bdd456b8be5e5bb41c8f34f5e22f9754a75153e9ee9df239ce32b50ba/hosts",
"Id": "511a400bdd456b8be5e5bb41c8f34f5e22f9754a75153e9ee9df239ce32b50ba",
"Image": "dac87bcf2c14307c7f3cedbd5a2cefd29bc15d741002957241b41bf5dfea9b91",
"MountLabel": "system_u:object_r:svirt_sandbox_file_t:s0:c857,c920",
"Name": "/trusting_brattain",
"NetworkSettings": {
"Bridge": "docker0",
"Gateway": "172.17.42.1",
"IPAddress": "172.17.0.141",
"IPPrefixLen": 16,
"MacAddress": "02:42:ac:11:00:8d",
"PortMapping": null,
"Ports": {
"22/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "49198"
}
]
}
},
"Path": "/usr/sbin/sshd",
"ProcessLabel": "system_u:system_r:svirt_lxc_net_t:s0:c857,c920",
"ResolvConfPath": "/var/lib/docker/containers/511a400bdd456b8be5e5bb41c8f34f5e22f9754a75153e9ee9df239ce32b50ba/resolv.conf",
"State": {
"ExitCode": 0,
"FinishedAt": "0001-01-01T00:00:00Z",
"Paused": false,
"Pid": 8647,
"Restarting": false,
"Running": true,
"StartedAt": "2015-01-10T18:36:17.032588383Z"
},
"Volumes": {},
"VolumesRW": {}
}
]
D [kitchen::driver::docker command] END (0m0.03s)
Finished creating <default-centos> (0m1.51s).
-----> Converging <default-centos>...
Preparing files for transfer
D Creating local sandbox in /tmp/default-centos-sandbox-20150110-8584-cgkxm
Resolving cookbook dependencies with Berkshelf 2.0.14...
D Using Berksfile from /RUP/workspaces/infrastructure/ccc-chef/cookbooks/rup_utils/Berksfile
Removing non-cookbook files before transfer
Preparing data bags
D Using data bags from /RUP/workspaces/infrastructure/ccc-chef/data_bags
Preparing environments
D Using environments from /RUP/workspaces/infrastructure/ccc-chef/environments
Preparing roles
D Using roles from /RUP/workspaces/infrastructure/ccc-chef/roles
Preparing encrypted data bag secret
D Using secret from /RUP/.chef/access_data_bag_key_CHEFDEV
D [SSH] kitchen@localhost:49198<{:user_known_hosts_file=>"/dev/null", :paranoid=>false, :password=>"kitchen", :port=>49198}> (sudo -E rm -rf /tmp/kitchen/cookbooks /tmp/kitchen/data /tmp/kitchen/data_bags /tmp/kitchen/environments /tmp/kitchen/roles /tmp/kitchen/clients ; mkdir -p /tmp/kitchen)
D [SSH] opening connection to kitchen@localhost:49198<{:user_known_hosts_file=>"/dev/null", :paranoid=>false, :password=>"kitchen", :port=>49198}>
Transfering files to <default-centos>
D Cleaning up local sandbox in /tmp/default-centos-sandbox-20150110-8584-cgkxm
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: Failed to complete #converge action: [scp: /tmp/kitchen/dna.json: Permission denied
]
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration
D ------Exception-------
D Class: Kitchen::ActionFailed
D Message: Failed to complete #converge action: [scp: /tmp/kitchen/dna.json: Permission denied
]
D ---Nested Exception---
D Class: RuntimeError
D Message: scp: /tmp/kitchen/dna.json: Permission denied
D ------Backtrace-------
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-scp-1.1.2/lib/net/scp.rb:392:in `await_response_state'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-scp-1.1.2/lib/net/scp.rb:363:in `block (3 levels) in start_command'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:311:in `call'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:311:in `process'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:222:in `block in preprocess'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:222:in `each'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:222:in `preprocess'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:269:in `wait'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/net-scp-1.1.2/lib/net/scp.rb:279:in `upload!'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/ssh.rb:70:in `upload!'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/ssh.rb:76:in `upload_path!'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/driver/ssh_base.rb:119:in `block in transfer_path'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/driver/ssh_base.rb:119:in `each'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/driver/ssh_base.rb:119:in `transfer_path'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/driver/ssh_base.rb:46:in `block in converge'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/ssh.rb:47:in `initialize'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/driver/ssh_base.rb:43:in `new'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/driver/ssh_base.rb:43:in `converge'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:273:in `public_send'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:273:in `block in perform_action'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:308:in `call'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:308:in `synchronize_or_call'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:283:in `block in action'
D /home/cccadmin/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/1.9.1/benchmark.rb:280:in `measure'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:282:in `action'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:273:in `perform_action'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:256:in `converge_action'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:246:in `block in transition_to'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:245:in `each'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:245:in `transition_to'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:141:in `verify'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:170:in `block in test'
D /home/cccadmin/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/1.9.1/benchmark.rb:280:in `measure'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:166:in `test'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/command.rb:109:in `public_send'
D /home/cccadmin/.rvm/gems/ruby-1.9.3-p551/gems/test-kitchen-1.2.1/lib/kitchen/command.rb:109:in `block (2 levels) in run_action'
D ----------------------
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
511a400bdd45 dac87bcf2c14 "/usr/sbin/sshd -D - About a minute ago Up About a minute 0.0.0.0:49198->22/tcp trusting_brattain