From 7123f78765eeb833db3f21178399fe53ab54ac78 Mon Sep 17 00:00:00 2001 From: Tim Meusel Date: Thu, 23 May 2024 16:31:03 +0200 Subject: [PATCH] bolt::project: fail if we are not on PE --- .fixtures.yml | 1 + .github/workflows/ci.yml | 3 +++ .sync.yml | 3 +++ manifests/project.pp | 3 +++ metadata.json | 4 +++ spec/defines/project_spec.rb | 47 +++++++++++++++++++++++------------- 6 files changed, 44 insertions(+), 17 deletions(-) diff --git a/.fixtures.yml b/.fixtures.yml index 803e51c..d07a6c7 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -4,4 +4,5 @@ fixtures: stdlib: https://github.com/puppetlabs/puppetlabs-stdlib.git sudo: https://github.com/saz/puppet-sudo.git systemd: https://github.com/voxpupuli/puppet-systemd.git + pe_status_check: https://github.com/puppetlabs/puppetlabs-pe_status_check.git yumrepo_core: https://github.com/puppetlabs/puppetlabs-yumrepo_core.git diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1f82c4c..ac6bf74 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,3 +19,6 @@ jobs: puppet: name: Puppet uses: voxpupuli/gha-puppet/.github/workflows/beaker.yml@v2 + with: + pidfile_workaround: 'false' + beaker_facter: 'pe_status_check_role:PE-Role:primary' diff --git a/.sync.yml b/.sync.yml index ba4c369..f5f8edb 100644 --- a/.sync.yml +++ b/.sync.yml @@ -5,3 +5,6 @@ spec/spec_helper_acceptance.rb: enabled_lint_checks: - parameter_documentation - parameter_types +.github/workflows/ci.yml: + with: + beaker_facter: 'pe_status_check_role:PE-Role:primary' diff --git a/manifests/project.pp b/manifests/project.pp index ab9f5f1..143f035 100644 --- a/manifests/project.pp +++ b/manifests/project.pp @@ -22,6 +22,9 @@ String[1] $environment = 'peadm', Array[Stdlib::Absolutepath] $modulepaths = ["/etc/puppetlabs/code/environments/${environment}/modules", "/etc/puppetlabs/code/environments/${environment}/site",], ) { + unless $facts['pe_status_check_role'] in ['primary', 'legacy_primary', 'pe_compiler', 'legacy_compiler'] { + fail("bolt::project works only on PE primaries and compilers, not: ${facts['pe_status_check_role']}") + } # installs bolt require bolt diff --git a/metadata.json b/metadata.json index 68a387c..2f9ccc3 100644 --- a/metadata.json +++ b/metadata.json @@ -12,6 +12,10 @@ "name": "puppetlabs/stdlib", "version_requirement": ">= 9.6.0 < 10.0.0" }, + { + "name": "puppetlabs/pe_status_check", + "version_requirement": ">= 4.2.0 < 5.0.0" + }, { "name": "puppet/systemd", "version_requirement": ">= 7.0.0 < 8.0.0" diff --git a/spec/defines/project_spec.rb b/spec/defines/project_spec.rb index 1f015ea..ac1f79a 100644 --- a/spec/defines/project_spec.rb +++ b/spec/defines/project_spec.rb @@ -7,26 +7,39 @@ on_supported_os.each do |os, os_facts| context "on #{os}" do - let :facts do - os_facts.merge({ sudoversion: '1.9.5p2' }) - end - context 'with defaults' do - it { is_expected.to compile.with_all_deps } - it { is_expected.to contain_class('bolt') } - it { is_expected.to contain_file('/opt/peadm/bolt-project.yaml').with_ensure('file') } - it { is_expected.to contain_file('/opt/peadm/inventory.yaml').with_ensure('file') } - it { is_expected.to contain_file('/opt/peadm').with_ensure('directory') } - it { is_expected.to contain_user(title) } - it { is_expected.to contain_group(title) } - it { is_expected.to contain_package('puppet-bolt') } - it { is_expected.to contain_package('puppet-tools-release') } - it { is_expected.not_to contain_yumrepo('puppet-tools') } - it { is_expected.to contain_sudo__conf(title) } - it { is_expected.to contain_systemd__unit_file("#{title}@.service") } + context 'on FOSS' do + let :facts do + os_facts + end + + it { is_expected.not_to compile } + end + + context 'on PE' do + let :facts do + os_facts.merge({ pe_status_check_role: 'primary', sudoversion: '1.9.5p2' }) + end + + it { is_expected.to compile.with_all_deps } + it { is_expected.to contain_class('bolt') } + it { is_expected.to contain_file('/opt/peadm/bolt-project.yaml').with_ensure('file') } + it { is_expected.to contain_file('/opt/peadm/inventory.yaml').with_ensure('file') } + it { is_expected.to contain_file('/opt/peadm').with_ensure('directory') } + it { is_expected.to contain_user(title) } + it { is_expected.to contain_group(title) } + it { is_expected.to contain_package('puppet-bolt') } + it { is_expected.to contain_package('puppet-tools-release') } + it { is_expected.not_to contain_yumrepo('puppet-tools') } + it { is_expected.to contain_sudo__conf(title) } + it { is_expected.to contain_systemd__unit_file("#{title}@.service") } + end end - context 'with manage_user=false' do + context 'with manage_user=false on PE' do + let :facts do + os_facts.merge({ pe_status_check_role: 'primary', sudoversion: '1.9.5p2' }) + end let :params do { manage_user: false } end