2
0

Update the testing matrix to cover most distro+salt+python combinations

Use py3 for latest salt version
Use Python 2 on old distros
Update Gemfile
Updated centos-6 run_command, as it does not use systemd
Added tests to verify correct package versions for all cases tested
This commit is contained in:
Javier Bértoli 2019-03-27 09:07:06 -03:00
parent 764d9eef6d
commit b2d760cd87
15 changed files with 393 additions and 87 deletions

106
.gitignore vendored
View File

@ -1,4 +1,104 @@
.vagrant/
.idea/
top.sls
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a packager
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.kitchen
.kitchen.local.yml
kitchen.local.yml
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# dotenv
.env
# virtualenv
.venv
venv/
ENV/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/

View File

@ -1,76 +0,0 @@
---
driver:
name: docker
driver_config:
use_sudo: false
privileged: true
provision_command: mkdir -p /run/sshd
run_command: /lib/systemd/systemd
platforms:
- name: debian-9
driver_config:
provision_command:
- apt-get install udev net-tools -y
- name: ubuntu-18.04
driver_config:
provision_command:
- apt-get install udev net-tools -y
- name: centos-7
driver_config:
provision_command:
- yum install udev net-tools -y
provisioner:
name: salt_solo
log_level: info
require_chef: false
salt_version: latest
formula: salt
salt_copy_filter:
- .kitchen
- .git
pillars:
top.sls:
base:
'*':
- salt
salt.sls:
salt:
master:
fileserver_backend:
- rootfs
file_roots:
base:
- /srv/salt
pillar_roots:
base:
- /srv/pillar
minion:
master: localhost
fileserver_backend:
- rootfs
file_roots:
base:
- /srv/salt
pillar_roots:
base:
- /srv/pillar
verifier:
name: inspec
sudo: true
reporter:
- cli
inspec_tests:
- path: test/integration/default
suites:
- name: salt
provisioner:
state_top:
base:
'*':
- salt.master
- salt.minion

View File

@ -10,10 +10,20 @@ before_install:
env:
matrix:
- INSTANCE: salt-debian-9
- INSTANCE: salt-ubuntu-1804
- INSTANCE: salt-centos-7
- INSTANCE: v2019-2-py3-debian-9
- INSTANCE: v2019-2-py3-ubuntu-1804
- INSTANCE: v2019-2-py3-centos-7
- INSTANCE: v2019-2-py2-fedora-29
- INSTANCE: v2018-3-py2-opensuse-423
- INSTANCE: v2018-3-py2-debian-8
- INSTANCE: v2018-3-py2-ubuntu-1604
- INSTANCE: v2018-3-py2-centos-6
- INSTANCE: v2018-3-py2-forced-fedora-28
- INSTANCE: v2017-7-py2-debian-8
- INSTANCE: v2017-7-py2-ubuntu-1604
- INSTANCE: v2017-7-py2-centos-6
script:
- bundle exec kitchen verify ${INSTANCE}

View File

@ -1,7 +1,6 @@
source "https://rubygems.org"
gem "test-kitchen", '>=1.23.2'
gem "kitchen-docker"
gem "kitchen-salt", ">=0.2.5"
gem "kitchen-inspec"
gem 'kitchen-docker', '>= 2.9'
gem 'kitchen-salt', '>= 0.6.0'
gem 'kitchen-inspec', '>= 1.1'

173
kitchen.yml Normal file
View File

@ -0,0 +1,173 @@
---
driver:
name: docker
use_sudo: false
privileged: true
provision_command: mkdir -p /run/sshd
run_command: /lib/systemd/systemd
platforms:
# Latest distros
- name: debian-9
- name: ubuntu-18.04
- name: centos-7
- name: fedora-29
- name: opensuse-42.3
driver:
run_command: /usr/lib/systemd/systemd
provision_command:
- systemctl enable sshd.service
# Previous distros
- name: debian-8
- name: ubuntu-16.04
- name: fedora-28
# Fails on Debian due to vsyscall issues, see
# https://hub.docker.com/_/centos, "A note about vsyscall"
- name: centos-6
driver:
run_command: /sbin/init
provisioner:
name: salt_solo
log_level: info
require_chef: false
formula: salt
salt_copy_filter:
- .kitchen
- .git
state_top:
base:
'*':
- salt.pkgrepo
- salt.master
- salt.minion
pillars:
top.sls:
base:
'*':
- salt
salt.sls:
salt:
master:
fileserver_backend:
- rootfs
file_roots:
base:
- /srv/salt
pillar_roots:
base:
- /srv/pillar
minion:
master: localhost
fileserver_backend:
- rootfs
file_roots:
base:
- /srv/salt
pillar_roots:
base:
- /srv/pillar
verifier:
name: inspec
sudo: true
reporter:
- cli
suites:
# Latest distros, latest salt, python3
# These distros have py3 packages available in salt's repo
- name: v2019-2-py3
includes:
- debian-9
- ubuntu-18.04
- centos-7
provisioner:
salt_version: '2019.2.0'
pillars:
salt.sls:
salt:
release: '2019.2'
py_ver: 'py3'
verifier:
inspec_tests:
- path: test/integration/2019-2
# Latest distros, latest salt, python2
# Fedora ships updated py2 versions in their own repos
- name: v2019-2-py2
includes:
- fedora-29
provisioner:
salt_version: '2019.2.0'
pillars:
salt.sls:
salt:
release: '2019.2'
py_ver: 'py2'
verifier:
inspec_tests:
- path: test/integration/2019-2
# Previous distros, previous salt, python2
- name: v2018-3-py2
includes:
- debian-8
- ubuntu-16.04
- centos-6
- opensuse-42.3
provisioner:
# We need to require an old version of salt in the provisioner or,
# the salt formula fails to downgrade to the desired version to test
salt_version: '2018.3.3'
pillars:
salt.sls:
salt:
release: '2018.3'
py_ver: 'py2'
verifier:
inspec_tests:
- path: test/integration/2018-3
# To tests fedora 28 & salt v2018.2, we need to force the package version
# otherwise the image, which includes the 'updates' repo, will install 2019.2
- name: v2018-3-py2-forced
includes:
- fedora-28
provisioner:
# We need to require an old version of salt in the provisioner or,
# the salt formula fails to downgrade to the desired version to test
salt_version: '2018.3.3'
pillars:
salt.sls:
salt:
release: '2018.3'
py_ver: 'py2'
version: '2018.3.0-1.fc28'
verifier:
inspec_tests:
- path: test/integration/2018-3
# Previous distros, oldest salt, python2
- name: v2017-7-py2
includes:
- debian-8
- ubuntu-16.04
- centos-6
provisioner:
# We need to require an old version of salt in the provisioner or,
# the salt formula fails to downgrade to the desired version to test
salt_version: '2017.7.8'
pillars:
salt.sls:
salt:
release: '2017.7'
py_ver: 'py2'
verifier:
inspec_tests:
- path: test/integration/2017-7

