simp-beaker-helpers 1.19.1 → 1.21.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.fixtures.yml +1 -0
- data/.gitignore +1 -0
- data/.gitlab-ci.yml +334 -89
- data/.travis.yml +39 -33
- data/CHANGELOG.md +53 -0
- data/Rakefile +1 -1
- data/lib/simp/beaker_helpers.rb +160 -43
- data/lib/simp/beaker_helpers/constants.rb +5 -1
- data/lib/simp/beaker_helpers/version.rb +1 -1
- data/spec/acceptance/nodesets/default.yml +22 -5
- data/spec/acceptance/nodesets/ubuntu.yml +20 -0
- data/spec/acceptance/suites/default/fixture_modules_spec.rb +22 -4
- data/spec/lib/simp/beaker_helpers_spec.rb +15 -2
- metadata +37 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c454a97bb3100de8137245a8f4e328451e4048665c482db961c668cb820c972
|
4
|
+
data.tar.gz: 1aed320014ebd403f631faeb3f29484f6cc55a4441a4e499beab7409e289f101
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1df4f0b7411eead1d2c0d49f4f16d7a4f5dde7162ce91cb3fcba07018382508e56a8e16fdd65f06ee0b74fa2f4e6d036a7ea7f1d3c292964ce4face723bbb04
|
7
|
+
data.tar.gz: 82fb880cc4c7c975aa7a4b44134ec88f6d34d7a30431914c22b2616e54880b00ec647221779dda3d12e2b3f99923af49d3ce49a03efa20d04d318db3457189a4
|
data/.fixtures.yml
CHANGED
data/.gitignore
CHANGED
data/.gitlab-ci.yml
CHANGED
@@ -1,131 +1,376 @@
|
|
1
|
+
# ------------------------------------------------------------------------------
|
2
|
+
# NOTICE: **This file is maintained with puppetsync**
|
3
|
+
#
|
4
|
+
# This file is updated automatically as part of a puppet module baseline.
|
5
|
+
#
|
6
|
+
# The next baseline sync will overwrite any local changes to everything above
|
7
|
+
# the line "# Repo-specific content"
|
8
|
+
# ------------------------------------------------------------------------------
|
9
|
+
# The testing matrix considers ruby/puppet versions supported by SIMP and PE:
|
10
|
+
#
|
11
|
+
# https://puppet.com/docs/pe/2019.8/component_versions_in_recent_pe_releases.html
|
12
|
+
# https://puppet.com/misc/puppet-enterprise-lifecycle
|
13
|
+
# https://puppet.com/docs/pe/2018.1/overview/getting_support_for_pe.html
|
14
|
+
# ------------------------------------------------------------------------------
|
15
|
+
# Release Puppet Ruby EOL
|
16
|
+
# SIMP 6.4 5.5 2.4.10 TBD
|
17
|
+
# PE 2018.1 5.5 2.4.10 2021-01 (LTS overlap)
|
18
|
+
# PE 2019.8 6.18 2.5.7 2022-12 (LTS)
|
1
19
|
---
|
2
|
-
|
20
|
+
|
21
|
+
stages:
|
22
|
+
- 'validation'
|
23
|
+
- 'acceptance'
|
24
|
+
- 'compliance'
|
25
|
+
- 'deployment'
|
26
|
+
|
27
|
+
variables:
|
28
|
+
# PUPPET_VERSION is a canary variable!
|
29
|
+
#
|
30
|
+
# The value `UNDEFINED` will (intentionally) cause `bundler install|update` to
|
31
|
+
# fail. The intended value for PUPPET_VERSION is provided by the `pup_#` YAML
|
32
|
+
# anchors. If it is still `UNDEFINED`, all the other setting from the job's
|
33
|
+
# anchor are also missing.
|
34
|
+
PUPPET_VERSION: 'UNDEFINED' # <- Matrixed jobs MUST override this (or fail)
|
35
|
+
BUNDLER_VERSION: '1.17.1'
|
36
|
+
SIMP_MATRIX_LEVEL: '1'
|
37
|
+
SIMP_FORCE_RUN_MATRIX: 'no'
|
38
|
+
|
39
|
+
# Force dependencies into a path the gitlab-runner user can write to.
|
40
|
+
# (This avoids some failures on Runners with misconfigured ruby environments.)
|
41
|
+
GEM_HOME: .vendor/gem_install
|
42
|
+
BUNDLE_CACHE_PATH: .vendor/bundle
|
43
|
+
BUNDLE_PATH: .vendor/bundle
|
44
|
+
BUNDLE_BIN: .vendor/gem_install/bin
|
45
|
+
BUNDLE_NO_PRUNE: 'true'
|
46
|
+
|
47
|
+
|
48
|
+
# bundler dependencies + caching, optional RVM setup, with diagnostic output
|
49
|
+
# --------------------------------------------------------------------------
|
50
|
+
.setup_bundler_env: &setup_bundler_env
|
3
51
|
cache:
|
4
|
-
|
5
|
-
|
6
|
-
key: "${CI_PROJECT_NAMESPACE}__bundler"
|
52
|
+
# Cache bundler gems between pipelines for each Ruby version
|
53
|
+
key: "${CI_PROJECT_NAMESPACE}_ruby-${MATRIX_RUBY_VERSION}_bundler"
|
7
54
|
paths:
|
8
55
|
- '.vendor'
|
9
|
-
- 'vendor'
|
10
|
-
|
11
|
-
.setup_bundler_env: &setup_bundler_env
|
12
56
|
before_script:
|
13
|
-
- '
|
14
|
-
|
15
|
-
- '
|
16
|
-
- '
|
17
|
-
-
|
18
|
-
-
|
19
|
-
|
57
|
+
- 'ruby -e "puts %(\n\n), %q(=)*80, %(\nSIMP-relevant Environment Variables:\n\n#{e=ENV.keys.grep(/^PUPPET|^SIMP|^BEAKER|MATRIX/); pad=e.map{|x| x.size}.max+1; e.map{|v| %( * #{%(#{v}:).ljust(pad)} #{39.chr + ENV[v] + 39.chr}\n)}.join}\n), %q(=)*80, %(\n\n)"'
|
58
|
+
# Diagnostic ruby & gem information
|
59
|
+
- 'which ruby && ruby --version || :'
|
60
|
+
- "[[ $- == *i* ]] && echo 'Interactive shell session' || echo 'Non-interactive shell session'"
|
61
|
+
- "shopt -q login_shell && echo 'Login shell' || echo 'Not a login shell'"
|
62
|
+
- 'rvm ls || :'
|
63
|
+
|
64
|
+
# If RVM is available, make SURE it's using the right Ruby:
|
65
|
+
# * Source rvm (to run in non-login shells)
|
66
|
+
# * If any $MATRIX_RUBY_VERSION rubies are available, use the latest
|
67
|
+
# * Otherwise: install & use ${MATRIX_RUBY_VERSION}-head (e.g., latest)
|
68
|
+
# * ^^ This could be wonky and introduce variations across runners
|
69
|
+
# * ^^ maybe it should just fail if there is no $MATRIX_RUBY_VERSION installed?
|
70
|
+
- "command -v rvm && { if declare -p rvm_path &> /dev/null; then source \"${rvm_path}/scripts/rvm\"; else source \"$HOME/.rvm/scripts/rvm\" || source /etc/profile.d/rvm.sh; fi; }"
|
71
|
+
- "command -v rvm && { LATEST_RVM_RUBY_XY=\"$(rvm ls | grep \"$MATRIX_RUBY_VERSION\" | tail -1 | sed -e 's/^.*\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\).*$/\\1/g')\"; if [ -z \"$LATEST_RVM_RUBY_XY\" ]; then LATEST_RVM_RUBY_XY=\"${MATRIX_RUBY_VERSION}-head\"; rvm install \"$LATEST_RVM_RUBY\" --no-docs; else echo \"Found RVM Ruby: '${LATEST_RVM_RUBY_XY}'\"; fi; rvm use \"$LATEST_RVM_RUBY_XY\" ; }"
|
72
|
+
- 'ruby --version || :'
|
73
|
+
- 'gem list sync || :'
|
74
|
+
|
75
|
+
# Bundle gems (preferring cached > local > downloaded resources)
|
76
|
+
# * Try to use cached and local resources before downloading dependencies
|
77
|
+
- 'declare GEM_BUNDLER_VER=(-v "~> ${BUNDLER_VERSION:-1.17.1}")'
|
78
|
+
- 'declare GEM_INSTALL_CMD=(gem install --no-document)'
|
79
|
+
- 'declare BUNDLER_INSTALL_CMD=(bundle install --no-binstubs --jobs $(nproc) "${FLAGS[@]}")'
|
80
|
+
- 'mkdir -p ${GEM_HOME} ${BUNDLER_BIN}'
|
81
|
+
- 'gem list -ie "${GEM_BUNDLER_VER[@]}" --silent bundler || "${GEM_INSTALL_CMD[@]}" --local "${GEM_BUNDLER_VER[@]}" bundler || "${GEM_INSTALL_CMD[@]}" "${GEM_BUNDLER_VER[@]}" bundler'
|
20
82
|
- 'rm -rf pkg/ || :'
|
21
|
-
- bundle check || rm -f Gemfile.lock && ("${
|
83
|
+
- 'bundle check || rm -f Gemfile.lock && ("${BUNDLER_INSTALL_CMD[@]}" --local || "${BUNDLER_INSTALL_CMD[@]}" || bundle pristine || "${BUNDLER_INSTALL_CMD[@]}") || { echo "PIPELINE: Bundler could not install everything (see log output above)" && exit 99 ; }'
|
84
|
+
|
85
|
+
# Diagnostic bundler, ruby, and gem checks:
|
86
|
+
- 'bundle exec rvm ls || :'
|
87
|
+
- 'bundle exec which ruby || :'
|
88
|
+
- 'bundle show sync || :'
|
89
|
+
- 'bundle exec gem list sync || :'
|
90
|
+
|
91
|
+
|
92
|
+
# Assign a matrix level when your test will run. Heavier jobs get higher numbers
|
93
|
+
# NOTE: To skip all jobs with a SIMP_MATRIX_LEVEL, set SIMP_MATRIX_LEVEL=0
|
94
|
+
# ------------------------------------------------------------------------------
|
95
|
+
|
96
|
+
.relevant_file_conditions_trigger_spec_tests: &relevant_file_conditions_trigger_spec_tests
|
97
|
+
changes:
|
98
|
+
- .gitlab-ci.yml
|
99
|
+
- .fixtures.yml
|
100
|
+
- .rspec
|
101
|
+
- metadata.json
|
102
|
+
- "spec/spec_helper.rb"
|
103
|
+
- "spec/{classes,unit,defines,type_aliases,types,hosts,lib}/**/*.rb"
|
104
|
+
- "{SIMP,data,manifests,files,types,lib}/**/*"
|
105
|
+
- "templates/**/*.{erb,epp}"
|
106
|
+
- "Gemfile"
|
107
|
+
exists:
|
108
|
+
- "spec/{classes,unit,defines,type_aliases,types,hosts,lib}/**/*_spec.rb"
|
109
|
+
|
110
|
+
.relevant_file_conditions_trigger_acceptance_tests: &relevant_file_conditions_trigger_acceptance_tests
|
111
|
+
changes:
|
112
|
+
- .gitlab-ci.yml
|
113
|
+
- .fixtures.yml
|
114
|
+
- "spec/spec_helper_acceptance.rb"
|
115
|
+
- "spec/acceptance/**/*"
|
116
|
+
- "{SIMP,data,manifests,files,types,lib}/**/*"
|
117
|
+
- "templates/**/*.{erb,epp}"
|
118
|
+
- "Gemfile"
|
119
|
+
exists:
|
120
|
+
- "spec/acceptance/**/*_spec.rb"
|
121
|
+
|
122
|
+
# For some reason, the rule regexes stopped matching line starts inside
|
123
|
+
# $CI_COMMIT_MESSAGE with carets /^/, so we're using /\n?/ as a workaround.
|
124
|
+
.skip_job_when_commit_message_says_to: &skip_job_when_commit_message_says_to
|
125
|
+
if: '$CI_COMMIT_MESSAGE =~ /\n?CI: (SKIP MATRIX|MATRIX LEVEL 0)/'
|
126
|
+
when: never
|
127
|
+
|
128
|
+
.force_run_job_when_commit_message_lvl_1_or_above: &force_run_job_when_commit_mssage_lvl_1_or_above
|
129
|
+
if: '$CI_COMMIT_MESSAGE =~ /\n?CI: MATRIX LEVEL [123]/'
|
130
|
+
when: on_success
|
131
|
+
|
132
|
+
.force_run_job_when_commit_message_lvl_2_or_above: &force_run_job_when_commit_mssage_lvl_2_or_above
|
133
|
+
if: '$CI_COMMIT_MESSAGE =~ /\n?CI: MATRIX LEVEL [23]/'
|
134
|
+
when: on_success
|
135
|
+
|
136
|
+
.force_run_job_when_commit_message_lvl_3_or_above: &force_run_job_when_commit_mssage_lvl_3_or_above
|
137
|
+
if: '$CI_COMMIT_MESSAGE =~ /\n?CI: MATRIX LEVEL [3]/'
|
138
|
+
when: on_success
|
139
|
+
|
140
|
+
# check for $CI_PIPELINE_SOURCE needed because this is combined w/when:changes
|
141
|
+
.run_job_when_level_1_or_above_w_changes: &run_job_when_level_1_or_above_w_changes
|
142
|
+
if: '$SIMP_MATRIX_LEVEL =~ /^[123]$/ && $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
|
143
|
+
when: on_success
|
144
|
+
|
145
|
+
.run_job_when_level_2_or_above_w_changes: &run_job_when_level_2_or_above_w_changes
|
146
|
+
if: '$SIMP_MATRIX_LEVEL =~ /^[23]$/ && $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
|
147
|
+
when: on_success
|
22
148
|
|
23
|
-
.
|
149
|
+
.run_job_when_level_3_or_above_w_changes: &run_job_when_level_3_or_above_w_changes
|
150
|
+
if: '$SIMP_MATRIX_LEVEL =~ /^[3]$/ && $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
|
151
|
+
when: on_success
|
152
|
+
|
153
|
+
.force_run_job_when_var_and_lvl_1_or_above: &force_run_job_when_var_and_lvl_1_or_above
|
154
|
+
if: '$SIMP_FORCE_RUN_MATRIX == "yes" && $SIMP_MATRIX_LEVEL =~ /^[123]$/'
|
155
|
+
when: on_success
|
156
|
+
|
157
|
+
.force_run_job_when_var_and_lvl_2_or_above: &force_run_job_when_var_and_lvl_2_or_above
|
158
|
+
if: '$SIMP_FORCE_RUN_MATRIX == "yes" && $SIMP_MATRIX_LEVEL =~ /^[23]$/'
|
159
|
+
when: on_success
|
160
|
+
|
161
|
+
.force_run_job_when_var_and_lvl_3_or_above: &force_run_job_when_var_and_lvl_3_or_above
|
162
|
+
if: '$SIMP_FORCE_RUN_MATRIX == "yes" && $SIMP_MATRIX_LEVEL =~ /^[3]$/'
|
163
|
+
when: on_success
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
# SIMP_MATRIX_LEVEL=1: Intended to run every commit
|
168
|
+
.with_SIMP_ACCEPTANCE_MATRIX_LEVEL_1: &with_SIMP_ACCEPTANCE_MATRIX_LEVEL_1
|
169
|
+
rules:
|
170
|
+
- <<: *skip_job_when_commit_message_says_to
|
171
|
+
- <<: *force_run_job_when_var_and_lvl_1_or_above
|
172
|
+
- <<: *force_run_job_when_commit_mssage_lvl_1_or_above
|
173
|
+
- <<: *run_job_when_level_1_or_above_w_changes
|
174
|
+
<<: *relevant_file_conditions_trigger_acceptance_tests
|
175
|
+
- when: never
|
176
|
+
|
177
|
+
.with_SIMP_SPEC_MATRIX_LEVEL_1: &with_SIMP_SPEC_MATRIX_LEVEL_1
|
178
|
+
rules:
|
179
|
+
- <<: *skip_job_when_commit_message_says_to
|
180
|
+
- <<: *force_run_job_when_commit_mssage_lvl_1_or_above
|
181
|
+
- <<: *force_run_job_when_var_and_lvl_1_or_above
|
182
|
+
- <<: *run_job_when_level_1_or_above_w_changes
|
183
|
+
<<: *relevant_file_conditions_trigger_spec_tests
|
184
|
+
- when: never
|
185
|
+
|
186
|
+
# SIMP_MATRIX_LEVEL=2: Resource-heavy or redundant jobs
|
187
|
+
.with_SIMP_ACCEPTANCE_MATRIX_LEVEL_2: &with_SIMP_ACCEPTANCE_MATRIX_LEVEL_2
|
188
|
+
rules:
|
189
|
+
- <<: *skip_job_when_commit_message_says_to
|
190
|
+
- <<: *force_run_job_when_var_and_lvl_2_or_above
|
191
|
+
- <<: *force_run_job_when_commit_mssage_lvl_2_or_above
|
192
|
+
- <<: *run_job_when_level_2_or_above_w_changes
|
193
|
+
<<: *relevant_file_conditions_trigger_acceptance_tests
|
194
|
+
- when: never
|
195
|
+
|
196
|
+
.with_SIMP_SPEC_MATRIX_LEVEL_2: &with_SIMP_SPEC_MATRIX_LEVEL_2
|
197
|
+
rules:
|
198
|
+
- <<: *skip_job_when_commit_message_says_to
|
199
|
+
- <<: *force_run_job_when_commit_mssage_lvl_2_or_above
|
200
|
+
- <<: *force_run_job_when_var_and_lvl_2_or_above
|
201
|
+
- <<: *run_job_when_level_2_or_above_w_changes
|
202
|
+
<<: *relevant_file_conditions_trigger_spec_tests
|
203
|
+
- when: never
|
204
|
+
|
205
|
+
# SIMP_MATRIX_LEVEL=3: Reserved for FULL matrix testing
|
206
|
+
.with_SIMP_ACCEPTANCE_MATRIX_LEVEL_3: &with_SIMP_ACCEPTANCE_MATRIX_LEVEL_3
|
207
|
+
rules:
|
208
|
+
- <<: *skip_job_when_commit_message_says_to
|
209
|
+
- <<: *force_run_job_when_var_and_lvl_3_or_above
|
210
|
+
- <<: *force_run_job_when_commit_mssage_lvl_3_or_above
|
211
|
+
- <<: *run_job_when_level_3_or_above_w_changes
|
212
|
+
<<: *relevant_file_conditions_trigger_acceptance_tests
|
213
|
+
- when: never
|
214
|
+
|
215
|
+
|
216
|
+
# Puppet Versions
|
217
|
+
#-----------------------------------------------------------------------
|
218
|
+
|
219
|
+
.pup_5: &pup_5
|
220
|
+
image: 'ruby:2.4'
|
221
|
+
variables:
|
222
|
+
PUPPET_VERSION: '~> 5.0'
|
223
|
+
BEAKER_PUPPET_COLLECTION: 'puppet5'
|
224
|
+
MATRIX_RUBY_VERSION: '2.4'
|
225
|
+
|
226
|
+
.pup_6: &pup_6
|
227
|
+
image: 'ruby:2.5'
|
228
|
+
variables:
|
229
|
+
PUPPET_VERSION: '~> 6.0'
|
230
|
+
BEAKER_PUPPET_COLLECTION: 'puppet6'
|
231
|
+
MATRIX_RUBY_VERSION: '2.5'
|
232
|
+
|
233
|
+
.pup_6_18_0: &pup_6_18_0
|
234
|
+
image: 'ruby:2.5'
|
235
|
+
variables:
|
236
|
+
PUPPET_VERSION: '6.18.0'
|
237
|
+
BEAKER_PUPPET_COLLECTION: 'puppet6'
|
238
|
+
MATRIX_RUBY_VERSION: '2.5'
|
239
|
+
|
240
|
+
.pup_7: &pup_7
|
241
|
+
image: 'ruby:2.7'
|
242
|
+
variables:
|
243
|
+
PUPPET_VERSION: '~> 7.0'
|
244
|
+
BEAKER_PUPPET_COLLECTION: 'puppet7'
|
245
|
+
MATRIX_RUBY_VERSION: '2.7'
|
246
|
+
|
247
|
+
# Testing Environments
|
248
|
+
#-----------------------------------------------------------------------
|
249
|
+
|
250
|
+
.lint_tests: &lint_tests
|
251
|
+
stage: 'validation'
|
252
|
+
tags: ['docker']
|
253
|
+
<<: *setup_bundler_env
|
24
254
|
script:
|
25
|
-
- bundle exec rake
|
255
|
+
- 'bundle exec rake syntax'
|
256
|
+
- 'bundle exec rake lint'
|
257
|
+
- 'bundle exec rake metadata_lint'
|
26
258
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
259
|
+
.unit_tests: &unit_tests
|
260
|
+
stage: 'validation'
|
261
|
+
tags: ['docker']
|
262
|
+
<<: *setup_bundler_env
|
263
|
+
<<: *with_SIMP_SPEC_MATRIX_LEVEL_1
|
264
|
+
script:
|
265
|
+
- 'bundle exec rake spec'
|
33
266
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
2_4-unit:
|
39
|
-
stage: unit
|
40
|
-
tags:
|
41
|
-
- docker
|
42
|
-
image: ruby:2.4
|
43
|
-
<<: *cache_bundler
|
267
|
+
.acceptance_base: &acceptance_base
|
268
|
+
stage: 'acceptance'
|
269
|
+
tags: ['beaker']
|
44
270
|
<<: *setup_bundler_env
|
45
|
-
<<: *
|
271
|
+
<<: *with_SIMP_ACCEPTANCE_MATRIX_LEVEL_1
|
272
|
+
|
273
|
+
.compliance_base: &compliance_base
|
274
|
+
stage: 'compliance'
|
275
|
+
tags: ['beaker']
|
276
|
+
<<: *setup_bundler_env
|
277
|
+
<<: *with_SIMP_ACCEPTANCE_MATRIX_LEVEL_1
|
278
|
+
|
279
|
+
|
280
|
+
# Unit Tests
|
281
|
+
#-----------------------------------------------------------------------
|
282
|
+
|
283
|
+
pup5-unit:
|
284
|
+
<<: *pup_5
|
285
|
+
<<: *unit_tests
|
286
|
+
|
287
|
+
pup6-unit:
|
288
|
+
<<: *pup_6
|
289
|
+
<<: *unit_tests
|
290
|
+
|
291
|
+
pup7-unit:
|
292
|
+
<<: *pup_7
|
293
|
+
<<: *unit_tests
|
294
|
+
|
295
|
+
# ------------------------------------------------------------------------------
|
296
|
+
# NOTICE: **This file is maintained with puppetsync**
|
297
|
+
#
|
298
|
+
# Everything above the "Repo-specific content" comment will be overwritten by
|
299
|
+
# the next puppetsync.
|
300
|
+
# ------------------------------------------------------------------------------
|
301
|
+
|
302
|
+
# Repo-specific content
|
303
|
+
# ==============================================================================
|
304
|
+
|
305
|
+
#=======================================================================
|
306
|
+
# Packaging test
|
307
|
+
|
308
|
+
pup5-pkg:
|
309
|
+
<<: *pup_5
|
310
|
+
<<: *unit_tests
|
311
|
+
script:
|
312
|
+
'bundle exec rake pkg:gem'
|
46
313
|
|
314
|
+
pup6-pkg:
|
315
|
+
<<: *pup_6
|
316
|
+
<<: *unit_tests
|
317
|
+
script:
|
318
|
+
'bundle exec rake pkg:gem'
|
319
|
+
|
320
|
+
pup7-pkg:
|
321
|
+
<<: *pup_7
|
322
|
+
<<: *unit_tests
|
323
|
+
script:
|
324
|
+
'bundle exec rake pkg:gem'
|
47
325
|
|
48
326
|
#=======================================================================
|
49
327
|
# Acceptance tests
|
50
328
|
default:
|
51
|
-
|
52
|
-
|
53
|
-
- beaker
|
54
|
-
<<: *cache_bundler
|
55
|
-
<<: *setup_bundler_env
|
329
|
+
<<: *pup_6
|
330
|
+
<<: *acceptance_base
|
56
331
|
script:
|
57
|
-
- bundle exec rake spec_clean
|
58
332
|
- bundle exec rake beaker:suites[default]
|
59
333
|
|
60
334
|
default-fips:
|
61
|
-
|
62
|
-
|
63
|
-
- beaker
|
64
|
-
<<: *cache_bundler
|
65
|
-
<<: *setup_bundler_env
|
66
|
-
variables:
|
67
|
-
BEAKER_fips: 'yes'
|
335
|
+
<<: *pup_6
|
336
|
+
<<: *acceptance_base
|
68
337
|
script:
|
69
|
-
- bundle exec rake
|
70
|
-
- bundle exec rake beaker:suites[default]
|
338
|
+
- BEAKER_fips=yes bundle exec rake beaker:suites[default]
|
71
339
|
|
72
340
|
fips_from_fixtures:
|
73
|
-
|
74
|
-
|
75
|
-
- beaker
|
76
|
-
<<: *cache_bundler
|
77
|
-
<<: *setup_bundler_env
|
78
|
-
variables:
|
79
|
-
PUPPET_VERSION: '~> 5.3'
|
80
|
-
BEAKER_PUPPET_COLLECTION: 'puppet5'
|
341
|
+
<<: *pup_6
|
342
|
+
<<: *acceptance_base
|
81
343
|
script:
|
82
|
-
- bundle exec rake spec_clean
|
83
344
|
- bundle exec rake beaker:suites[fips_from_fixtures]
|
84
345
|
|
85
346
|
puppet5_collections:
|
86
|
-
|
87
|
-
|
88
|
-
- beaker
|
89
|
-
<<: *cache_bundler
|
90
|
-
<<: *setup_bundler_env
|
91
|
-
variables:
|
92
|
-
PUPPET_VERSION: '~> 5.3'
|
347
|
+
<<: *pup_5
|
348
|
+
<<: *acceptance_base
|
93
349
|
script:
|
94
|
-
- bundle exec rake spec_clean
|
95
350
|
- bundle exec rake beaker:suites[puppet_collections]
|
96
351
|
|
97
352
|
puppet6_collections:
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
353
|
+
<<: *pup_6
|
354
|
+
<<: *acceptance_base
|
355
|
+
script:
|
356
|
+
- bundle exec rake beaker:suites[puppet_collections]
|
357
|
+
|
358
|
+
puppet7_collections:
|
359
|
+
<<: *pup_7
|
360
|
+
<<: *acceptance_base
|
105
361
|
script:
|
106
|
-
- bundle exec rake spec_clean
|
107
362
|
- bundle exec rake beaker:suites[puppet_collections]
|
108
363
|
|
109
364
|
windows:
|
110
|
-
|
111
|
-
|
112
|
-
- beaker
|
113
|
-
<<: *cache_bundler
|
114
|
-
<<: *setup_bundler_env
|
365
|
+
<<: *pup_6
|
366
|
+
<<: *acceptance_base
|
115
367
|
script:
|
116
|
-
- bundle exec rake spec_clean
|
117
368
|
- bundle exec rake beaker:suites[windows]
|
118
369
|
|
119
370
|
snapshot:
|
120
|
-
|
371
|
+
<<: *pup_6
|
372
|
+
<<: *acceptance_base
|
121
373
|
# This is prone to breakage in the underlying system
|
122
374
|
allow_failure: true
|
123
|
-
tags:
|
124
|
-
- beaker
|
125
|
-
<<: *cache_bundler
|
126
|
-
<<: *setup_bundler_env
|
127
|
-
variables:
|
128
|
-
BEAKER_simp_snapshot: 'yes'
|
129
375
|
script:
|
130
|
-
- bundle exec rake
|
131
|
-
- bundle exec rake beaker:suites[snapshot]
|
376
|
+
- BEAKER_simp_snapshot=yes bundle exec rake beaker:suites[snapshot]
|
data/.travis.yml
CHANGED
@@ -1,36 +1,42 @@
|
|
1
1
|
---
|
2
|
-
language:
|
3
|
-
cache: bundler
|
4
|
-
sudo: false
|
5
|
-
before_install:
|
6
|
-
- rm Gemfile.lock || true
|
7
|
-
bundler_args: "--without development --path .vendor"
|
2
|
+
language: shell
|
8
3
|
notifications:
|
9
4
|
email: false
|
10
|
-
|
11
|
-
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
rvm: 2.4.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
5
|
+
stages:
|
6
|
+
- name: deploy
|
7
|
+
if: 'tag IS present'
|
8
|
+
|
9
|
+
### Testing on Travis CI is indefinitely disabled
|
10
|
+
###
|
11
|
+
### See:
|
12
|
+
### * https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
|
13
|
+
### * https://simp-project.atlassian.net/browse/SIMP-8703
|
14
|
+
jobs:
|
15
|
+
include:
|
16
|
+
- stage: deploy
|
17
|
+
script: skip
|
18
|
+
cache: bundler
|
19
|
+
before_install:
|
20
|
+
- rm Gemfile.lock || true
|
21
|
+
bundler_args: "--without development --path .vendor"
|
22
|
+
language: ruby
|
23
|
+
rvm: 2.4.5
|
24
|
+
before_deploy:
|
25
|
+
- bundle exec rake clobber
|
26
|
+
- "export GEM_VERSION=`ruby -r ./lib/simp/beaker_helpers/version.rb -e 'puts Simp::BeakerHelpers::VERSION'`"
|
27
|
+
- '[[ $TRAVIS_TAG =~ ^${GEM_VERSION}$ ]]'
|
28
|
+
deploy:
|
29
|
+
- provider: rubygems
|
30
|
+
gemspec: simp-beaker-helpers.gemspec
|
31
|
+
gem: simp-beaker-helpers
|
32
|
+
token:
|
33
|
+
secure: "AlnBx0dBSxn+S97n0h14ltKUOA+6v0bc7QZPIcwGJV9nnf1hKH3pf9La1TVknEx7XgpAcM9jusQJ7hBlqvSq8z8SFF0bZk1EgSRIKc1cuYPLiGyUM2O7+AFHyCy3iCnPvKeoQmE/BJb5O1dGnbmSbf4A0fqLxA7jiHG1j7z+cnmJB1i67wovDfl13TsOXyBfbespWBMMc0BKAw56FPs9XggAk2cNusS3hd5tqW1AZPT2/xwt+d8ngkmO96u8QcichYRFQ+w+XW4H0w935wNg/dWiskJlt7TIYVAh4Ko5s2DZKf52Tne8TugALSn0LhRatpp7sw1FTTpteCW8UqK8uwGC2hM4pZViAOv4P1YObz2IPOZPriBl+cCayJdMKnotkUJliAMnw5TLiSWKLou+S0Pdj2h3fJZWdOEwRPMzIVoJtsOHG3GdNcPL6f7iU0vP/wr6FeR3uWa+fA7NHRi2Du955O8JpogjdrW08ahcAEwhtI3A4mrA08wN09axsrwr093uDRm/5h4FHyAhExJ0YiA/6kcPpUvILcLStyHe0RQDICQMdsQo2DSbnL65w3QjFa2fML2Shf9cRwX06+ia2BxozWzFD/6p3RiRtPxphnbFiUdjYSGWcwCcUgbJx9SW04lSSxOhpyItuXgxZqiybkzstXd6riu5zwg1R8TWk34="
|
34
|
+
on:
|
35
|
+
tags: true
|
36
|
+
condition: "($SKIP_PUBLISH != true)"
|
37
|
+
- provider: releases
|
38
|
+
token:
|
39
|
+
secure: "I41p4aqjkrNDHJhZ5gWC4gzn7BVwEYRm5Q3PAxQRSIUDB/QTVgNqZx8YptkuIvSGpw8kIywyZg3NKdzGUO8aJJ0NlXapL7e9qQIigkYhdaCZjZFG5zIxdOFs4sVoz/6vnQT9JIcGWy7uS5xiNOulGvfEWU78+e+I9yPdT74RApve5VAVT/km5lV5ldRnwwehLnTx+volUlnOD8rwfizoVLqFTrfRfr4cVMF605UYyaiVxHF50hywFRZoAdVcMEhlLQnQXfz/ZsLMJLJm9eCpjQ989N0oX6theSLCcv7QtHcWMXydjWMcpuTfBZSFrwUVbC23uMOKTJVEWq5LMG3m2L6hP3//2gvUzGhOVLvoGuC+erboB7QoXdcoOgXY+dTZPMcPBxpArdDLWVQSLTvPs05QzpaUdRLVMC/kD1d1EudlEicgkNgNDBhBn3089nVmvKndbKLvj+23a5AQVVbs+8C0x+SJvTc9N2N+bmuH7jIJPrEvWK4xwcQa+g2M/EBv05jaEdSErlVa6B6UKCH0Lea9rpy1se9vn5OzpaaMCCJIpcpQqHDjo0PMAQXBSbqjKcBei6lR5fIFl5UO9gWP1v8PGPuCzGTBivQ92XlgV1TWXmdbJHwIuSbJx3Ali7Wp19RR4E4uHC+TPFssvgkh9ZLkORnWWS35wzzU1LkwWx0="
|
40
|
+
on:
|
41
|
+
tags: true
|
42
|
+
condition: "($SKIP_PUBLISH != true)"
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,56 @@
|
|
1
|
+
### 1.21.2 / 2021-01-15
|
2
|
+
* Fixed version mismatch. 1.21.1 was tagged with an incorrect version
|
3
|
+
in version.rb.
|
4
|
+
|
5
|
+
### 1.21.1 / 2021-01-13
|
6
|
+
* Added:
|
7
|
+
* update_package_from_centos_stream method
|
8
|
+
* install_latest_package_on method
|
9
|
+
* Fixed:
|
10
|
+
* Removed some of the extraneous calls to facter
|
11
|
+
* Automatically pull the CentOS 8 kernel to the latest version in
|
12
|
+
CentOS-Stream to work around issues on FIPS systems
|
13
|
+
|
14
|
+
### 1.20.1 / 2021-01-08
|
15
|
+
* Fixed:
|
16
|
+
* Ensure that yum calls commands appropriately depending on whether or not
|
17
|
+
packages are already installed.
|
18
|
+
* Also change all HostKeyAlgorithms settings for SSH connections
|
19
|
+
|
20
|
+
### 1.20.0 / 2021-01-05
|
21
|
+
* Added:
|
22
|
+
* A `enable_epel_on` function that follows the instructions on the EPEL
|
23
|
+
website to properly enable EPEL on hosts. May be disabled using
|
24
|
+
`BEAKER_enable_epel=no`.
|
25
|
+
* An Ubuntu nodeset to make sure our default settings don't destroy other
|
26
|
+
Linux systems.
|
27
|
+
* Added has_crypto_policies method for determining if crypto policies are
|
28
|
+
present on the SUT
|
29
|
+
* Added munge_ssh_crypto_policies to allow vagrant to SSH back into systems
|
30
|
+
with restrictive crypto policies (usually FIPS)
|
31
|
+
* Fixed:
|
32
|
+
* Modify all crypto-policy backend files to support ssh-rsa keys
|
33
|
+
* Try harder when doing yum installations
|
34
|
+
|
35
|
+
### 1.19.4 / 2021-01-05
|
36
|
+
* Fixed:
|
37
|
+
* Only return a default empty string when `pfact_on` finds a `nil` value
|
38
|
+
* Added an acceptance test to validate this
|
39
|
+
* Ensure that we start with `facter -p` for `facter` < 4.0 and continue to
|
40
|
+
`puppet facts` otherwise
|
41
|
+
* Updated the Rakefile to skip symlinks in chmods which fixes the ability to
|
42
|
+
build gems
|
43
|
+
|
44
|
+
### 1.19.3 / 2021-01-01
|
45
|
+
* Fixed:
|
46
|
+
* Ensure that `pfact_on` can handle fact dot notation
|
47
|
+
* Changed:
|
48
|
+
* Silenced some of the noisy commands that didn't provide value-add output
|
49
|
+
|
50
|
+
### 1.19.2 / 2020-12-19
|
51
|
+
* Fixed:
|
52
|
+
* Fixed an issue with pfact_on
|
53
|
+
|
1
54
|
### 1.19.1 / 2020-12-02
|
2
55
|
* Fixed:
|
3
56
|
* Bumped the core puppet version to 6.X
|
data/Rakefile
CHANGED
@@ -30,7 +30,7 @@ task :chmod do
|
|
30
30
|
gemspec = File.expand_path( "#{@package}.gemspec", @rakefile_dir ).strip
|
31
31
|
spec = Gem::Specification::load( gemspec )
|
32
32
|
spec.files.each do |file|
|
33
|
-
FileUtils.chmod 'go=r', file
|
33
|
+
FileUtils.chmod 'go=r', file unless File.symlink?(file)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
data/lib/simp/beaker_helpers.rb
CHANGED
@@ -18,6 +18,30 @@ module Simp::BeakerHelpers
|
|
18
18
|
"simp-beaker-helpers-#{t}-#{$$}-#{rand(0x100000000).to_s(36)}.tmp"
|
19
19
|
end
|
20
20
|
|
21
|
+
def install_latest_package_on(sut, package_name, package_source=nil, opts={})
|
22
|
+
default_opts = {
|
23
|
+
max_retries: 3,
|
24
|
+
retry_interval: 10
|
25
|
+
}
|
26
|
+
|
27
|
+
package_source = package_name unless package_source
|
28
|
+
|
29
|
+
if sut.check_for_package(package_name)
|
30
|
+
sut.upgrade_package(
|
31
|
+
package_source,
|
32
|
+
'',
|
33
|
+
default_opts.merge(opts)
|
34
|
+
)
|
35
|
+
else
|
36
|
+
sut.install_package(
|
37
|
+
package_source,
|
38
|
+
'',
|
39
|
+
nil,
|
40
|
+
default_opts.merge(opts)
|
41
|
+
)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
21
45
|
def is_windows?(sut)
|
22
46
|
sut[:platform] =~ /windows/i
|
23
47
|
end
|
@@ -66,6 +90,8 @@ module Simp::BeakerHelpers
|
|
66
90
|
|
67
91
|
if sut[:hypervisor] == 'docker'
|
68
92
|
exclude_list = []
|
93
|
+
opts[:silent] ||= true
|
94
|
+
|
69
95
|
if opts.has_key?(:ignore) && !opts[:ignore].empty?
|
70
96
|
opts[:ignore].each do |value|
|
71
97
|
exclude_list << "--exclude '#{value}'"
|
@@ -114,9 +140,34 @@ module Simp::BeakerHelpers
|
|
114
140
|
|
115
141
|
# use the `puppet fact` face to look up facts on an SUT
|
116
142
|
def pfact_on(sut, fact_name)
|
117
|
-
|
118
|
-
|
119
|
-
facts
|
143
|
+
require 'ostruct'
|
144
|
+
|
145
|
+
# If puppet is not installed, there are no puppet facts to fetch
|
146
|
+
if sut.which('puppet').empty?
|
147
|
+
fact_on(sut, fact_name, :silent => true)
|
148
|
+
else
|
149
|
+
facts_json = nil
|
150
|
+
begin
|
151
|
+
cmd_output = on(sut, 'facter -p --json', :silent => true)
|
152
|
+
|
153
|
+
# Facter 4+
|
154
|
+
raise('skip facter -p') if (cmd_output.stderr =~ /no longer supported/)
|
155
|
+
|
156
|
+
facts = JSON.parse(cmd_output.stdout, object_class: OpenStruct)
|
157
|
+
rescue StandardError
|
158
|
+
# If *anything* fails, we need to fall back to `puppet facts`
|
159
|
+
|
160
|
+
facts_json = on(sut, 'puppet facts find garbage_xxx', :silent => true).stdout
|
161
|
+
facts = JSON.parse(facts_json, object_class: OpenStruct).values
|
162
|
+
end
|
163
|
+
|
164
|
+
found_fact = facts.dig(*(fact_name.split('.')))
|
165
|
+
|
166
|
+
# Fall back to the behavior in fact_on
|
167
|
+
found_fact = '' if found_fact.nil?
|
168
|
+
|
169
|
+
return found_fact
|
170
|
+
end
|
120
171
|
end
|
121
172
|
|
122
173
|
# Returns the modulepath on the SUT, as an Array
|
@@ -294,6 +345,19 @@ module Simp::BeakerHelpers
|
|
294
345
|
pluginsync_on(suts) if opts[:pluginsync]
|
295
346
|
end
|
296
347
|
|
348
|
+
def has_crypto_policies(sut)
|
349
|
+
file_exists_on(sut, '/etc/crypto-policies/config')
|
350
|
+
end
|
351
|
+
|
352
|
+
def munge_ssh_crypto_policies(sut, key_types=['ssh-rsa'])
|
353
|
+
if has_crypto_policies(sut)
|
354
|
+
install_latest_package_on(sut, 'crypto-policies', nil, :accept_all_exit_codes => true)
|
355
|
+
|
356
|
+
# Since we may be doing this prior to having a box flip into FIPS mode, we
|
357
|
+
# need to find and modify *all* of the affected policies
|
358
|
+
on( sut, %{sed --follow-symlinks -i 's/\\(HostKeyAlgorithms\\|PubkeyAcceptedKeyTypes\\)\\(.\\)/\\1\\2#{key_types.join(',')},/g' $( grep -L ssh-rsa $( find /etc/crypto-policies /usr/share/crypto-policies -type f -a \\( -name '*.txt' -o -name '*.config' \\) -exec grep -l PubkeyAcceptedKeyTypes {} \\; ) ) })
|
359
|
+
end
|
360
|
+
end
|
297
361
|
|
298
362
|
# Configure and reboot SUTs into FIPS mode
|
299
363
|
def enable_fips_mode_on( suts = hosts )
|
@@ -347,17 +411,14 @@ module Simp::BeakerHelpers
|
|
347
411
|
on(sut, module_install_cmd)
|
348
412
|
end
|
349
413
|
|
350
|
-
# Enable FIPS and then reboot to finish.
|
351
|
-
on(sut, %(puppet apply --verbose #{fips_enable_modulepath} -e "class { 'fips': enabled => true }"))
|
352
|
-
|
353
414
|
# Work around Vagrant and cipher restrictions in EL8+
|
354
415
|
#
|
355
416
|
# Hopefully, Vagrant will update the used ciphers at some point but who
|
356
417
|
# knows when that will be
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
418
|
+
munge_ssh_crypto_policies(sut)
|
419
|
+
|
420
|
+
# Enable FIPS and then reboot to finish.
|
421
|
+
on(sut, %(puppet apply --verbose #{fips_enable_modulepath} -e "class { 'fips': enabled => true }"))
|
361
422
|
|
362
423
|
sut.reboot
|
363
424
|
end
|
@@ -450,11 +511,57 @@ module Simp::BeakerHelpers
|
|
450
511
|
repo_manifest = repo_manifest + %(\n#{repo_manifest_opts.join(",\n")}) + "\n}\n"
|
451
512
|
end
|
452
513
|
|
514
|
+
# Enable EPEL if appropriate to do so and the system is online
|
515
|
+
#
|
516
|
+
# Can be disabled by setting BEAKER_enable_epel=no
|
517
|
+
def enable_epel_on(sut)
|
518
|
+
if ONLINE && (ENV['BEAKER_stringify_facts'] != 'no')
|
519
|
+
os_info = fact_on(sut, 'os')
|
520
|
+
os_maj_rel = os_info['release']['major']
|
521
|
+
|
522
|
+
# This is based on the official EPEL docs https://fedoraproject.org/wiki/EPEL
|
523
|
+
if ['RedHat', 'CentOS'].include?(os_info['name'])
|
524
|
+
install_latest_package_on(
|
525
|
+
sut,
|
526
|
+
'epel-release',
|
527
|
+
"https://dl.fedoraproject.org/pub/epel/epel-release-latest-#{os_maj_rel}.noarch.rpm",
|
528
|
+
)
|
529
|
+
|
530
|
+
if os_info['name'] == 'RedHat'
|
531
|
+
if os_maj_rel == '7'
|
532
|
+
on sut, %{subscription-manager repos --enable "rhel-*-optional-rpms"}
|
533
|
+
on sut, %{subscription-manager repos --enable "rhel-*-extras-rpms"}
|
534
|
+
on sut, %{subscription-manager repos --enable "rhel-ha-for-rhel-*-server-rpms"}
|
535
|
+
end
|
536
|
+
|
537
|
+
if os_maj_rel == '8'
|
538
|
+
on sut, %{subscription-manager repos --enable "codeready-builder-for-rhel-8-#{os_info['architecture']}-rpms"}
|
539
|
+
end
|
540
|
+
end
|
541
|
+
|
542
|
+
if os_info['name'] == 'CentOS'
|
543
|
+
if os_maj_rel == '8'
|
544
|
+
# 8.0 fallback
|
545
|
+
on sut, %{dnf config-manager --set-enabled powertools || dnf config-manager --set-enabled PowerTools}
|
546
|
+
end
|
547
|
+
end
|
548
|
+
end
|
549
|
+
end
|
550
|
+
end
|
551
|
+
|
552
|
+
def update_package_from_centos_stream(sut, package_name)
|
553
|
+
sut.install_package('centos-release-stream') unless sut.check_for_package('centos-release-stream')
|
554
|
+
install_latest_package_on(sut, package_name)
|
555
|
+
sut.uninstall_package('centos-release-stream')
|
556
|
+
end
|
557
|
+
|
453
558
|
def linux_errata( sut )
|
454
559
|
# We need to be able to flip between server and client without issue
|
455
560
|
on sut, 'puppet resource group puppet gid=52'
|
456
561
|
on sut, 'puppet resource user puppet comment="Puppet" gid="52" uid="52" home="/var/lib/puppet" managehome=true'
|
457
562
|
|
563
|
+
os_info = fact_on(sut, 'os')
|
564
|
+
|
458
565
|
# Make sure we have a domain on our host
|
459
566
|
current_domain = fact_on(sut, 'domain').strip
|
460
567
|
hostname = fact_on(sut, 'hostname').strip
|
@@ -521,8 +628,9 @@ module Simp::BeakerHelpers
|
|
521
628
|
configure_type_defaults_on(sut)
|
522
629
|
end
|
523
630
|
|
524
|
-
if
|
525
|
-
|
631
|
+
if os_info['family'] == 'RedHat'
|
632
|
+
# OS-specific items
|
633
|
+
if os_info['name'] == 'RedHat'
|
526
634
|
RSpec.configure do |c|
|
527
635
|
c.before(:all) do
|
528
636
|
rhel_rhsm_subscribe(sut)
|
@@ -534,18 +642,28 @@ module Simp::BeakerHelpers
|
|
534
642
|
end
|
535
643
|
end
|
536
644
|
|
537
|
-
|
645
|
+
if ['CentOS','RedHat','OracleLinux'].include?(os_info['name'])
|
646
|
+
enable_yum_repos_on(sut)
|
647
|
+
enable_epel_on(sut)
|
538
648
|
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
649
|
+
# net-tools required for netstat utility being used by be_listening
|
650
|
+
if os_info['release']['major'].to_i >= 7
|
651
|
+
pp = <<-EOS
|
652
|
+
package { 'net-tools': ensure => installed }
|
653
|
+
EOS
|
654
|
+
apply_manifest_on(sut, pp, :catch_failures => false)
|
655
|
+
end
|
656
|
+
|
657
|
+
if (os_info['name'] == 'CentOS') && (os_info['release']['major'].to_i >= 8)
|
658
|
+
if os_info['release']['minor'].to_i == 3
|
659
|
+
update_package_from_centos_stream(sut, 'kernel')
|
660
|
+
sut.reboot
|
661
|
+
end
|
662
|
+
end
|
546
663
|
|
547
|
-
|
548
|
-
|
664
|
+
# Clean up YUM prior to starting our test runs.
|
665
|
+
on(sut, 'yum clean all')
|
666
|
+
end
|
549
667
|
end
|
550
668
|
end
|
551
669
|
|
@@ -606,7 +724,7 @@ module Simp::BeakerHelpers
|
|
606
724
|
end
|
607
725
|
|
608
726
|
def sosreport(sut, dest='sosreports')
|
609
|
-
|
727
|
+
install_latest_package_on(sut, 'sos')
|
610
728
|
on(sut, 'sosreport --batch')
|
611
729
|
|
612
730
|
files = on(sut, 'ls /var/tmp/sosreport* /tmp/sosreport* 2>/dev/null', :accept_all_exit_codes => true).output.lines.map(&:strip)
|
@@ -792,18 +910,18 @@ module Simp::BeakerHelpers
|
|
792
910
|
# Need to hash all of the CA certificates so that apps can use them
|
793
911
|
# properly! This must happen on the host itself since it needs to match
|
794
912
|
# the native hashing algorithms.
|
795
|
-
hash_cmd =
|
796
|
-
cd #{sut_pki_dir}/cacerts; \
|
797
|
-
for x in *; do \
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
done
|
806
|
-
|
913
|
+
hash_cmd = <<~EOM.strip
|
914
|
+
cd #{sut_pki_dir}/cacerts; \
|
915
|
+
for x in *; do \
|
916
|
+
if [ ! -h "$x" ]; then \
|
917
|
+
`openssl x509 -in $x >/dev/null 2>&1`; \
|
918
|
+
if [ $? -eq 0 ]; then \
|
919
|
+
hash=`openssl x509 -in $x -hash | head -1`; \
|
920
|
+
ln -sf $x $hash.0; \
|
921
|
+
fi; \
|
922
|
+
fi; \
|
923
|
+
done
|
924
|
+
EOM
|
807
925
|
|
808
926
|
on(sut, hash_cmd)
|
809
927
|
end
|
@@ -980,7 +1098,7 @@ done
|
|
980
1098
|
# @returns [String] Path to the Hieradata directory on the target system
|
981
1099
|
def hiera_datadir(sut)
|
982
1100
|
# This output lets us know where Hiera is configured to look on the system
|
983
|
-
puppet_lookup_info = on(sut, 'puppet lookup --explain test__simp__test').output.strip.lines
|
1101
|
+
puppet_lookup_info = on(sut, 'puppet lookup --explain test__simp__test', :silent => true).output.strip.lines
|
984
1102
|
|
985
1103
|
if sut.puppet_configprint['manifest'].nil? || sut.puppet_configprint['manifest'].empty?
|
986
1104
|
fail("No output returned from `puppet config print manifest` on #{sut}")
|
@@ -1218,13 +1336,12 @@ done
|
|
1218
1336
|
def install_simp_repos(sut, disable = [])
|
1219
1337
|
# NOTE: Do *NOT* use puppet in this method since it may not be available yet
|
1220
1338
|
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
end
|
1339
|
+
install_latest_package_on(sut, 'yum-utils')
|
1340
|
+
install_latest_package_on(
|
1341
|
+
sut,
|
1342
|
+
'simp-release-community',
|
1343
|
+
"https://download.simp-project.com/simp-release-community.rpm",
|
1344
|
+
)
|
1228
1345
|
|
1229
1346
|
to_disable = disable.dup
|
1230
1347
|
|
@@ -17,7 +17,11 @@ module Simp::BeakerHelpers
|
|
17
17
|
require 'open-uri'
|
18
18
|
|
19
19
|
begin
|
20
|
-
|
20
|
+
if URI.respond_to?(:open)
|
21
|
+
ONLINE = true if URI.open('http://google.com')
|
22
|
+
else
|
23
|
+
ONLINE = true if open('http://google.com')
|
24
|
+
end
|
21
25
|
rescue
|
22
26
|
ONLINE = false
|
23
27
|
end
|
@@ -6,21 +6,27 @@
|
|
6
6
|
end
|
7
7
|
-%>
|
8
8
|
HOSTS:
|
9
|
-
|
9
|
+
el7:
|
10
10
|
roles:
|
11
|
-
- server
|
12
|
-
- master
|
13
|
-
- default
|
14
11
|
- el7
|
12
|
+
- master
|
15
13
|
platform: el-7-x86_64
|
16
14
|
box: centos/7
|
17
15
|
hypervisor: <%= hypervisor %>
|
18
16
|
|
19
|
-
|
17
|
+
el8:
|
18
|
+
roles:
|
19
|
+
- el8
|
20
|
+
platform: el-8-x86_64
|
21
|
+
box: centos/8
|
22
|
+
hypervisor: <%= hypervisor %>
|
23
|
+
|
24
|
+
el8-0:
|
20
25
|
roles:
|
21
26
|
- el8
|
22
27
|
platform: el-8-x86_64
|
23
28
|
box: centos/8
|
29
|
+
box_version: "1905.1"
|
24
30
|
hypervisor: <%= hypervisor %>
|
25
31
|
|
26
32
|
CONFIG:
|
@@ -30,3 +36,14 @@ CONFIG:
|
|
30
36
|
<% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
|
31
37
|
puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
|
32
38
|
<% end -%>
|
39
|
+
ssh:
|
40
|
+
keepalive: true
|
41
|
+
keepalive_interval: 10
|
42
|
+
host_key:
|
43
|
+
- <%= Net::SSH::Transport::Algorithms::ALGORITHMS[:host_key].join("\n#{' '*6}- ") %>
|
44
|
+
kex:
|
45
|
+
- <%= Net::SSH::Transport::Algorithms::ALGORITHMS[:kex].join("\n#{' '*6}- ") %>
|
46
|
+
encryption:
|
47
|
+
- <%= Net::SSH::Transport::Algorithms::ALGORITHMS[:encryption].join("\n#{' '*6}- ") %>
|
48
|
+
hmac:
|
49
|
+
- <%= Net::SSH::Transport::Algorithms::ALGORITHMS[:hmac].join("\n#{' '*6}- ") %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%
|
2
|
+
if ENV['BEAKER_HYPERVISOR']
|
3
|
+
hypervisor = ENV['BEAKER_HYPERVISOR']
|
4
|
+
else
|
5
|
+
hypervisor = 'vagrant'
|
6
|
+
end
|
7
|
+
-%>
|
8
|
+
HOSTS:
|
9
|
+
focal:
|
10
|
+
platform: ubuntu-20.04-x86_64
|
11
|
+
box: ubuntu/focal64
|
12
|
+
hypervisor: <%= hypervisor %>
|
13
|
+
|
14
|
+
CONFIG:
|
15
|
+
log_level: verbose
|
16
|
+
type: aio
|
17
|
+
vagrant_memsize: 256
|
18
|
+
<% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
|
19
|
+
puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
|
20
|
+
<% end -%>
|
@@ -8,15 +8,33 @@ context 'after copy_fixture_modules_to( hosts )' do
|
|
8
8
|
|
9
9
|
describe "fact_on(master,'root_home')" do
|
10
10
|
it 'should not return value of `root_home`' do
|
11
|
-
|
12
|
-
expect( fact ).to eq ''
|
11
|
+
expect(fact_on(master, 'root_home')).to eq ''
|
13
12
|
end
|
14
13
|
end
|
15
14
|
|
16
15
|
describe "pfact_on(master,'root_home')" do
|
17
16
|
it 'should return value of `root_home`' do
|
18
|
-
|
19
|
-
|
17
|
+
expect(pfact_on(master, 'root_home')).to eq '/root'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "pfact_on(master,'os.release.major')" do
|
22
|
+
it 'should return the value of `os.release.major`' do
|
23
|
+
expect(pfact_on(master, 'os.release.major')).to match(/.+/)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "pfact_on(master,'os.release.foo')" do
|
28
|
+
it 'should not return the value of `os.release.foo`' do
|
29
|
+
expect(pfact_on(master, 'os.release.foo')).to eq ''
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "pfact_on(master,'fips_enabled')" do
|
34
|
+
expected = (ENV['BEAKER_fips'] == 'yes')
|
35
|
+
|
36
|
+
it 'should return false' do
|
37
|
+
expect(pfact_on(master, 'fips_enabled')).to eq expected
|
20
38
|
end
|
21
39
|
end
|
22
40
|
end
|
@@ -103,8 +103,21 @@ describe 'Simp::BeakerHelpers' do
|
|
103
103
|
end
|
104
104
|
|
105
105
|
it 'uses defaults when no environment variables are set' do
|
106
|
-
|
107
|
-
|
106
|
+
|
107
|
+
# Prevent namespace pollution
|
108
|
+
pipe_out,pipe_in = IO.pipe
|
109
|
+
fork do
|
110
|
+
pipe_out.close
|
111
|
+
require 'puppet'
|
112
|
+
pipe_in.write(Puppet.version)
|
113
|
+
end
|
114
|
+
pipe_in.close
|
115
|
+
|
116
|
+
expected_version = pipe_out.gets
|
117
|
+
expected_major_version = expected_version.split('.').first
|
118
|
+
|
119
|
+
expect( @helper.get_puppet_install_info[:puppet_install_version] ).to match(expected_version)
|
120
|
+
expect( @helper.get_puppet_install_info[:puppet_collection] ).to eq("puppet#{expected_major_version}")
|
108
121
|
expect( @helper.get_puppet_install_info[:puppet_install_type] ).to eq('agent')
|
109
122
|
end
|
110
123
|
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simp-beaker-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.21.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Tessmer
|
8
8
|
- Trevor Vaughan
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-01-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: beaker
|
@@ -188,6 +188,7 @@ files:
|
|
188
188
|
- lib/simp/rake/beaker.rb
|
189
189
|
- simp-beaker-helpers.gemspec
|
190
190
|
- spec/acceptance/nodesets/default.yml
|
191
|
+
- spec/acceptance/nodesets/ubuntu.yml
|
191
192
|
- spec/acceptance/suites/default/check_puppet_version_spec.rb
|
192
193
|
- spec/acceptance/suites/default/enable_fips_spec.rb
|
193
194
|
- spec/acceptance/suites/default/fixture_modules_spec.rb
|
@@ -220,7 +221,7 @@ licenses:
|
|
220
221
|
- Apache-2.0
|
221
222
|
metadata:
|
222
223
|
issue_tracker: https://simp-project.atlassian.net
|
223
|
-
post_install_message:
|
224
|
+
post_install_message:
|
224
225
|
rdoc_options: []
|
225
226
|
require_paths:
|
226
227
|
- lib
|
@@ -235,8 +236,37 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
235
236
|
- !ruby/object:Gem::Version
|
236
237
|
version: '0'
|
237
238
|
requirements: []
|
238
|
-
rubygems_version: 3.0.
|
239
|
-
signing_key:
|
239
|
+
rubygems_version: 3.0.9
|
240
|
+
signing_key:
|
240
241
|
specification_version: 4
|
241
242
|
summary: beaker helper methods for SIMP
|
242
|
-
test_files:
|
243
|
+
test_files:
|
244
|
+
- spec/acceptance/nodesets/default.yml
|
245
|
+
- spec/acceptance/nodesets/ubuntu.yml
|
246
|
+
- spec/acceptance/suites/default/check_puppet_version_spec.rb
|
247
|
+
- spec/acceptance/suites/default/enable_fips_spec.rb
|
248
|
+
- spec/acceptance/suites/default/fixture_modules_spec.rb
|
249
|
+
- spec/acceptance/suites/default/install_simp_deps_repo_spec.rb
|
250
|
+
- spec/acceptance/suites/default/nodesets
|
251
|
+
- spec/acceptance/suites/default/pki_tests_spec.rb
|
252
|
+
- spec/acceptance/suites/default/set_hieradata_on_spec.rb
|
253
|
+
- spec/acceptance/suites/default/write_hieradata_to_spec.rb
|
254
|
+
- spec/acceptance/suites/fips_from_fixtures/00_default_spec.rb
|
255
|
+
- spec/acceptance/suites/fips_from_fixtures/metadata.yml
|
256
|
+
- spec/acceptance/suites/fips_from_fixtures/nodesets
|
257
|
+
- spec/acceptance/suites/offline/00_default_spec.rb
|
258
|
+
- spec/acceptance/suites/offline/README
|
259
|
+
- spec/acceptance/suites/offline/nodesets/default.yml
|
260
|
+
- spec/acceptance/suites/puppet_collections/00_default_spec.rb
|
261
|
+
- spec/acceptance/suites/puppet_collections/metadata.yml
|
262
|
+
- spec/acceptance/suites/snapshot/00_snapshot_test_spec.rb
|
263
|
+
- spec/acceptance/suites/snapshot/10_general_usage_spec.rb
|
264
|
+
- spec/acceptance/suites/snapshot/nodesets
|
265
|
+
- spec/acceptance/suites/windows/00_default_spec.rb
|
266
|
+
- spec/acceptance/suites/windows/metadata.yml
|
267
|
+
- spec/acceptance/suites/windows/nodesets/default.yml
|
268
|
+
- spec/acceptance/suites/windows/nodesets/win2016.yml
|
269
|
+
- spec/acceptance/suites/windows/nodesets/win2019.yml
|
270
|
+
- spec/lib/simp/beaker_helpers_spec.rb
|
271
|
+
- spec/spec_helper.rb
|
272
|
+
- spec/spec_helper_acceptance.rb
|