From 7708e1292303431d9ac4a46f0c4123cc95b98bc6 Mon Sep 17 00:00:00 2001 From: Daniel Dehennin Date: Wed, 15 Sep 2021 11:06:43 +0200 Subject: [PATCH] test(pillar): use static test/salt/pillar/top.sls The kitchen-salt provisionner have the `pillars_from_directories` option to recusively copy directories under target pillar root. This has 3 advantages: - simplify `kitchen.yml` - manage pillar assignment with standard salt targetting mechanism, this avoid the dedicated `gentoo` suite (it could have been done from `kitchen.yml` itself by the way) - ease the test outside kitchen by running `salt-call` directly with `--pillar-root` like: ``` salt-call --local --id test-minion.example.net \ --file-root=template-formula/ \ --pillar-root=template-formula/test/salt/pillar/ \ state.show_sls TEMPLATE ``` * pillar.example: remove settings for testing purpose. * test/salt/pillar/top.sls: limit `gentoo` pillars based on `os_family` grain. * test/salt/pillar/defaults.sls: base pillar dedicated to tests. * kitchen.yml (suites): remove the now useless `gentoo` suite. Define `pillars_from_directories` to copy them under `pillar_root`. Remove useless `pillars_from_files`. * .gitlab-ci.yml: fix gentoo suite name * .gitignore: do not ignore test pillar `top.sls` --- .gitlab-ci.yml | 16 +++++----- kitchen.yml | 50 ++---------------------------- pillar.example | 21 +++---------- test/salt/pillar/defaults.sls | 57 +++++++++++++++++++++++++++++++++++ test/salt/pillar/top.sls | 12 ++++++++ 5 files changed, 83 insertions(+), 73 deletions(-) create mode 100644 test/salt/pillar/defaults.sls create mode 100644 test/salt/pillar/top.sls diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f077a50..2d38010 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -197,8 +197,8 @@ default-amazonlinux-2-master-py3: {extends: '.test_instance'} default-oraclelinux-8-master-py3: {extends: '.test_instance'} default-oraclelinux-7-master-py3: {extends: '.test_instance'} default-arch-base-latest-master-py3: {extends: '.test_instance'} -gentoo-gentoo-stage3-latest-master-py3: {extends: '.test_instance'} -gentoo-gentoo-stage3-systemd-master-py3: {extends: '.test_instance'} +default-gentoo-stage3-latest-master-py3: {extends: '.test_instance'} +default-gentoo-stage3-systemd-master-py3: {extends: '.test_instance'} default-almalinux-8-master-py3: {extends: '.test_instance'} default-rockylinux-8-master-py3: {extends: '.test_instance'} # default-debian-11-3003-3-py3: {extends: '.test_instance'} @@ -217,8 +217,8 @@ default-rockylinux-8-master-py3: {extends: '.test_instance'} # default-oraclelinux-8-3003-3-py3: {extends: '.test_instance'} # default-oraclelinux-7-3003-3-py3: {extends: '.test_instance'} # default-arch-base-latest-3003-3-py3: {extends: '.test_instance'} -# gentoo-gentoo-stage3-latest-3003-3-py3: {extends: '.test_instance'} -# gentoo-gentoo-stage3-systemd-3003-3-py3: {extends: '.test_instance'} +# default-gentoo-stage3-latest-3003-3-py3: {extends: '.test_instance'} +# default-gentoo-stage3-systemd-3003-3-py3: {extends: '.test_instance'} # default-almalinux-8-3003-3-py3: {extends: '.test_instance'} # default-debian-11-3002-7-py3: {extends: '.test_instance'} # default-debian-10-3002-7-py3: {extends: '.test_instance'} @@ -236,8 +236,8 @@ default-rockylinux-8-master-py3: {extends: '.test_instance'} # default-oraclelinux-8-3002-7-py3: {extends: '.test_instance'} # default-oraclelinux-7-3002-7-py3: {extends: '.test_instance'} # default-arch-base-latest-3002-7-py3: {extends: '.test_instance'} -# gentoo-gentoo-stage3-latest-3002-7-py3: {extends: '.test_instance'} -# gentoo-gentoo-stage3-systemd-3002-7-py3: {extends: '.test_instance'} +# default-gentoo-stage3-latest-3002-7-py3: {extends: '.test_instance'} +# default-gentoo-stage3-systemd-3002-7-py3: {extends: '.test_instance'} # default-debian-10-3001-8-py3: {extends: '.test_instance'} # default-debian-9-3001-8-py3: {extends: '.test_instance'} # default-ubuntu-2004-3001-8-py3: {extends: '.test_instance'} @@ -253,8 +253,8 @@ default-rockylinux-8-master-py3: {extends: '.test_instance'} # default-oraclelinux-8-3001-8-py3: {extends: '.test_instance'} # default-oraclelinux-7-3001-8-py3: {extends: '.test_instance'} # default-arch-base-latest-3001-8-py3: {extends: '.test_instance'} -# gentoo-gentoo-stage3-latest-3001-8-py3: {extends: '.test_instance'} -# gentoo-gentoo-stage3-systemd-3001-8-py3: {extends: '.test_instance'} +# default-gentoo-stage3-latest-3001-8-py3: {extends: '.test_instance'} +# default-gentoo-stage3-systemd-3001-8-py3: {extends: '.test_instance'} ############################################################################### # `release` stage: `semantic-release` diff --git a/kitchen.yml b/kitchen.yml index 279d92e..985a092 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -373,60 +373,14 @@ verifier: suites: - name: default - excludes: - - gentoo-stage3-latest-master-py3 - - gentoo-stage3-systemd-master-py3 - - gentoo-stage3-latest-3003-3-py3 - - gentoo-stage3-systemd-3003-3-py3 - - gentoo-stage3-latest-3002-7-py3 - - gentoo-stage3-systemd-3002-7-py3 - - gentoo-stage3-latest-3001-8-py3 - - gentoo-stage3-systemd-3001-8-py3 provisioner: state_top: base: '*': - TEMPLATE._mapdata - TEMPLATE - pillars: - top.sls: - base: - '*': - - TEMPLATE - - define_roles - pillars_from_files: - TEMPLATE.sls: pillar.example - define_roles.sls: test/salt/pillar/define_roles.sls - verifier: - inspec_tests: - - path: test/integration/default - - name: gentoo - includes: - - gentoo-stage3-latest-master-py3 - - gentoo-stage3-systemd-master-py3 - - gentoo-stage3-latest-3003-3-py3 - - gentoo-stage3-systemd-3003-3-py3 - - gentoo-stage3-latest-3002-7-py3 - - gentoo-stage3-systemd-3002-7-py3 - - gentoo-stage3-latest-3001-8-py3 - - gentoo-stage3-systemd-3001-8-py3 - provisioner: - state_top: - base: - '*': - - TEMPLATE._mapdata - - TEMPLATE - pillars: - top.sls: - base: - '*': - - TEMPLATE - - gentoo - - define_roles - pillars_from_files: - TEMPLATE.sls: pillar.example - gentoo.sls: test/salt/pillar/gentoo.sls - define_roles.sls: test/salt/pillar/define_roles.sls + pillars_from_directories: + - test/salt/pillar verifier: inspec_tests: - path: test/integration/default diff --git a/pillar.example b/pillar.example index 995d8f7..79d5238 100644 --- a/pillar.example +++ b/pillar.example @@ -4,9 +4,6 @@ TEMPLATE: lookup: master: template-master - # Just for testing purposes - winner: lookup - added_in_lookup: lookup_value # Using bash package and udev service as an example. This allows us to # test the template formula itself. You should set these parameters to @@ -30,28 +27,18 @@ TEMPLATE: - osfinger - os - os_family + # All aspects of path/file resolution are customisable using the options below. # This is unnecessary in most cases; there are sensible defaults. # Default path: salt://< path_prefix >/< dirs.files >/< dirs.default > - # I.e.: salt://TEMPLATE/files/default + # I.e.: salt://TEMPLATE/files/default # path_prefix: template_alt # dirs: # files: files_alt # default: default_alt # The entries under `source_files` are prepended to the default source files # given for the state - # source_files: - # TEMPLATE-config-file-file-managed: - # - 'example_alt.tmpl' - # - 'example_alt.tmpl.jinja' - - # For testing purposes source_files: TEMPLATE-config-file-file-managed: - - 'example.tmpl.jinja' - TEMPLATE-subcomponent-config-file-file-managed: - - 'subcomponent-example.tmpl.jinja' - - # Just for testing purposes - winner: pillar - added_in_pillar: pillar_value + - 'example_alt.tmpl' + - 'example_alt.tmpl.jinja' diff --git a/test/salt/pillar/defaults.sls b/test/salt/pillar/defaults.sls new file mode 100644 index 0000000..995d8f7 --- /dev/null +++ b/test/salt/pillar/defaults.sls @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +TEMPLATE: + lookup: + master: template-master + # Just for testing purposes + winner: lookup + added_in_lookup: lookup_value + + # Using bash package and udev service as an example. This allows us to + # test the template formula itself. You should set these parameters to + # examples that make sense in the contexto of the formula you're writing. + pkg: + name: bash + service: + name: systemd-journald + config: /etc/template-formula.conf + + tofs: + # The files_switch key serves as a selector for alternative + # directories under the formula files directory. See TOFS pattern + # doc for more info. + # Note: Any value not evaluated by `config.get` will be used literally. + # This can be used to set custom paths, as many levels deep as required. + files_switch: + - any/path/can/be/used/here + - id + - roles + - osfinger + - os + - os_family + # All aspects of path/file resolution are customisable using the options below. + # This is unnecessary in most cases; there are sensible defaults. + # Default path: salt://< path_prefix >/< dirs.files >/< dirs.default > + # I.e.: salt://TEMPLATE/files/default + # path_prefix: template_alt + # dirs: + # files: files_alt + # default: default_alt + # The entries under `source_files` are prepended to the default source files + # given for the state + # source_files: + # TEMPLATE-config-file-file-managed: + # - 'example_alt.tmpl' + # - 'example_alt.tmpl.jinja' + + # For testing purposes + source_files: + TEMPLATE-config-file-file-managed: + - 'example.tmpl.jinja' + TEMPLATE-subcomponent-config-file-file-managed: + - 'subcomponent-example.tmpl.jinja' + + # Just for testing purposes + winner: pillar + added_in_pillar: pillar_value diff --git a/test/salt/pillar/top.sls b/test/salt/pillar/top.sls new file mode 100644 index 0000000..449a546 --- /dev/null +++ b/test/salt/pillar/top.sls @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +base: + '*': + - defaults + 'os_family:Gentoo': + - match: grain + - gentoo + 'os:*': + - define_roles +...