Unverified Commit d00b04a5 authored by Imran Iqbal's avatar Imran Iqbal
Browse files

test(neon): remove pillar and tests for `v3000`

parent 72f7f48d
# InSpec Profile: `v3000-py2`
This shows the implementation of the `v3000-py2` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md).
## Verify a profile
InSpec ships with built-in features to verify a profile structure.
```bash
$ inspec check v3000-py2
Summary
-------
Location: v3000-py2
Profile: profile
Controls: 4
Timestamp: 2019-06-24T23:09:01+00:00
Valid: true
Errors
------
Warnings
--------
```
## Execute a profile
To run all **supported** controls on a local machine use `inspec exec /path/to/profile`.
```bash
$ inspec exec v3000-py2
..
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
8 examples, 0 failures
```
## Execute a specific control from a profile
To run one control from the profile use `inspec exec /path/to/profile --controls name`.
```bash
$ inspec exec v3000-py2 --controls package
.
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
1 examples, 0 failures
```
See an [example control here](https://github.com/inspec/inspec/blob/master/examples/profile/controls/example.rb).
# frozen_string_literal: true
require 'yaml'
control 'salt._mapdata' do
title '`map.jinja` should match the reference file'
### Method
# The steps below for each file appear convoluted but they are both required
# and similar in nature:
# 1. The earliest method was to simply compare the files textually but this often
# led to false positives due to inconsistencies (e.g. spacing, ordering)
# 2. The next method was to load the files back into YAML structures and then
# compare but InSpec provided block diffs this way, unusable by end users
# 3. The final step was to dump the YAML structures back into a string to use
# for the comparison; this both worked and provided human-friendly diffs
### Comparison file for the specific platform
### Static, adjusted as part of code contributions, as map data is changed
# Strip the `platform[:finger]` version number down to the "OS major release"
platform_finger = system.platform[:finger].split('.').first.to_s
# Use that to set the path to the file (relative to the InSpec suite directory)
mapdata_file_path = "_mapdata/#{platform_finger}.yaml"
# Load the mapdata from profile, into a YAML structure
# https://docs.chef.io/inspec/profiles/#profile-files
mapdata_file_yaml = YAML.load(inspec.profile.file(mapdata_file_path))
# Dump the YAML back into a string for comparison
mapdata_file_dump = YAML.dump(mapdata_file_yaml)
### Output file produced by running the `_mapdata` state
### Dynamic, generated during Kitchen's `converge` phase
# Derive the location of the dumped mapdata (differs for Windows)
output_dir = platform[:family] == 'windows' ? '/temp' : '/tmp'
# Use that to set the path to the file (absolute path, i.e. within the container)
output_file_path = "#{output_dir}/salt_mapdata_dump.yaml"
# Load the output into a YAML structure using InSpec's `yaml` resource
# https://github.com/inspec/inspec/blob/49b7d10/lib/inspec/resources/yaml.rb#L29
output_file_yaml = yaml(output_file_path).params
# Dump the YAML back into a string for comparison
output_file_dump = YAML.dump(output_file_yaml)
describe 'File content' do
it 'should match profile map data exactly' do
expect(output_file_dump).to eq(mapdata_file_dump)
end
end
end
# frozen_string_literal: true
pkgs =
case system.platform[:name]
when 'arch'
%w[salt]
when /bsd$/
%w[py38-salt-3002.6]
when 'windows'
['Salt Minion']
else
%w[salt-master salt-minion]
end
control 'salt packages' do
title 'should be installed'
version = '3000'
pkgs.each do |p|
describe package(p) do
it { should be_installed }
its('version') { should match(/^#{version}/) }
end
end
end
# frozen_string_literal: true
services =
case system.platform[:family]
when 'bsd'
%w[salt_master salt_minion]
when 'windows'
%w[salt-minion]
else
%w[salt-master salt-minion]
end
control 'salt services' do
title 'should be running'
services.each do |p|
describe service(p) do
it { should be_installed }
it { should be_enabled }
it { should be_running }
end
end
end
# yamllint disable rule:indentation rule:line-length
# Ubuntu-18.04
---
values:
formulas_settings:
checkout_orig_branch: false
git_opts:
default:
basedir: /srv/formulas
baseurl: https://github.com/saltstack-formulas
options:
output_loglevel: quiet
rev: master
update: false
list: {}
salt_settings:
api_service: salt-api
api_service_details:
enabled: true
state: running
clean_config_d_dir: true
cloud:
template_sources:
maps: salt://salt/files/cloud.maps.d
profiles: salt://salt/files/cloud.profiles.d
providers: salt://salt/files/cloud.providers.d
config_path: /etc/salt
gitfs:
dulwich:
install_from_source: true
gitpython:
install_from_source: false
pygit2:
git:
install_from_package: null
require_state: false
install_from_source: false
libgit2:
build_parent_dir: /usr/src/
download_hash: 683d1164e361e2a0a8d52652840e2340
install_from_source: false
version: 0.23.0
version: 0.22.1
install_packages: true
key_url: https://repo.saltproject.io/apt/ubuntu/18.04/amd64/3000/SALTSTACK-GPG-KEY.pub
libgit2: libgit2-22
master:
ext_pillar:
- cmd_yaml: cat /etc/salt/yaml
- stack:
- /path/to/stack1.cfg
- /path/to/stack2.cfg
- reclass:
inventory_base_uri: /etc/reclass
file_roots:
base:
- /srv/salt
fileserver_backend:
- rootfs
gitfs_provider: gitpython
pillar_roots:
base:
- /srv/pillar
master_config_use_TOFS: false
master_remove_config: false
master_service: salt-master
master_service_details:
enabled: true
state: running
minion:
file_roots:
base:
- /srv/salt
fileserver_backend:
- rootfs
master: localhost
master_type: str
pillar_roots:
base:
- /srv/pillar
minion_config_use_TOFS: false
minion_remove_config: false
minion_service: salt-minion
minion_service_details:
enabled: true
state: running
parallel: true
pin_version: false
pkgrepo: deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64]
https://repo.saltproject.io/apt/ubuntu/18.04/amd64/3000 bionic main
pkgrepo_keyring: https://repo.saltproject.io/apt/ubuntu/18.04/amd64/3000/salt-archive-keyring.gpg
pkgrepo_keyring_hash: sha256=ea38e0cdbd8dc53e1af154a8d711a2a321a69f81188062dc5cde9d54df2b8c47
py_ver: ''
pygit2: python-pygit2
pyinotify: python-pyinotify
python_dulwich: python-dulwich
python_git: python-git
release: '3000'
restart_via_at: false
retry_options:
attempts: 2
interval: 10
splay: 10
until: true
rootgroup: root
rootuser: root
salt_api: salt-api
salt_cloud: salt-cloud
salt_master: salt-master
salt_master_macos_plist_hash: ''
salt_minion: salt-minion
salt_minion_macos_plist_hash: ''
salt_ssh: salt-ssh
salt_syndic: salt-syndic
ssh_roster: {}
syndic_service: salt-syndic
use_pip: false
version: ''
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
name: v3000-py2
title: salt formula
maintainer: SaltStack Formulas
license: Apache-2.0
summary: Verify that Salt `v3000-py2` is setup and configured
depends:
- name: share
path: test/integration/share
supports:
- platform-name: debian
- platform-name: ubuntu
- platform-name: centos
- platform-name: fedora
- platform-name: opensuse
- platform-name: suse
- platform-name: freebsd
- platform-name: openbsd
- platform-name: amazon
- platform-name: oracle
- platform-name: arch
- platform-name: gentoo
- platform-name: almalinux
- platform-name: rocky
- platform: windows
# InSpec Profile: `v3000-py3`
This shows the implementation of the `v3000-py3` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md).
## Verify a profile
InSpec ships with built-in features to verify a profile structure.
```bash
$ inspec check v3000-py3
Summary
-------
Location: v3000-py3
Profile: profile
Controls: 4
Timestamp: 2019-06-24T23:09:01+00:00
Valid: true
Errors
------
Warnings
--------
```
## Execute a profile
To run all **supported** controls on a local machine use `inspec exec /path/to/profile`.
```bash
$ inspec exec v3000-py3
..
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
8 examples, 0 failures
```
## Execute a specific control from a profile
To run one control from the profile use `inspec exec /path/to/profile --controls name`.
```bash
$ inspec exec v3000-py3 --controls package
.
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
1 examples, 0 failures
```
See an [example control here](https://github.com/inspec/inspec/blob/master/examples/profile/controls/example.rb).
# frozen_string_literal: true
require 'yaml'
control 'salt._mapdata' do
title '`map.jinja` should match the reference file'
### Method
# The steps below for each file appear convoluted but they are both required
# and similar in nature:
# 1. The earliest method was to simply compare the files textually but this often
# led to false positives due to inconsistencies (e.g. spacing, ordering)
# 2. The next method was to load the files back into YAML structures and then
# compare but InSpec provided block diffs this way, unusable by end users
# 3. The final step was to dump the YAML structures back into a string to use
# for the comparison; this both worked and provided human-friendly diffs
### Comparison file for the specific platform
### Static, adjusted as part of code contributions, as map data is changed
# Strip the `platform[:finger]` version number down to the "OS major release"
platform_finger = system.platform[:finger].split('.').first.to_s
# Use that to set the path to the file (relative to the InSpec suite directory)
mapdata_file_path = "_mapdata/#{platform_finger}.yaml"
# Load the mapdata from profile, into a YAML structure
# https://docs.chef.io/inspec/profiles/#profile-files
mapdata_file_yaml = YAML.load(inspec.profile.file(mapdata_file_path))
# Dump the YAML back into a string for comparison
mapdata_file_dump = YAML.dump(mapdata_file_yaml)
### Output file produced by running the `_mapdata` state
### Dynamic, generated during Kitchen's `converge` phase
# Derive the location of the dumped mapdata (differs for Windows)
output_dir = platform[:family] == 'windows' ? '/temp' : '/tmp'
# Use that to set the path to the file (absolute path, i.e. within the container)
output_file_path = "#{output_dir}/salt_mapdata_dump.yaml"
# Load the output into a YAML structure using InSpec's `yaml` resource
# https://github.com/inspec/inspec/blob/49b7d10/lib/inspec/resources/yaml.rb#L29
output_file_yaml = yaml(output_file_path).params
# Dump the YAML back into a string for comparison
output_file_dump = YAML.dump(output_file_yaml)
describe 'File content' do
it 'should match profile map data exactly' do
expect(output_file_dump).to eq(mapdata_file_dump)
end
end
end
# frozen_string_literal: true
pkgs =
case system.platform[:name]
when 'arch'
%w[salt]
when /bsd$/
%w[py38-salt-3002.6]
when 'windows'
['Salt Minion']
else
%w[salt-master salt-minion]
end
control 'salt packages' do
title 'should be installed'
version = '3000'
pkgs.each do |p|
describe package(p) do
it { should be_installed }
its('version') { should match(/^#{version}/) }
end
end
end
# frozen_string_literal: true
services =
case system.platform[:family]
when 'bsd'
%w[salt_master salt_minion]
when 'windows'
%w[salt-minion]
else
%w[salt-master salt-minion]
end
control 'salt services' do
title 'should be running'
services.each do |p|
describe service(p) do
it { should be_installed }
it { should be_enabled }
it { should be_running }
end
end
end
# yamllint disable rule:indentation rule:line-length
# Amazon Linux-2
---
values:
formulas_settings:
checkout_orig_branch: false
git_opts:
default:
basedir: /srv/formulas
baseurl: https://github.com/saltstack-formulas
options:
output_loglevel: quiet
rev: master
update: false
list: {}
salt_settings:
api_service: salt-api
api_service_details:
enabled: true
state: running
clean_config_d_dir: true
cloud:
template_sources:
maps: salt://salt/files/cloud.maps.d
profiles: salt://salt/files/cloud.profiles.d
providers: salt://salt/files/cloud.providers.d
config_path: /etc/salt
gitfs:
dulwich:
install_from_source: true
gitpython:
install_from_source: false
pygit2:
git:
install_from_package: git
require_state: false
install_from_source: false
libgit2:
build_parent_dir: /usr/src/
download_hash: 683d1164e361e2a0a8d52652840e2340
install_from_source: true
version: 0.23.0
version: 0.23.0
install_packages: true
key_url: https://repo.saltproject.io/py3/amazon/2/$basearch/3000/SALTSTACK-GPG-KEY.pub
master:
ext_pillar:
- cmd_yaml: cat /etc/salt/yaml
- stack:
- /path/to/stack1.cfg
- /path/to/stack2.cfg
- reclass:
inventory_base_uri: /etc/reclass
file_roots:
base:
- /srv/salt
fileserver_backend:
- rootfs
gitfs_provider: pygit2
pillar_roots:
base:
- /srv/pillar
master_config_use_TOFS: false
master_remove_config: false
master_service: salt-master
master_service_details:
enabled: true
state: running
minion:
file_roots:
base:
- /srv/salt
fileserver_backend:
- rootfs
master: localhost
master_type: str
pillar_roots:
base:
- /srv/pillar
minion_config_use_TOFS: false
minion_remove_config: false
minion_service: salt-minion
minion_service_details:
enabled: true
state: running
parallel: true
pin_version: false
pkgrepo: https://repo.saltproject.io/py3/amazon/2/$basearch/3000
pkgrepo_humanname: SaltStack repo for Amazon Linux 2
pkgrepo_name: saltstack-amzn-repo
py_ver: py3
pygit2: python-pygit2
python_dulwich: python-dulwich
python_git: GitPython
release: '3000'
restart_via_at: false
retry_options:
attempts: 2
interval: 10
splay: 10
until: true
rootgroup: root
rootuser: root
salt_api: salt-api
salt_cloud: salt-cloud
salt_master: salt-master
salt_master_macos_plist_hash: ''
salt_minion: salt-minion
salt_minion_macos_plist_hash: ''
salt_ssh: salt-ssh
salt_syndic: salt-syndic
ssh_roster: {}
syndic_service: salt-syndic
use_pip: false
version: ''
# yamllint disable rule:indentation rule:line-length
# CentOS Linux-7
---
values:
formulas_settings:
checkout_orig_branch: false
git_opts:
default:
basedir: /srv/formulas
baseurl: https://github.com/saltstack-formulas
options:
output_loglevel: quiet
rev: master
update: false
list: {}
salt_settings:
api_service: salt-api
api_service_details:
enabled: true
state: running
clean_config_d_dir: true
cloud:
template_sources:
maps: salt://salt/files/cloud.maps.d
profiles: salt://salt/files/cloud.profiles.d
providers: salt://salt/files/cloud.providers.d
config_path: /etc/salt
gitfs:
dulwich:
install_from_source: true
gitpython:
install_from_source: false
pygit2:
git:
install_from_package: git