Closed philbert closed 9 years ago
Ok so I figured out part of the issue is in my default_helper.rb, but I must be missing some glue between test-kitchen and serverspec because I'm beginning to duplicate the information in my .kitchen.yml.
I've fixed my default_helper.rb so that it looks like this:
require 'serverspec'
require 'net/ssh'
set :backend, :ssh
set :os, :family => 'redhat', :release => '6', :arch => 'x86_64'
options = Net::SSH::Config.for(host)
options[:user] = 'vagrant'
set :ssh_options, options
host = 'a.b.c.d'
set :host, options[:host_name] || host
But now all my test cases fail with the error:
Net::SSH::AuthenticationFailed:
Authentication failed for user vagrant@a.b.c.d
But my ansible provisioner is configured in my .kitchen.yml, which looks like this:
---
driver:
name: ec2
aws_ssh_key_id: keyname
region: eu-west-1
availability_zone: eu-west-1c
image_id: ami-number
subnet_id: subnet-number
associate_public_ip: true
instance_type: t2.small
interface: public
transport:
ssh_key: id_rsa
username: vagrant
provisioner:
name: ansible_playbook
hosts: master
platforms:
- name: devtestnet
suites:
- name: default
And when I run with kitchen verify -l debug
it looks as though my ssh configuration is correct. The ansible provisioning works at least
D [SSH] vagrant@a.b.c.d<{:user_known_hosts_file=>"/dev/null", :paranoid=>false, :port=>22, :compression=>"zlib", :compression_level=>6, :keepalive=>true, :keepalive_interval=>60, :timeout=>15, :keys_only=>true, :keys=>["<correct_ssh_priv_key_for_vagrant_user>"], :user=>"vagrant"}> (sh -c '
BUSSER_ROOT="/tmp/verifier"; export BUSSER_ROOT
GEM_HOME="/tmp/verifier/gems"; export GEM_HOME
GEM_PATH="/tmp/verifier/gems"; export GEM_PATH
GEM_CACHE="/tmp/verifier/gems/cache"; export GEM_CACHE
sudo -E /tmp/verifier/bin/busser test
')
-----> Running serverspec test suite
/opt/chef/embedded/bin/ruby -I/tmp/verifier/suites/serverspec -I/tmp/verifier/gems/gems/rspec-support-3.3.0/lib:/tmp/verifier/gems/gems/rspec-core-3.3.1/lib /opt/chef/embedded/bin/rspec --pattern /tmp/verifier/suites/serverspec/\*\*/\*_spec.rb --color --format documentation --default-path /tmp/verifier/suites/serverspec
Maybe I am just barking up the wrong tree trying to get the :ssh backend working in test-kitchen?
busser-serverspec runs serverspec on testing server after ssh log in it.
so backend :exec
is required and backend :ssh
is not worked.
OK then I understand :)
It would be nice if you could explain this in the readme.md so that it's clear how it is intended to work.
ok, i will add info later.
btw, if you want to run serverspec from outside of test target server via ssh, you can use kitchen-verifier-shell ( https://rubygems.org/gems/kitchen-verifier-shell ).
I'm running Test-Kitchen with serverspec against a centos 6.5 target on Amazon using the ec2-driver.
All my tests pass when I set my backend to :exec, but all fail with the following error when I use an :ssh backend.
In the .kitchen/logs/default-devtestnet.log all the tests fail with the following stacktrace:
Here is some more info from the .kitchen/logs/default-devtestnet.log if it's helpful at all.
Here is the relevant version info: My host is OSX Yosemite 10.10.4.
Test Kitchen version 1.4.0 kitchen-ansible (0.0.16) kitchen-cfengine (0.0.5) kitchen-ec2 (0.9.4) kitchen-openstack (1.8.0) kitchen-vagrant (0.18.0)