simp-beaker-helpers 1.21.4 → 1.23.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.fips_fixtures +1 -0
- data/.fixtures.yml +6 -1
- data/.github/workflows.local.json +6 -0
- data/.github/workflows/pr_acceptance.yml +55 -0
- data/.github/workflows/pr_glci.yml +190 -0
- data/.github/workflows/pr_glci_cleanup.yml +105 -0
- data/.github/workflows/pr_glci_manual.yml +143 -0
- data/.github/workflows/pr_tests.yml +90 -0
- data/.github/workflows/tag_deploy_rubygem.yml +192 -0
- data/.gitlab-ci.yml +37 -37
- data/CHANGELOG.md +55 -0
- data/Gemfile +1 -1
- data/README.md +63 -5
- data/lib/simp/beaker_helpers.rb +165 -68
- data/lib/simp/beaker_helpers/inspec.rb +16 -12
- data/lib/simp/beaker_helpers/ssg.rb +48 -13
- data/lib/simp/beaker_helpers/version.rb +1 -1
- data/lib/simp/rake/beaker.rb +14 -2
- data/simp-beaker-helpers.gemspec +2 -1
- data/spec/acceptance/nodesets/default.yml +1 -1
- data/spec/acceptance/nodesets/docker.yml +12 -10
- data/spec/acceptance/suites/default/enable_fips_spec.rb +6 -4
- data/spec/acceptance/suites/default/install_simp_deps_repo_spec.rb +17 -5
- data/spec/acceptance/suites/fips_from_fixtures/00_default_spec.rb +11 -3
- data/spec/acceptance/suites/inspec/00_default_spec.rb +54 -0
- data/spec/acceptance/suites/inspec/metadata.yml +2 -0
- data/spec/acceptance/suites/inspec/nodesets +1 -0
- data/spec/acceptance/suites/puppet_collections/00_default_spec.rb +1 -1
- data/spec/acceptance/suites/ssg/00_default_spec.rb +40 -0
- data/spec/acceptance/suites/ssg/metadata.yml +2 -0
- data/spec/acceptance/suites/ssg/nodesets +1 -0
- data/spec/lib/simp/beaker_helpers_spec.rb +1 -3
- metadata +53 -39
- data/.travis.yml +0 -42
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,58 @@
|
|
1
|
+
### 1.23.3 / 2021-06-30
|
2
|
+
* Fixed:
|
3
|
+
* Removed the Streams kernel update for EL 8.3 since it now causes issues
|
4
|
+
* Use `pfact_on` to select the interface facts to fix Puppet 7 issues
|
5
|
+
|
6
|
+
### 1.23.2 / 2021-05-29
|
7
|
+
* Fixed:
|
8
|
+
* Fail an acceptance test when an explicitly-specified nodeset for an
|
9
|
+
acceptance test suite does not exist and the suite is configured
|
10
|
+
to fail fast (default behavior).
|
11
|
+
* The usual way of registering RHEL systems had to be changed to activate
|
12
|
+
immediately when called to function properly.
|
13
|
+
|
14
|
+
### 1.23.1 / 2021-05-19
|
15
|
+
* Fixed:
|
16
|
+
* The SSG default branch is now the latest numeric tag instead of the one
|
17
|
+
closest to the head of the default branch. The tag closest to the default
|
18
|
+
branch has drifted over time.
|
19
|
+
* Removed direct call to `docker` when copying out inspec results
|
20
|
+
* Typos in `copy_in` when running against docker
|
21
|
+
* Added:
|
22
|
+
* `Simp::BeakerHelpers::Inspec.enable_repo_on(suts)` to allow users to easily
|
23
|
+
enable the Chef repos for inspec
|
24
|
+
* Beaker tests for inspec and SSG basic functionality
|
25
|
+
* GitHub Actions for acceptance testing where possible
|
26
|
+
|
27
|
+
### 1.23.0 / 2021-03-16
|
28
|
+
* Added:
|
29
|
+
* For `podman` support:
|
30
|
+
* Bumped the required beaker-docker to between 0.8.3 and 2.0.0
|
31
|
+
* Added a dependency on docker-api between 2.1.0 and 3.0.0
|
32
|
+
* Make SSG failures have verbose output to make remediation easier
|
33
|
+
* Fixed:
|
34
|
+
* Ensure that containers use the correct method for copying files
|
35
|
+
|
36
|
+
### 1.22.1 / 2021-03-01
|
37
|
+
* Fixed: enable_epel_on() now installs the correct EPEL repository
|
38
|
+
package on OracleLinux
|
39
|
+
|
40
|
+
### 1.22.0 / 2021-01-27
|
41
|
+
* Fixed:
|
42
|
+
* Ensure that the simp-crypto_policy module is installed when flipping to FIPS
|
43
|
+
mode
|
44
|
+
* Only attempt to install the simp repos once in case they are broken for some
|
45
|
+
reason
|
46
|
+
* Added:
|
47
|
+
* Documentation for all of the beaker environment variables
|
48
|
+
* set_simp_repo_release() for setting the release and release_type of the
|
49
|
+
public SIMP yum repos
|
50
|
+
* set_yum_opts_on() method for setting bulk yum config options
|
51
|
+
* set_yum_opt_on() method for setting singular yum config options
|
52
|
+
* install_package_unless_present_on() method
|
53
|
+
* Allow users to set repos to disable using an environment variable
|
54
|
+
* A total run time summary for beaker suites
|
55
|
+
|
1
56
|
### 1.21.4 / 2021-01-21
|
2
57
|
* Fixed:
|
3
58
|
* Reverted the use of OpenStruct due to issues with seralization
|
data/Gemfile
CHANGED
@@ -13,7 +13,7 @@ gem 'bundler'
|
|
13
13
|
gem 'rake'
|
14
14
|
|
15
15
|
group :system_tests do
|
16
|
-
beaker_gem_options = ENV.fetch('BEAKER_GEM_OPTIONS', ['>= 4.
|
16
|
+
beaker_gem_options = ENV.fetch('BEAKER_GEM_OPTIONS', ['>= 4.28.1', '< 5.0.0'])
|
17
17
|
|
18
18
|
if "#{beaker_gem_options}".include?(':')
|
19
19
|
# Just pass in BEAKER_GEM_OPTIONS as a string that would represent the usual
|
data/README.md
CHANGED
@@ -13,6 +13,8 @@ Methods to assist beaker acceptance tests for SIMP.
|
|
13
13
|
* [`rake beaker:suites`](#rake-beakersuites)
|
14
14
|
* [Suite Execution](#suite-execution)
|
15
15
|
* [Environment Variables](#environment-variables)
|
16
|
+
* [Beaker Management](#beaker-management)
|
17
|
+
* [Beaker Helpers Adjustments](#beaker-helpers-adjustments)
|
16
18
|
* [Global Suite Configuration](#global-suite-configuration)
|
17
19
|
* [Supported Config:](#supported-config)
|
18
20
|
* [Individual Suite Configuration](#individual-suite-configuration)
|
@@ -112,12 +114,68 @@ sensitive).
|
|
112
114
|
|
113
115
|
#### Environment Variables
|
114
116
|
|
115
|
-
|
117
|
+
##### Beaker Management
|
118
|
+
|
119
|
+
* BEAKER_suite_runall [yes|no]
|
116
120
|
* Run all Suites
|
117
121
|
|
118
|
-
* BEAKER_suite_basedir
|
122
|
+
* BEAKER_suite_basedir [String]
|
119
123
|
* The base directory where suites will be defined
|
120
|
-
* Default: spec/acceptance
|
124
|
+
* Default: `spec/acceptance`
|
125
|
+
|
126
|
+
##### Beaker Helpers Adjustments
|
127
|
+
|
128
|
+
* BEAKER_SIMP_parallel [yes|no]
|
129
|
+
* `yes` => Run simp-beaker-helpers methods on SUTs in parallel if possible
|
130
|
+
* `no` => Do not run methods in parallel
|
131
|
+
|
132
|
+
* BEAKER_docker_cmd [String]
|
133
|
+
* The specific command to use for performing `docker` operations
|
134
|
+
|
135
|
+
* BEAKER_helpers_verbose [yes|no]
|
136
|
+
* `yes` => Enable verbose output
|
137
|
+
* `no` => Do not enable verbose output
|
138
|
+
|
139
|
+
* BEAKER_copy_fixtures [yes|no]
|
140
|
+
* `yes` => Enable copying fixtures to the SUT
|
141
|
+
* `no` => Disable copying fixtures to the SUT
|
142
|
+
|
143
|
+
* BEAKER_use_fixtures_dir_for_modules [yes|no]
|
144
|
+
* `yes` => Pull fixtures directly from `spec/fixtures/modules`
|
145
|
+
* `no` => Ignore `spec/fixtures/modules` content
|
146
|
+
|
147
|
+
* BEAKER_stringify_facts [yes|no]
|
148
|
+
* `yes` => Enable fact stringification
|
149
|
+
|
150
|
+
* BEAKER_fips_module_version [String]
|
151
|
+
* The specific version of the FIPS module to install from the puppet forge
|
152
|
+
|
153
|
+
* BEAKER_RHSM_USER [String]
|
154
|
+
* The username for using with RHSM
|
155
|
+
|
156
|
+
* BEAKER_RHSM_PASS [String]
|
157
|
+
* The password for using with RHSM
|
158
|
+
|
159
|
+
* BEAKER_fips [yes|no]
|
160
|
+
* `yes` => Enable FIPS on the SUT
|
161
|
+
* `no` => Do not manage FIPS on the SUT (will not disable if enabled)
|
162
|
+
|
163
|
+
* BEAKER_no_fix_interfaces [Boolean]
|
164
|
+
* If present, will not try to fix the interfaces on the SUT
|
165
|
+
|
166
|
+
* BEAKER_SIMP_install_repos [yes|no]
|
167
|
+
* `yes` => Install the SIMP YUM repositories
|
168
|
+
* `no` => No not install the SIMP YUM repositories
|
169
|
+
|
170
|
+
* BEAKER_SIMP_disable_repos [String]
|
171
|
+
* Comma delimited list of YUM repositories to disable on the SUT
|
172
|
+
|
173
|
+
* BEAKER_SIMP_repo_release [String]
|
174
|
+
* The release of SIMP to target in the YUM repos (usually a number)
|
175
|
+
|
176
|
+
* BEAKER_SIMP_repo_release_type [String]
|
177
|
+
* The release type of SIMP to target in the YUM repos
|
178
|
+
* Something like `stable`, `rolling`, or `unstable`
|
121
179
|
|
122
180
|
#### Global Suite Configuration
|
123
181
|
|
@@ -406,7 +464,7 @@ might try to install packages before subscription manager is configured.
|
|
406
464
|
The version of InSpec to use when running inspec tests. Currently hard-coded to
|
407
465
|
`4.16.14` due to a bug introduced in `4.16.15`.
|
408
466
|
|
409
|
-
|
467
|
+
Set to 'latest' to use the latest available in the upstream repos.
|
410
468
|
|
411
469
|
## Examples
|
412
470
|
|
@@ -510,7 +568,7 @@ underlying OS configuration.
|
|
510
568
|
|
511
569
|
`Simp::BeakerHelpers::Snapshot.save(sut, '<name of snapshot>')` will save a
|
512
570
|
snapshot with the given name. If the snapshot already exists, it will be
|
513
|
-
|
571
|
+
forcibly overwritten.
|
514
572
|
|
515
573
|
|
516
574
|
##### Base Snapshots
|
data/lib/simp/beaker_helpers.rb
CHANGED
@@ -18,7 +18,53 @@ module Simp::BeakerHelpers
|
|
18
18
|
"simp-beaker-helpers-#{t}-#{$$}-#{rand(0x100000000).to_s(36)}.tmp"
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
# Sets a single YUM option in the form that yum-config-manager/dnf
|
22
|
+
# config-manager would expect.
|
23
|
+
#
|
24
|
+
# If not prefaced with a repository, the option will be applied globally.
|
25
|
+
#
|
26
|
+
# Has no effect if yum or dnf is not present.
|
27
|
+
def set_yum_opt_on(suts, key, value)
|
28
|
+
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
29
|
+
block_on(suts, :run_in_parallel => parallel) do |sut|
|
30
|
+
repo,target = key.split('.')
|
31
|
+
|
32
|
+
unless target
|
33
|
+
key = "\\*.#{repo}"
|
34
|
+
end
|
35
|
+
|
36
|
+
command = nil
|
37
|
+
if !sut.which('dnf').empty?
|
38
|
+
install_package_unless_present_on(sut, 'dnf-plugins-core', :accept_all_exit_codes => true)
|
39
|
+
command = 'dnf config-manager'
|
40
|
+
elsif !sut.which('yum').empty?
|
41
|
+
command = 'yum-config-manager'
|
42
|
+
end
|
43
|
+
|
44
|
+
on(sut, %{#{command} --save --setopt=#{key}=#{value}}, :silent => true) if command
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Takes a hash of YUM options to set in the form that yum-config-manager/dnf
|
49
|
+
# config-manager would expect.
|
50
|
+
#
|
51
|
+
# If not prefaced with a repository, the option will be applied globally.
|
52
|
+
#
|
53
|
+
# Example:
|
54
|
+
# {
|
55
|
+
# 'skip_if_unavailable' => '1', # Applies globally
|
56
|
+
# 'foo.installonly_limit' => '5' # Applies only to the 'foo' repo
|
57
|
+
# }
|
58
|
+
def set_yum_opts_on(suts, yum_opts={})
|
59
|
+
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
60
|
+
block_on(suts, :run_in_parallel => parallel) do |sut|
|
61
|
+
yum_opts.each_pair do |k,v|
|
62
|
+
set_yum_opt_on(sut, k, v)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def install_package_unless_present_on(suts, package_name, package_source=nil, opts={})
|
22
68
|
default_opts = {
|
23
69
|
max_retries: 3,
|
24
70
|
retry_interval: 10
|
@@ -28,19 +74,35 @@ module Simp::BeakerHelpers
|
|
28
74
|
block_on(suts, :run_in_parallel => parallel) do |sut|
|
29
75
|
package_source = package_name unless package_source
|
30
76
|
|
31
|
-
|
32
|
-
sut.
|
77
|
+
unless sut.check_for_package(package_name)
|
78
|
+
sut.install_package(
|
33
79
|
package_source,
|
34
80
|
'',
|
81
|
+
nil,
|
35
82
|
default_opts.merge(opts)
|
36
83
|
)
|
37
|
-
|
38
|
-
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def install_latest_package_on(suts, package_name, package_source=nil, opts={})
|
89
|
+
default_opts = {
|
90
|
+
max_retries: 3,
|
91
|
+
retry_interval: 10
|
92
|
+
}
|
93
|
+
|
94
|
+
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
95
|
+
block_on(suts, :run_in_parallel => parallel) do |sut|
|
96
|
+
package_source = package_name unless package_source
|
97
|
+
|
98
|
+
if sut.check_for_package(package_name)
|
99
|
+
sut.upgrade_package(
|
39
100
|
package_source,
|
40
101
|
'',
|
41
|
-
nil,
|
42
102
|
default_opts.merge(opts)
|
43
103
|
)
|
104
|
+
else
|
105
|
+
install_package_unless_present_on(sut, package_name, package_source, opts)
|
44
106
|
end
|
45
107
|
end
|
46
108
|
end
|
@@ -124,13 +186,18 @@ module Simp::BeakerHelpers
|
|
124
186
|
end
|
125
187
|
end
|
126
188
|
|
127
|
-
unless directory_exists_on(sut, dest)
|
128
|
-
dest = File.dirname(dest)
|
129
|
-
sut.mkdir_p(dest)
|
130
|
-
end
|
189
|
+
sut.mkdir_p(File.dirname(dest)) unless directory_exists_on(sut, dest)
|
131
190
|
|
132
|
-
|
191
|
+
if File.file?(src)
|
192
|
+
cmd = %{#{docker_cmd} cp "#{src}" "#{container_id}:#{dest}"}
|
193
|
+
else
|
194
|
+
cmd = [
|
195
|
+
%{tar #{exclude_list.join(' ')} -hcf - -C "#{File.dirname(src)}" "#{File.basename(src)}"},
|
196
|
+
%{#{docker_cmd} exec -i "#{container_id}" tar -C "#{dest}" -xf -}
|
197
|
+
].join(' | ')
|
198
|
+
end
|
133
199
|
|
200
|
+
%x(#{cmd})
|
134
201
|
elsif rsync_functional_on?(sut)
|
135
202
|
# This makes rsync_to work like beaker and scp usually do
|
136
203
|
exclude_hack = %(__-__' -L --exclude '__-__)
|
@@ -181,7 +248,7 @@ module Simp::BeakerHelpers
|
|
181
248
|
rescue StandardError
|
182
249
|
# If *anything* fails, we need to fall back to `puppet facts`
|
183
250
|
|
184
|
-
facts_json =
|
251
|
+
facts_json = retry_on(sut, 'puppet facts find garbage_xxx', :silent => true, :max_retries => 4).stdout
|
185
252
|
facts = JSON.parse(facts_json)['values']
|
186
253
|
end
|
187
254
|
|
@@ -434,13 +501,16 @@ module Simp::BeakerHelpers
|
|
434
501
|
|
435
502
|
fips_enable_modulepath = '--modulepath=/root/.beaker_fips/modules'
|
436
503
|
|
437
|
-
|
504
|
+
modules_to_install = {
|
505
|
+
'simp-fips' => ENV['BEAKER_fips_module_version'],
|
506
|
+
'simp-crypto_policy' => nil
|
507
|
+
}
|
438
508
|
|
439
|
-
|
440
|
-
module_install_cmd
|
509
|
+
modules_to_install.each_pair do |to_install, version|
|
510
|
+
module_install_cmd = "puppet module install #{to_install} --target-dir=/root/.beaker_fips/modules"
|
511
|
+
module_install_cmd += " --version #{version}" if version
|
512
|
+
on(sut, module_install_cmd)
|
441
513
|
end
|
442
|
-
|
443
|
-
on(sut, module_install_cmd)
|
444
514
|
end
|
445
515
|
|
446
516
|
# Work around Vagrant and cipher restrictions in EL8+
|
@@ -469,7 +539,7 @@ module Simp::BeakerHelpers
|
|
469
539
|
block_on(suts, :run_in_parallel => parallel) do |sut|
|
470
540
|
if sut['yum_repos']
|
471
541
|
sut['yum_repos'].each_pair do |repo, metadata|
|
472
|
-
repo_manifest = create_yum_resource(
|
542
|
+
repo_manifest = create_yum_resource(repo, metadata)
|
473
543
|
|
474
544
|
apply_manifest_on(sut, repo_manifest, :catch_failures => true)
|
475
545
|
end
|
@@ -549,12 +619,13 @@ module Simp::BeakerHelpers
|
|
549
619
|
def enable_epel_on(suts)
|
550
620
|
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
551
621
|
block_on(suts, :run_in_parallel => parallel) do |sut|
|
552
|
-
if ONLINE
|
622
|
+
if ONLINE
|
553
623
|
os_info = fact_on(sut, 'os')
|
554
624
|
os_maj_rel = os_info['release']['major']
|
555
625
|
|
556
626
|
# This is based on the official EPEL docs https://fedoraproject.org/wiki/EPEL
|
557
|
-
|
627
|
+
case os_info['name']
|
628
|
+
when 'RedHat','CentOS'
|
558
629
|
install_latest_package_on(
|
559
630
|
sut,
|
560
631
|
'epel-release',
|
@@ -580,7 +651,11 @@ module Simp::BeakerHelpers
|
|
580
651
|
on sut, %{dnf config-manager --set-enabled powertools || dnf config-manager --set-enabled PowerTools}
|
581
652
|
end
|
582
653
|
end
|
654
|
+
when 'OracleLinux'
|
655
|
+
package_name = "oracle-epel-release-el#{os_maj_rel}"
|
656
|
+
install_latest_package_on(sut,package_name)
|
583
657
|
end
|
658
|
+
|
584
659
|
end
|
585
660
|
end
|
586
661
|
end
|
@@ -597,6 +672,9 @@ module Simp::BeakerHelpers
|
|
597
672
|
def linux_errata( suts )
|
598
673
|
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
599
674
|
block_on(suts, :run_in_parallel => parallel) do |sut|
|
675
|
+
# Set the locale if not set
|
676
|
+
sut.set_env_var('LANG', 'en_US.UTF-8') unless sut.get_env_var('LANG')
|
677
|
+
|
600
678
|
# We need to be able to flip between server and client without issue
|
601
679
|
on sut, 'puppet resource group puppet gid=52'
|
602
680
|
on sut, 'puppet resource user puppet comment="Puppet" gid="52" uid="52" home="/var/lib/puppet" managehome=true'
|
@@ -672,11 +750,9 @@ module Simp::BeakerHelpers
|
|
672
750
|
if os_info['family'] == 'RedHat'
|
673
751
|
# OS-specific items
|
674
752
|
if os_info['name'] == 'RedHat'
|
675
|
-
|
676
|
-
c.before(:all) do
|
677
|
-
rhel_rhsm_subscribe(sut)
|
678
|
-
end
|
753
|
+
rhel_rhsm_subscribe(sut)
|
679
754
|
|
755
|
+
RSpec.configure do |c|
|
680
756
|
c.after(:all) do
|
681
757
|
rhel_rhsm_unsubscribe(sut)
|
682
758
|
end
|
@@ -695,15 +771,6 @@ module Simp::BeakerHelpers
|
|
695
771
|
apply_manifest_on(sut, pp, :catch_failures => false)
|
696
772
|
end
|
697
773
|
|
698
|
-
unless sut[:hypervisor] == 'docker'
|
699
|
-
if (os_info['name'] == 'CentOS') && (os_info['release']['major'].to_i >= 8)
|
700
|
-
if os_info['release']['minor'].to_i == 3
|
701
|
-
update_package_from_centos_stream(sut, 'kernel')
|
702
|
-
sut.reboot
|
703
|
-
end
|
704
|
-
end
|
705
|
-
end
|
706
|
-
|
707
774
|
# Clean up YUM prior to starting our test runs.
|
708
775
|
on(sut, 'yum clean all')
|
709
776
|
end
|
@@ -1020,13 +1087,13 @@ module Simp::BeakerHelpers
|
|
1020
1087
|
next
|
1021
1088
|
end
|
1022
1089
|
|
1023
|
-
interfaces_fact =
|
1090
|
+
interfaces_fact = pfact_on(host, 'interfaces')
|
1024
1091
|
|
1025
1092
|
interfaces = interfaces_fact.strip.split(',')
|
1026
1093
|
interfaces.delete_if { |x| x =~ /^lo/ }
|
1027
1094
|
|
1028
1095
|
interfaces.each do |iface|
|
1029
|
-
if
|
1096
|
+
if pfact_on(host, "ipaddress_#{iface}")
|
1030
1097
|
on(host, "ifup #{iface}", :accept_all_exit_codes => true)
|
1031
1098
|
end
|
1032
1099
|
end
|
@@ -1397,49 +1464,79 @@ module Simp::BeakerHelpers
|
|
1397
1464
|
# * 'simp-community-postgres'
|
1398
1465
|
# * 'simp-community-puppet'
|
1399
1466
|
#
|
1400
|
-
|
1467
|
+
#
|
1468
|
+
# Environment Variables:
|
1469
|
+
# * BEAKER_SIMP_install_repos
|
1470
|
+
# * 'no' => disable the capability
|
1471
|
+
# * BEAKER_SIMP_disable_repos
|
1472
|
+
# * Comma delimited list of active yum repo names to disable
|
1473
|
+
def install_simp_repos(suts, disable = [])
|
1401
1474
|
# NOTE: Do *NOT* use puppet in this method since it may not be available yet
|
1402
1475
|
|
1403
|
-
|
1404
|
-
install_latest_package_on(
|
1405
|
-
sut,
|
1406
|
-
'simp-release-community',
|
1407
|
-
"https://download.simp-project.com/simp-release-community.rpm",
|
1408
|
-
)
|
1476
|
+
return if (ENV.fetch('SIMP_install_repos', 'yes') == 'no')
|
1409
1477
|
|
1410
|
-
|
1478
|
+
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
1479
|
+
block_on(suts, :run_in_parallel => parallel) do |sut|
|
1480
|
+
install_package_unless_present_on(sut, 'yum-utils')
|
1411
1481
|
|
1412
|
-
|
1413
|
-
|
1414
|
-
|
1415
|
-
|
1416
|
-
|
1482
|
+
install_package_unless_present_on(
|
1483
|
+
sut,
|
1484
|
+
'simp-release-community',
|
1485
|
+
"https://download.simp-project.com/simp-release-community.rpm",
|
1486
|
+
)
|
1417
1487
|
|
1418
|
-
|
1419
|
-
|
1420
|
-
to_disable << 'simp-community-epel'
|
1421
|
-
to_disable << 'simp-community-postgres'
|
1422
|
-
to_disable << 'simp-community-puppet'
|
1423
|
-
end
|
1488
|
+
to_disable = disable.dup
|
1489
|
+
to_disable += ENV.fetch('BEAKER_SIMP_disable_repos', '').split(',').map(&:strip)
|
1424
1490
|
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
# have the '--dump' option.
|
1431
|
-
available_repos = on(sut, %{yum-config-manager --enablerepo="*" || yum-config-manager --enablerepo="*" --dump}).stdout.lines.grep(/\A\[(.+)\]\Z/){|x| $1}
|
1491
|
+
unless to_disable.empty?
|
1492
|
+
if to_disable.include?('simp')
|
1493
|
+
to_disable.delete('simp')
|
1494
|
+
to_disable << 'simp-community-simp'
|
1495
|
+
end
|
1432
1496
|
|
1433
|
-
|
1497
|
+
if to_disable.include?('simp_deps')
|
1498
|
+
to_disable.delete('simp_deps')
|
1499
|
+
to_disable << 'simp-community-epel'
|
1500
|
+
to_disable << 'simp-community-postgres'
|
1501
|
+
to_disable << 'simp-community-puppet'
|
1502
|
+
end
|
1434
1503
|
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1504
|
+
# NOTE: This --enablerepo enables the repos for listing and is inherited
|
1505
|
+
# from YUM. This does not actually "enable" the repos, that would require
|
1506
|
+
# the "--enable" option (from yum-config-manager) :-D.
|
1507
|
+
#
|
1508
|
+
# Note: Certain versions of EL8 do not dump by default and EL7 does not
|
1509
|
+
# have the '--dump' option.
|
1510
|
+
available_repos = on(sut, %{yum-config-manager --enablerepo="*" || yum-config-manager --enablerepo="*" --dump}).stdout.lines.grep(/\A\[(.+)\]\Z/){|x| $1}
|
1439
1511
|
|
1440
|
-
|
1441
|
-
|
1512
|
+
invalid_repos = (to_disable - available_repos)
|
1513
|
+
|
1514
|
+
# Verify that the repos passed to disable are in the list of valid repos
|
1515
|
+
unless invalid_repos.empty?
|
1516
|
+
logger.warn(%{WARN: install_simp_repo - requested repos to disable do not exist on the target system '#{invalid_repos.join("', '")}'.})
|
1517
|
+
end
|
1518
|
+
|
1519
|
+
(to_disable - invalid_repos).each do |repo|
|
1520
|
+
on(sut, %{yum-config-manager --disable "#{repo}"})
|
1521
|
+
end
|
1442
1522
|
end
|
1443
1523
|
end
|
1524
|
+
|
1525
|
+
set_yum_opts_on(suts, {'simp*.skip_if_unavailable' => '1' })
|
1526
|
+
end
|
1527
|
+
|
1528
|
+
# Set the release and release type of the SIMP yum repos
|
1529
|
+
#
|
1530
|
+
# Environment variables may be used to set either one
|
1531
|
+
# * BEAKER_SIMP_repo_release => The actual release (version number)
|
1532
|
+
# * BEAKER_SIMP_repo_release_type => The type of release (stable, unstable, rolling, etc...)
|
1533
|
+
def set_simp_repo_release(sut, simp_release_type='stable', simp_release='6')
|
1534
|
+
simp_release = ENV.fetch('BEAKER_SIMP_repo_release', simp_release)
|
1535
|
+
simp_release_type = ENV.fetch('BEAKER_SIMP_repo_release_type', simp_release_type)
|
1536
|
+
|
1537
|
+
simp_release_type = 'releases' if (simp_release_type == 'stable')
|
1538
|
+
|
1539
|
+
create_remote_file(sut, '/etc/yum/vars/simprelease', simp_release)
|
1540
|
+
create_remote_file(sut, '/etc/yum/vars/simpreleasetype', simp_release_type)
|
1444
1541
|
end
|
1445
1542
|
end
|