From 4c2f4ede0223e83e1958be33288fa6b83cce7140 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Fri, 2 Oct 2020 07:27:40 +0100 Subject: [PATCH] feat: add Gentoo support Make use of the new pre-salted images: * https://gitlab.com/saltstack-formulas/infrastructure/salt-image-builder/-/merge_requests/55 --- .travis.yml | 6 ++ TEMPLATE/osfamilymap.yaml | 4 +- kitchen.yml | 55 +++++++++++++++++++ .../default/files/_mapdata/gentoo-2-sysd.yaml | 34 ++++++++++++ .../default/files/_mapdata/gentoo-2-sysv.yaml | 34 ++++++++++++ test/integration/default/inspec.yml | 1 + test/integration/share/inspec.yml | 1 + test/integration/share/libraries/system.rb | 11 ++++ test/salt/pillar/gentoo.sls | 10 ++++ 9 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 test/integration/default/files/_mapdata/gentoo-2-sysd.yaml create mode 100644 test/integration/default/files/_mapdata/gentoo-2-sysv.yaml create mode 100644 test/salt/pillar/gentoo.sls diff --git a/.travis.yml b/.travis.yml index 11a6660..f829436 100644 --- a/.travis.yml +++ b/.travis.yml @@ -101,6 +101,8 @@ jobs: # - env: INSTANCE=default-fedora-31-master-py3 - env: INSTANCE=default-opensuse-leap-152-master-py3 # - env: INSTANCE=default-amazonlinux-2-master-py3 + - env: INSTANCE=gentoo-gentoo-stage3-latest-master-py3 + - env: INSTANCE=gentoo-gentoo-stage3-systemd-master-py3 # - env: INSTANCE=default-debian-10-3001-py3 # - env: INSTANCE=default-debian-9-3001-py3 # - env: INSTANCE=default-ubuntu-2004-3001-py3 @@ -113,6 +115,8 @@ jobs: # - env: INSTANCE=default-amazonlinux-2-3001-py3 # - env: INSTANCE=default-oraclelinux-8-3001-py3 # - env: INSTANCE=default-oraclelinux-7-3001-py3 + # - env: INSTANCE=gentoo-gentoo-stage3-latest-3001-py3 + # - env: INSTANCE=gentoo-gentoo-stage3-systemd-3001-py3 # - env: INSTANCE=default-debian-10-3000-3-py3 # - env: INSTANCE=default-debian-9-3000-3-py3 # - env: INSTANCE=default-ubuntu-1804-3000-3-py3 @@ -121,6 +125,8 @@ jobs: # - env: INSTANCE=default-fedora-31-3000-3-py3 # - env: INSTANCE=default-opensuse-leap-152-3000-3-py3 # - env: INSTANCE=default-amazonlinux-2-3000-3-py3 + # - env: INSTANCE=gentoo-gentoo-stage3-latest-3000-3-py3 + # - env: INSTANCE=gentoo-gentoo-stage3-systemd-3000-3-py3 # - env: INSTANCE=default-ubuntu-1804-3000-3-py2 # - env: INSTANCE=default-ubuntu-1604-3000-3-py2 - env: INSTANCE=default-arch-base-latest-3000-3-py2 diff --git a/TEMPLATE/osfamilymap.yaml b/TEMPLATE/osfamilymap.yaml index 6b473a8..aad4425 100644 --- a/TEMPLATE/osfamilymap.yaml +++ b/TEMPLATE/osfamilymap.yaml @@ -24,7 +24,9 @@ Suse: pkg: name: TEMPLATE-suse -Gentoo: {} +Gentoo: + pkg: + name: TEMPLATE-gentoo Arch: pkg: diff --git a/kitchen.yml b/kitchen.yml index 66f14a3..a709300 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -73,6 +73,13 @@ platforms: - name: amazonlinux-2-master-py3 driver: image: saltimages/salt-master-py3:amazonlinux-2 + - name: gentoo-stage3-latest-master-py3 + driver: + image: saltimages/salt-master-py3:gentoo-stage3-latest + run_command: /sbin/init + - name: gentoo-stage3-systemd-master-py3 + driver: + image: saltimages/salt-master-py3:gentoo-stage3-systemd ## SALT `3001` - name: debian-10-3001-py3 @@ -116,6 +123,13 @@ platforms: - name: oraclelinux-7-3001-py3 driver: image: saltimages/salt-3001-py3:oraclelinux-7 + - name: gentoo-stage3-latest-3001-py3 + driver: + image: saltimages/salt-3001-py3:gentoo-stage3-latest + run_command: /sbin/init + - name: gentoo-stage3-systemd-3001-py3 + driver: + image: saltimages/salt-3001-py3:gentoo-stage3-systemd ## SALT `3000.3` - name: debian-10-3000-3-py3 @@ -147,6 +161,13 @@ platforms: - name: amazonlinux-2-3000-3-py3 driver: image: saltimages/salt-3000.3-py3:amazonlinux-2 + - name: gentoo-stage3-latest-3000-3-py3 + driver: + image: saltimages/salt-3000.3-py3:gentoo-stage3-latest + run_command: /sbin/init + - name: gentoo-stage3-systemd-3000-3-py3 + driver: + image: saltimages/salt-3000.3-py3:gentoo-stage3-systemd - name: ubuntu-1804-3000-3-py2 driver: image: saltimages/salt-3000.3-py2:ubuntu-18.04 @@ -191,6 +212,12 @@ suites: excludes: - centos-6-2019-2-py2 - amazonlinux-1-2019-2-py2 + - gentoo-stage3-latest-master-py3 + - gentoo-stage3-systemd-master-py3 + - gentoo-stage3-latest-3001-py3 + - gentoo-stage3-systemd-3001-py3 + - gentoo-stage3-latest-3000-3-py3 + - gentoo-stage3-systemd-3000-3-py3 provisioner: state_top: base: @@ -231,3 +258,31 @@ suites: verifier: inspec_tests: - path: test/integration/default + - name: gentoo + includes: + - gentoo-stage3-latest-master-py3 + - gentoo-stage3-systemd-master-py3 + - gentoo-stage3-latest-3001-py3 + - gentoo-stage3-systemd-3001-py3 + - gentoo-stage3-latest-3000-3-py3 + - gentoo-stage3-systemd-3000-3-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 + verifier: + inspec_tests: + - path: test/integration/default diff --git a/test/integration/default/files/_mapdata/gentoo-2-sysd.yaml b/test/integration/default/files/_mapdata/gentoo-2-sysd.yaml new file mode 100644 index 0000000..2dda629 --- /dev/null +++ b/test/integration/default/files/_mapdata/gentoo-2-sysd.yaml @@ -0,0 +1,34 @@ +# yamllint disable rule:indentation rule:line-length +# Gentoo-2 +--- +added_in_defaults: defaults_value +added_in_lookup: lookup_value +added_in_pillar: pillar_value +arch: amd64 +config: /etc/template-formula.conf +lookup: + added_in_lookup: lookup_value + master: template-master + winner: lookup +master: template-master +pkg: + name: app-shells/bash +rootgroup: root +service: + name: systemd-journald +subcomponent: + config: /etc/TEMPLATE-subcomponent-formula.conf +tofs: + files_switch: + - any/path/can/be/used/here + - id + - roles + - osfinger + - os + - os_family + source_files: + TEMPLATE-config-file-file-managed: + - example.tmpl.jinja + TEMPLATE-subcomponent-config-file-file-managed: + - subcomponent-example.tmpl.jinja +winner: pillar diff --git a/test/integration/default/files/_mapdata/gentoo-2-sysv.yaml b/test/integration/default/files/_mapdata/gentoo-2-sysv.yaml new file mode 100644 index 0000000..9590d66 --- /dev/null +++ b/test/integration/default/files/_mapdata/gentoo-2-sysv.yaml @@ -0,0 +1,34 @@ +# yamllint disable rule:indentation rule:line-length +# Gentoo-2 +--- +added_in_defaults: defaults_value +added_in_lookup: lookup_value +added_in_pillar: pillar_value +arch: amd64 +config: /etc/template-formula.conf +lookup: + added_in_lookup: lookup_value + master: template-master + winner: lookup +master: template-master +pkg: + name: app-shells/bash +rootgroup: root +service: + name: mtab +subcomponent: + config: /etc/TEMPLATE-subcomponent-formula.conf +tofs: + files_switch: + - any/path/can/be/used/here + - id + - roles + - osfinger + - os + - os_family + source_files: + TEMPLATE-config-file-file-managed: + - example.tmpl.jinja + TEMPLATE-subcomponent-config-file-file-managed: + - subcomponent-example.tmpl.jinja +winner: pillar diff --git a/test/integration/default/inspec.yml b/test/integration/default/inspec.yml index dd99742..3f88022 100644 --- a/test/integration/default/inspec.yml +++ b/test/integration/default/inspec.yml @@ -20,3 +20,4 @@ supports: - platform-name: amazon - platform-name: oracle - platform-name: arch + - platform-name: gentoo diff --git a/test/integration/share/inspec.yml b/test/integration/share/inspec.yml index 713f721..74a2271 100644 --- a/test/integration/share/inspec.yml +++ b/test/integration/share/inspec.yml @@ -17,3 +17,4 @@ supports: - platform-name: amazon - platform-name: oracle - platform-name: arch + - platform-name: gentoo diff --git a/test/integration/share/libraries/system.rb b/test/integration/share/libraries/system.rb index ebd32b3..8e9c244 100644 --- a/test/integration/share/libraries/system.rb +++ b/test/integration/share/libraries/system.rb @@ -49,11 +49,22 @@ class SystemResource < Inspec.resource(1) inspec.platform[:release].gsub(/2018.*/, '1') when 'arch' 'base-latest' + when 'gentoo' + "#{inspec.platform[:release].split('.')[0]}-#{derive_gentoo_init_system}" else inspec.platform[:release] end end + def derive_gentoo_init_system + case inspec.command('systemctl').exist? + when true + 'sysd' + else + 'sysv' + end + end + def build_platform_finger "#{build_platform_name}-#{build_finger_release}" end diff --git a/test/salt/pillar/gentoo.sls b/test/salt/pillar/gentoo.sls new file mode 100644 index 0000000..bf2914a --- /dev/null +++ b/test/salt/pillar/gentoo.sls @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +portage: + sync_wait_one_day: true +TEMPLATE: + pkg: + name: 'app-shells/bash' + service: + name: "{{ 'systemd-journald' if grains.init == 'systemd' else 'mtab' }}"