test(windows): add local testing of Windows using Vagrant/Virtualbox
This commit is contained in:
parent
1eca9c7551
commit
0465af72da
4
Gemfile
4
Gemfile
@ -5,3 +5,7 @@ source 'https://rubygems.org'
|
||||
gem 'kitchen-docker', '>= 2.9'
|
||||
gem 'kitchen-inspec', '>= 1.1'
|
||||
gem 'kitchen-salt', '>= 0.6.0'
|
||||
|
||||
group :vagrant do
|
||||
gem 'kitchen-vagrant'
|
||||
end
|
||||
|
@ -251,3 +251,65 @@ Runs all of the stages above in one go: i.e. ``destroy`` + ``converge`` + ``veri
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Gives you SSH access to the instance for manual testing.
|
||||
|
||||
Testing with Vagrant
|
||||
--------------------
|
||||
|
||||
Windows testing is done with ``kitchen-salt``.
|
||||
|
||||
Requirements
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* Ruby
|
||||
* Virtualbox
|
||||
* Vagrant
|
||||
|
||||
Setup
|
||||
^^^^^
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ gem install bundler
|
||||
$ bundle install --with=vagrant
|
||||
$ bin/kitchen test [platform]
|
||||
|
||||
Where ``[platform]`` is the platform name defined in ``kitchen.yml``,
|
||||
e.g. ``windows``.
|
||||
|
||||
Note
|
||||
^^^^
|
||||
|
||||
When testing using Vagrant you must set the environment variable ``KITCHEN_LOCAL_YAML`` to ``kitchen.vagrant.yml``. For example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ KITCHEN_LOCAL_YAML=kitchen.vagrant.yml bin/kitchen test # Alternatively,
|
||||
$ export KITCHEN_LOCAL_YAML=kitchen.vagrant.yml
|
||||
$ bin/kitchen test
|
||||
|
||||
Then run the following commands as needed.
|
||||
|
||||
``bin/kitchen converge``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Creates the Vagrant instance and runs the ``salt.minion`` main state, ready for testing.
|
||||
|
||||
``bin/kitchen verify``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Runs the ``inspec`` tests on the actual instance.
|
||||
|
||||
``bin/kitchen destroy``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Removes the Vagrant instance.
|
||||
|
||||
``bin/kitchen test``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Runs all of the stages above in one go: i.e. ``destroy`` + ``converge`` + ``verify`` + ``destroy``.
|
||||
|
||||
``bin/kitchen login``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Gives you RDP access to the instance for manual testing.
|
||||
|
38
kitchen.vagrant.yml
Normal file
38
kitchen.vagrant.yml
Normal file
@ -0,0 +1,38 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=yaml
|
||||
---
|
||||
driver:
|
||||
name: vagrant
|
||||
|
||||
platforms:
|
||||
- name: windows-81
|
||||
driver:
|
||||
box: techneg/win81x64-pro-salt
|
||||
gui: false
|
||||
linked_clone: true
|
||||
provisioner:
|
||||
init_environment: >
|
||||
salt-call --local state.single file.managed
|
||||
C:\Users\vagrant\AppData\Local\Temp\kitchen\srv\salt\win\repo-ng\salt-minion-py3.sls
|
||||
source=https://github.com/saltstack/salt-winrepo-ng/raw/master/salt-minion-py3.sls
|
||||
skip_verify=True makedirs=True
|
||||
|
||||
suites:
|
||||
- name: v3000-py3
|
||||
provisioner:
|
||||
state_top:
|
||||
base:
|
||||
'*':
|
||||
- salt.minion
|
||||
pillars:
|
||||
top.sls:
|
||||
base:
|
||||
'*':
|
||||
- salt
|
||||
- v3000-py3
|
||||
pillars_from_files:
|
||||
salt.sls: test/salt/pillar/salt.sls
|
||||
v3000-py3.sls: test/salt/pillar/v3000-py3.sls
|
||||
verifier:
|
||||
inspec_tests:
|
||||
- path: test/integration/v3000-py3
|
@ -1,14 +1,19 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
pkgs =
|
||||
case platform[:family]
|
||||
when 'windows'
|
||||
%w[Salt\ Minion]
|
||||
else
|
||||
%w[salt-master salt-minion]
|
||||
end
|
||||
|
||||
control 'salt packages' do
|
||||
title 'should be installed'
|
||||
|
||||
version = '3000.3'
|
||||
|
||||
%w[
|
||||
salt-master
|
||||
salt-minion
|
||||
].each do |p|
|
||||
pkgs.each do |p|
|
||||
describe package(p) do
|
||||
it { should be_installed }
|
||||
its('version') { should match(/^#{version}/) }
|
||||
|
@ -1,12 +1,17 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
services =
|
||||
case platform[:family]
|
||||
when 'windows'
|
||||
%w[salt-minion]
|
||||
else
|
||||
%w[salt-master salt-minion]
|
||||
end
|
||||
|
||||
control 'salt services' do
|
||||
title 'should be running'
|
||||
|
||||
%w[
|
||||
salt-master
|
||||
salt-minion
|
||||
].each do |p|
|
||||
services.each do |p|
|
||||
describe service(p) do
|
||||
it { should be_installed }
|
||||
it { should be_enabled }
|
||||
|
@ -17,3 +17,4 @@ supports:
|
||||
- platform-name: amazon
|
||||
- platform-name: oracle
|
||||
- platform-name: arch
|
||||
- platform: windows
|
||||
|
Loading…
Reference in New Issue
Block a user