View File

@ -46,6 +46,8 @@ RedHat:
gitfs_provider: pygit2
Suse:
pkgrepo: 'http://repo.saltstack.com/opensuse/openSUSE_Leap_{{ osrelease }}/'
key_url: 'http://repo.saltstack.com/opensuse/openSUSE_Leap_{{ osrelease }}/repodata/repomd.xml.key'
pygit2: python-pygit2
pyinotify: python-pyinotify
gitfs:

View File

@ -1,5 +1,6 @@
{% from "salt/map.jinja" import salt_settings with context %}
{%- if grains['os']|lower not in ('amazon', 'fedora', 'suse',) %}
saltstack-pkgrepo:
pkgrepo.managed:
- humanname: SaltStack repo for RHEL/CentOS $releasever
@ -7,3 +8,4 @@ saltstack-pkgrepo:
- enabled: 1
- gpgcheck: 1
- gpgkey: {{ salt_settings.key_url }}
{% endif %}

View File

@ -0,0 +1,3 @@
drop-saltstack-pkgrepo:
pkgrepo.absent:
- name: saltstack-pkgrepo

View File

@ -0,0 +1,10 @@
{% from "salt/map.jinja" import salt_settings with context %}
saltstack-pkgrepo:
pkgrepo.managed:
- name: systemsmanagement_saltstack_products
- humanname: SaltStack repo for Opensuse 42.3
- baseurl: {{ salt_settings.pkgrepo }}
- enabled: 1
- gpgcheck: 1
- gpgkey: {{ salt_settings.key_url }}

View File

@ -1,11 +1,20 @@
case os[:name]
when 'centos'
version = '2017.7.8-1.el6'
when 'debian', 'ubuntu'
version = '2017.7.8+ds-1'
end
control 'salt packages' do
title 'should be installed'
describe package('salt-master') do
it { should be_installed }
its('version') { should eq version }
end
describe package('salt-minion') do
it { should be_installed }
its('version') { should eq version }
end
end

View File

@ -0,0 +1,24 @@
case os[:name]
when 'centos'
version = '2018.3.4-1.el6'
when 'debian', 'ubuntu'
version = '2018.3.4+ds-1'
when 'opensuse'
version = '2018.3.0-42.1'
when 'fedora'
version = '2018.3.0-1.fc28'
end
control 'salt packages' do
title 'should be installed'
describe package('salt-master') do
it { should be_installed }
its('version') { should eq version }
end
describe package('salt-minion') do
it { should be_installed }
its('version') { should eq version }
end
end

View File

@ -0,0 +1,14 @@
control 'salt services' do
title 'should be running'
describe service('salt-master') do
it { should be_enabled }
it { should be_running }
end
describe service('salt-minion') do
it { should be_enabled }
it { should be_running }
end
end

View File

@ -0,0 +1,22 @@
case os[:name]
when 'centos'
version = '2019.2.0-1.el7'
when 'fedora'
version = '2019.2.0-1.fc29'
when 'debian', 'ubuntu'
version = '2019.2.0+ds-1'
end
control 'salt packages' do
title 'should be installed'
describe package('salt-master') do
it { should be_installed }
its('version') { should eq version }
end
describe package('salt-minion') do
it { should be_installed }
its('version') { should eq version }
end
end

View File

@ -0,0 +1,14 @@
control 'salt services' do
title 'should be running'
describe service('salt-master') do
it { should be_enabled }
it { should be_running }
end
describe service('salt-minion') do
it { should be_enabled }
it { should be_running }
end
end