simp-beaker-helpers 1.19.3 → 1.21.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9eede146380997a5256ef8fc379350b7b2b44e5a4a1156e5a14f13a5be0d396d
4
- data.tar.gz: 31345b9736832c517f96e327dd18ddaca39c9eb72b0d94b9b56e83344f83d645
3
+ metadata.gz: 876c4f6b1c6dfe6c9230d0c127e6dabdd3cc77c372e0d6def7e42606ecd35cc6
4
+ data.tar.gz: 062201bba85a2199e442d907b30aae6e2674db29de2c21c7bc49e5ef5dd7c117
5
5
  SHA512:
6
- metadata.gz: 89e30957c049a514d97f58e99f2668682fa956e7a43a7414e69dff18d58f9af2f7ac2bf715ba72af97ffe6cdf93630dc3eeb68a45096b07adad069a907abaa93
7
- data.tar.gz: 004cf046d60282beeecc534f39b45d4398cf4b35bccc0b9e46a6cdddf260cd2fd222ebb796e66e10f6cd9e518b7b806584716ccc0eb8734ff2c00181a3a53748
6
+ metadata.gz: 8469baf544e003f9450a6c0b5639a2112c36961846e06faf6222878b5a1f0d6eb5663fd3c921d6b2117174cfdcf74863da67c40364c34a3818a5eb1204a94901
7
+ data.tar.gz: 2810e22a457f9daf3d91e355d2ead18e1b3dd5aaecbebc8f516930968cc937b1a9322750d305591db47d3f2d0d25cd8895c9189c16ee71f9505756eb447015b0
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .fips_fixtures.yml
1
2
  *.gem
2
3
  *.swp
3
4
  Gemfile.lock
@@ -97,28 +97,25 @@ variables:
97
97
  changes:
98
98
  - .gitlab-ci.yml
99
99
  - .fixtures.yml
100
+ - .rspec
101
+ - metadata.json
100
102
  - "spec/spec_helper.rb"
101
- - "spec/{classes,unit,defines,type_aliases,types,hosts}/**/*.rb"
102
- - "{manifests,files,types}/**/*"
103
- - "templates/*.{erb,epp}"
104
- - "lib/**/*"
103
+ - "spec/{classes,unit,defines,type_aliases,types,hosts,lib}/**/*.rb"
104
+ - "{SIMP,data,manifests,files,types,lib}/**/*"
105
+ - "templates/**/*.{erb,epp}"
105
106
  - "Gemfile"
106
- - "SIMP/**/*"
107
- - "data/**/*"
108
107
  exists:
109
- - "spec/{classes,unit,defines,type_aliases,types,hosts}/**/*_spec.rb"
108
+ - "spec/{classes,unit,defines,type_aliases,types,hosts,lib}/**/*_spec.rb"
110
109
 
111
110
  .relevant_file_conditions_trigger_acceptance_tests: &relevant_file_conditions_trigger_acceptance_tests
112
111
  changes:
113
112
  - .gitlab-ci.yml
113
+ - .fixtures.yml
114
114
  - "spec/spec_helper_acceptance.rb"
115
115
  - "spec/acceptance/**/*"
116
- - "{manifests,files,types}/**/*"
117
- - "templates/*.{erb,epp}"
118
- - "lib/**/*"
116
+ - "{SIMP,data,manifests,files,types,lib}/**/*"
117
+ - "templates/**/*.{erb,epp}"
119
118
  - "Gemfile"
120
- - "SIMP/**/*"
121
- - "data/**/*"
122
119
  exists:
123
120
  - "spec/acceptance/**/*_spec.rb"
124
121
 
@@ -286,21 +283,14 @@ variables:
286
283
  pup5-unit:
287
284
  <<: *pup_5
288
285
  <<: *unit_tests
289
- <<: *with_SIMP_SPEC_MATRIX_LEVEL_2
290
286
 
291
287
  pup6-unit:
292
288
  <<: *pup_6
293
289
  <<: *unit_tests
294
- <<: *with_SIMP_SPEC_MATRIX_LEVEL_2
295
-
296
- pup6.18.0-unit:
297
- <<: *pup_6_18_0
298
- <<: *unit_tests
299
290
 
300
291
  pup7-unit:
301
292
  <<: *pup_7
302
293
  <<: *unit_tests
303
- <<: *with_SIMP_SPEC_MATRIX_LEVEL_2
304
294
 
305
295
  # ------------------------------------------------------------------------------
306
296
  # NOTICE: **This file is maintained with puppetsync**
@@ -312,6 +302,26 @@ pup7-unit:
312
302
  # Repo-specific content
313
303
  # ==============================================================================
314
304
 
305
+ #=======================================================================
306
+ # Packaging test
307
+
308
+ pup5-pkg:
309
+ <<: *pup_5
310
+ <<: *unit_tests
311
+ script:
312
+ 'bundle exec rake pkg:gem'
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'
315
325
 
316
326
  #=======================================================================
317
327
  # Acceptance tests
@@ -1,3 +1,54 @@
1
+ ### 1.21.3 / 2021-01-20
2
+ * Fixed:
3
+ * Allow all methods that can safely take SUT arrays to do so
4
+ * Ensure that pfact_on returns a Hash if appropriate
5
+ * Fix container support in copy_to
6
+ * Added:
7
+ * Explicitly support podman local and remote in copy_to
8
+
9
+ ### 1.21.2 / 2021-01-15
10
+ * Fixed version mismatch. 1.21.1 was tagged with an incorrect version
11
+ in version.rb.
12
+
13
+ ### 1.21.1 / 2021-01-13
14
+ * Added:
15
+ * update_package_from_centos_stream method
16
+ * install_latest_package_on method
17
+ * Fixed:
18
+ * Removed some of the extraneous calls to facter
19
+ * Automatically pull the CentOS 8 kernel to the latest version in
20
+ CentOS-Stream to work around issues on FIPS systems
21
+
22
+ ### 1.20.1 / 2021-01-08
23
+ * Fixed:
24
+ * Ensure that yum calls commands appropriately depending on whether or not
25
+ packages are already installed.
26
+ * Also change all HostKeyAlgorithms settings for SSH connections
27
+
28
+ ### 1.20.0 / 2021-01-05
29
+ * Added:
30
+ * A `enable_epel_on` function that follows the instructions on the EPEL
31
+ website to properly enable EPEL on hosts. May be disabled using
32
+ `BEAKER_enable_epel=no`.
33
+ * An Ubuntu nodeset to make sure our default settings don't destroy other
34
+ Linux systems.
35
+ * Added has_crypto_policies method for determining if crypto policies are
36
+ present on the SUT
37
+ * Added munge_ssh_crypto_policies to allow vagrant to SSH back into systems
38
+ with restrictive crypto policies (usually FIPS)
39
+ * Fixed:
40
+ * Modify all crypto-policy backend files to support ssh-rsa keys
41
+ * Try harder when doing yum installations
42
+
43
+ ### 1.19.4 / 2021-01-05
44
+ * Fixed:
45
+ * Only return a default empty string when `pfact_on` finds a `nil` value
46
+ * Added an acceptance test to validate this
47
+ * Ensure that we start with `facter -p` for `facter` < 4.0 and continue to
48
+ `puppet facts` otherwise
49
+ * Updated the Rakefile to skip symlinks in chmods which fixes the ability to
50
+ build gems
51
+
1
52
  ### 1.19.3 / 2021-01-01
2
53
  * Fixed:
3
54
  * Ensure that `pfact_on` can handle fact dot notation
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
 
@@ -18,6 +18,33 @@ 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(suts, package_name, package_source=nil, opts={})
22
+ default_opts = {
23
+ max_retries: 3,
24
+ retry_interval: 10
25
+ }
26
+
27
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
28
+ block_on(suts, :run_in_parallel => parallel) do |sut|
29
+ package_source = package_name unless package_source
30
+
31
+ if sut.check_for_package(package_name)
32
+ sut.upgrade_package(
33
+ package_source,
34
+ '',
35
+ default_opts.merge(opts)
36
+ )
37
+ else
38
+ sut.install_package(
39
+ package_source,
40
+ '',
41
+ nil,
42
+ default_opts.merge(opts)
43
+ )
44
+ end
45
+ end
46
+ end
47
+
21
48
  def is_windows?(sut)
22
49
  sut[:platform] =~ /windows/i
23
50
  end
@@ -80,7 +107,30 @@ module Simp::BeakerHelpers
80
107
  else
81
108
  container_id = sut.host_hash[:docker_container_id]
82
109
  end
83
- %x(tar #{exclude_list.join(' ')} -hcf - -C "#{File.dirname(src)}" "#{File.basename(src)}" | docker exec -i "#{container_id}" tar -C "#{dest}" -xf -)
110
+
111
+ if ENV['BEAKER_docker_cmd']
112
+ docker_cmd = ENV['BEAKER_docker_cmd']
113
+ else
114
+ docker_cmd = 'docker'
115
+
116
+ if ::Docker.version['Components'].any?{|x| x['Name'] =~ /podman/i}
117
+ docker_cmd = 'podman'
118
+
119
+ if ENV['CONTAINER_HOST']
120
+ docker_cmd = 'podman --remote'
121
+ elsif ENV['DOCKER_HOST']
122
+ docker_cmd = "podman --remote --url=#{ENV['DOCKER_HOST']}"
123
+ end
124
+ end
125
+ end
126
+
127
+ unless directory_exists_on(sut, dest)
128
+ dest = File.dirname(dest)
129
+ sut.mkdir_p(dest)
130
+ end
131
+
132
+ %x(tar #{exclude_list.join(' ')} -hcf - -C "#{File.dirname(src)}" "#{File.basename(src)}" | #{docker_cmd} exec -i "#{container_id}" tar -C "#{dest}" -xf -)
133
+
84
134
  elsif rsync_functional_on?(sut)
85
135
  # This makes rsync_to work like beaker and scp usually do
86
136
  exclude_hack = %(__-__' -L --exclude '__-__)
@@ -118,13 +168,35 @@ module Simp::BeakerHelpers
118
168
  def pfact_on(sut, fact_name)
119
169
  require 'ostruct'
120
170
 
171
+ found_fact = nil
172
+ # If puppet is not installed, there are no puppet facts to fetch
121
173
  if sut.which('puppet').empty?
122
- fact_on(sut, fact_name, :silent => true)
174
+ found_fact = fact_on(sut, fact_name)
123
175
  else
124
- facts_json = on(sut,'puppet facts find garbage_xxx', :silent => true).stdout
125
- facts = JSON.parse(facts_json, object_class: OpenStruct).values
126
- facts.dig(*(fact_name.split('.'))) || ''
176
+ facts_json = nil
177
+ begin
178
+ cmd_output = on(sut, 'facter -p --json', :silent => true)
179
+
180
+ # Facter 4+
181
+ raise('skip facter -p') if (cmd_output.stderr =~ /no longer supported/)
182
+
183
+ facts = JSON.parse(cmd_output.stdout, object_class: OpenStruct)
184
+ rescue StandardError
185
+ # If *anything* fails, we need to fall back to `puppet facts`
186
+
187
+ facts_json = on(sut, 'puppet facts find garbage_xxx', :silent => true).stdout
188
+ facts = JSON.parse(facts_json, object_class: OpenStruct).values
189
+ end
190
+
191
+ found_fact = facts.dig(*(fact_name.split('.')))
192
+
193
+ # If we did not find a fact, we should use the upstream function since
194
+ # puppet may be installed via a gem or through some other means.
195
+ found_fact = fact_on(sut, fact_name) if found_fact.nil?
127
196
  end
197
+
198
+ # Ensure that Hashes return as Hash objects
199
+ found_fact.is_a?(OpenStruct) ? found_fact.marshal_dump : found_fact
128
200
  end
129
201
 
130
202
  # Returns the modulepath on the SUT, as an Array
@@ -302,6 +374,22 @@ module Simp::BeakerHelpers
302
374
  pluginsync_on(suts) if opts[:pluginsync]
303
375
  end
304
376
 
377
+ def has_crypto_policies(sut)
378
+ file_exists_on(sut, '/etc/crypto-policies/config')
379
+ end
380
+
381
+ def munge_ssh_crypto_policies(suts, key_types=['ssh-rsa'])
382
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
383
+ block_on(suts, :run_in_parallel => parallel) do |sut|
384
+ if has_crypto_policies(sut)
385
+ install_latest_package_on(sut, 'crypto-policies', nil, :accept_all_exit_codes => true)
386
+
387
+ # Since we may be doing this prior to having a box flip into FIPS mode, we
388
+ # need to find and modify *all* of the affected policies
389
+ 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 {} \\; ) ) })
390
+ end
391
+ end
392
+ end
305
393
 
306
394
  # Configure and reboot SUTs into FIPS mode
307
395
  def enable_fips_mode_on( suts = hosts )
@@ -309,7 +397,10 @@ module Simp::BeakerHelpers
309
397
  puts ' -- (use BEAKER_fips=no to disable)'
310
398
  parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
311
399
 
400
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
312
401
  block_on(suts, :run_in_parallel => parallel) do |sut|
402
+ next if sut[:hypervisor] == 'docker'
403
+
313
404
  if is_windows?(sut)
314
405
  puts " -- SKIPPING #{sut} because it is windows"
315
406
  next
@@ -355,17 +446,14 @@ module Simp::BeakerHelpers
355
446
  on(sut, module_install_cmd)
356
447
  end
357
448
 
358
- # Enable FIPS and then reboot to finish.
359
- on(sut, %(puppet apply --verbose #{fips_enable_modulepath} -e "class { 'fips': enabled => true }"))
360
-
361
449
  # Work around Vagrant and cipher restrictions in EL8+
362
450
  #
363
451
  # Hopefully, Vagrant will update the used ciphers at some point but who
364
452
  # knows when that will be
365
- opensshserver_config = '/etc/crypto-policies/back-ends/opensshserver.config'
366
- if file_exists_on(sut, opensshserver_config)
367
- on(sut, "sed --follow-symlinks -i 's/PubkeyAcceptedKeyTypes=/PubkeyAcceptedKeyTypes=ssh-rsa,/' #{opensshserver_config}")
368
- end
453
+ munge_ssh_crypto_policies(sut)
454
+
455
+ # Enable FIPS and then reboot to finish.
456
+ on(sut, %(puppet apply --verbose #{fips_enable_modulepath} -e "class { 'fips': enabled => true }"))
369
457
 
370
458
  sut.reboot
371
459
  end
@@ -458,102 +546,171 @@ module Simp::BeakerHelpers
458
546
  repo_manifest = repo_manifest + %(\n#{repo_manifest_opts.join(",\n")}) + "\n}\n"
459
547
  end
460
548
 
461
- def linux_errata( sut )
462
- # We need to be able to flip between server and client without issue
463
- on sut, 'puppet resource group puppet gid=52'
464
- on sut, 'puppet resource user puppet comment="Puppet" gid="52" uid="52" home="/var/lib/puppet" managehome=true'
465
-
466
- # Make sure we have a domain on our host
467
- current_domain = fact_on(sut, 'domain').strip
468
- hostname = fact_on(sut, 'hostname').strip
469
-
470
- if current_domain.empty?
471
- new_fqdn = hostname + '.beaker.test'
549
+ # Enable EPEL if appropriate to do so and the system is online
550
+ #
551
+ # Can be disabled by setting BEAKER_enable_epel=no
552
+ def enable_epel_on(suts)
553
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
554
+ block_on(suts, :run_in_parallel => parallel) do |sut|
555
+ if ONLINE && (ENV['BEAKER_stringify_facts'] != 'no')
556
+ os_info = fact_on(sut, 'os')
557
+ os_maj_rel = os_info['release']['major']
558
+
559
+ # This is based on the official EPEL docs https://fedoraproject.org/wiki/EPEL
560
+ if ['RedHat', 'CentOS'].include?(os_info['name'])
561
+ install_latest_package_on(
562
+ sut,
563
+ 'epel-release',
564
+ "https://dl.fedoraproject.org/pub/epel/epel-release-latest-#{os_maj_rel}.noarch.rpm",
565
+ )
566
+
567
+ if os_info['name'] == 'RedHat'
568
+ if os_maj_rel == '7'
569
+ on sut, %{subscription-manager repos --enable "rhel-*-optional-rpms"}
570
+ on sut, %{subscription-manager repos --enable "rhel-*-extras-rpms"}
571
+ on sut, %{subscription-manager repos --enable "rhel-ha-for-rhel-*-server-rpms"}
572
+ end
472
573
 
473
- on(sut, "sed -i 's/#{hostname}.*/#{new_fqdn} #{hostname}/' /etc/hosts")
474
- on(sut, "echo '#{new_fqdn}' > /etc/hostname", :accept_all_exit_codes => true)
475
- on(sut, "hostname #{new_fqdn}", :accept_all_exit_codes => true)
574
+ if os_maj_rel == '8'
575
+ on sut, %{subscription-manager repos --enable "codeready-builder-for-rhel-8-#{os_info['architecture']}-rpms"}
576
+ end
577
+ end
476
578
 
477
- if sut.file_exist?('/etc/sysconfig/network')
478
- on(sut, "sed -s '/HOSTNAME=/d' /etc/sysconfig/network")
479
- on(sut, "echo 'HOSTNAME=#{new_fqdn}' >> /etc/sysconfig/network")
579
+ if os_info['name'] == 'CentOS'
580
+ if os_maj_rel == '8'
581
+ # 8.0 fallback
582
+ install_latest_package_on(sut, 'dnf-plugins-core')
583
+ on sut, %{dnf config-manager --set-enabled powertools || dnf config-manager --set-enabled PowerTools}
584
+ end
585
+ end
586
+ end
480
587
  end
481
588
  end
589
+ end
482
590
 
483
- if fact_on(sut, 'domain').strip.empty?
484
- fail("Error: hosts must have an FQDN, got domain='#{current_domain}'")
591
+ def update_package_from_centos_stream(suts, package_name)
592
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
593
+ block_on(suts, :run_in_parallel => parallel) do |sut|
594
+ sut.install_package('centos-release-stream') unless sut.check_for_package('centos-release-stream')
595
+ install_latest_package_on(sut, package_name)
596
+ sut.uninstall_package('centos-release-stream')
485
597
  end
598
+ end
486
599
 
487
- # This may not exist in docker so just skip the whole thing
488
- if sut.file_exist?('/etc/ssh')
489
- # SIMP uses a central ssh key location so we prep that spot in case we
490
- # flip to the SIMP SSH module.
491
- on(sut, 'mkdir -p /etc/ssh/local_keys')
492
- on(sut, 'chown -R root:root /etc/ssh/local_keys')
493
- on(sut, 'chmod 755 /etc/ssh/local_keys')
494
-
495
- user_info = on(sut, 'getent passwd').stdout.lines
496
-
497
- # Hash of user => home_dir
498
- # Exclude silly directories
499
- # * /
500
- # * /dev/*
501
- # * /s?bin
502
- # * /proc
503
- user_info = Hash[
504
- user_info.map do |u|
505
- u.strip!
506
- u = u.split(':')
507
- u[5] =~ %r{^(/|/dev/.*|/s?bin/?.*|/proc/?.*)$} ? [nil] : [u[0], u[5]]
508
- end
509
- ]
600
+ def linux_errata( suts )
601
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
602
+ block_on(suts, :run_in_parallel => parallel) do |sut|
603
+ # We need to be able to flip between server and client without issue
604
+ on sut, 'puppet resource group puppet gid=52'
605
+ on sut, 'puppet resource user puppet comment="Puppet" gid="52" uid="52" home="/var/lib/puppet" managehome=true'
510
606
 
511
- user_info.keys.each do |user|
512
- src_file = "#{user_info[user]}/.ssh/authorized_keys"
513
- tgt_file = "/etc/ssh/local_keys/#{user}"
607
+ os_info = fact_on(sut, 'os')
514
608
 
515
- on(sut, %{if [ -f "#{src_file}" ]; then cp -a -f "#{src_file}" "#{tgt_file}" && chmod 644 "#{tgt_file}"; fi}, :silent => true)
516
- end
517
- end
609
+ # Make sure we have a domain on our host
610
+ current_domain = fact_on(sut, 'domain').strip
611
+ hostname = fact_on(sut, 'hostname').strip
518
612
 
519
- # SIMP uses structured facts, therefore stringify_facts must be disabled
520
- unless ENV['BEAKER_stringify_facts'] == 'yes'
521
- on sut, 'puppet config set stringify_facts false'
522
- end
613
+ if current_domain.empty?
614
+ new_fqdn = hostname + '.beaker.test'
523
615
 
524
- # Occasionally we run across something similar to BKR-561, so to ensure we
525
- # at least have the host defaults:
526
- #
527
- # :hieradatadir is used as a canary here; it isn't the only missing key
528
- unless sut.host_hash.key? :hieradatadir
529
- configure_type_defaults_on(sut)
530
- end
616
+ on(sut, "sed -i 's/#{hostname}.*/#{new_fqdn} #{hostname}/' /etc/hosts")
617
+ on(sut, "echo '#{new_fqdn}' > /etc/hostname", :accept_all_exit_codes => true)
618
+ on(sut, "hostname #{new_fqdn}", :accept_all_exit_codes => true)
531
619
 
532
- if fact_on(sut, 'osfamily') == 'RedHat'
533
- if fact_on(sut, 'operatingsystem') == 'RedHat'
534
- RSpec.configure do |c|
535
- c.before(:all) do
536
- rhel_rhsm_subscribe(sut)
537
- end
620
+ if sut.file_exist?('/etc/sysconfig/network')
621
+ on(sut, "sed -s '/HOSTNAME=/d' /etc/sysconfig/network")
622
+ on(sut, "echo 'HOSTNAME=#{new_fqdn}' >> /etc/sysconfig/network")
623
+ end
624
+ end
538
625
 
539
- c.after(:all) do
540
- rhel_rhsm_unsubscribe(sut)
626
+ if fact_on(sut, 'domain').strip.empty?
627
+ fail("Error: hosts must have an FQDN, got domain='#{current_domain}'")
628
+ end
629
+
630
+ # This may not exist in docker so just skip the whole thing
631
+ if sut.file_exist?('/etc/ssh')
632
+ # SIMP uses a central ssh key location so we prep that spot in case we
633
+ # flip to the SIMP SSH module.
634
+ on(sut, 'mkdir -p /etc/ssh/local_keys')
635
+ on(sut, 'chown -R root:root /etc/ssh/local_keys')
636
+ on(sut, 'chmod 755 /etc/ssh/local_keys')
637
+
638
+ user_info = on(sut, 'getent passwd').stdout.lines
639
+
640
+ # Hash of user => home_dir
641
+ # Exclude silly directories
642
+ # * /
643
+ # * /dev/*
644
+ # * /s?bin
645
+ # * /proc
646
+ user_info = Hash[
647
+ user_info.map do |u|
648
+ u.strip!
649
+ u = u.split(':')
650
+ u[5] =~ %r{^(/|/dev/.*|/s?bin/?.*|/proc/?.*)$} ? [nil] : [u[0], u[5]]
541
651
  end
652
+ ]
653
+
654
+ user_info.keys.each do |user|
655
+ src_file = "#{user_info[user]}/.ssh/authorized_keys"
656
+ tgt_file = "/etc/ssh/local_keys/#{user}"
657
+
658
+ on(sut, %{if [ -f "#{src_file}" ]; then cp -a -f "#{src_file}" "#{tgt_file}" && chmod 644 "#{tgt_file}"; fi}, :silent => true)
542
659
  end
543
660
  end
544
661
 
545
- enable_yum_repos_on(sut)
662
+ # SIMP uses structured facts, therefore stringify_facts must be disabled
663
+ unless ENV['BEAKER_stringify_facts'] == 'yes'
664
+ on sut, 'puppet config set stringify_facts false'
665
+ end
546
666
 
547
- # net-tools required for netstat utility being used by be_listening
548
- if fact_on(sut, 'operatingsystemmajrelease') == '7'
549
- pp = <<-EOS
550
- package { 'net-tools': ensure => installed }
551
- EOS
552
- apply_manifest_on(sut, pp, :catch_failures => false)
667
+ # Occasionally we run across something similar to BKR-561, so to ensure we
668
+ # at least have the host defaults:
669
+ #
670
+ # :hieradatadir is used as a canary here; it isn't the only missing key
671
+ unless sut.host_hash.key? :hieradatadir
672
+ configure_type_defaults_on(sut)
553
673
  end
554
674
 
555
- # Clean up YUM prior to starting our test runs.
556
- on(sut, 'yum clean all')
675
+ if os_info['family'] == 'RedHat'
676
+ # OS-specific items
677
+ if os_info['name'] == 'RedHat'
678
+ RSpec.configure do |c|
679
+ c.before(:all) do
680
+ rhel_rhsm_subscribe(sut)
681
+ end
682
+
683
+ c.after(:all) do
684
+ rhel_rhsm_unsubscribe(sut)
685
+ end
686
+ end
687
+ end
688
+
689
+ if ['CentOS','RedHat','OracleLinux'].include?(os_info['name'])
690
+ enable_yum_repos_on(sut)
691
+ enable_epel_on(sut)
692
+
693
+ # net-tools required for netstat utility being used by be_listening
694
+ if os_info['release']['major'].to_i >= 7
695
+ pp = <<-EOS
696
+ package { 'net-tools': ensure => installed }
697
+ EOS
698
+ apply_manifest_on(sut, pp, :catch_failures => false)
699
+ end
700
+
701
+ unless sut[:hypervisor] == 'docker'
702
+ if (os_info['name'] == 'CentOS') && (os_info['release']['major'].to_i >= 8)
703
+ if os_info['release']['minor'].to_i == 3
704
+ update_package_from_centos_stream(sut, 'kernel')
705
+ sut.reboot
706
+ end
707
+ end
708
+ end
709
+
710
+ # Clean up YUM prior to starting our test runs.
711
+ on(sut, 'yum clean all')
712
+ end
713
+ end
557
714
  end
558
715
  end
559
716
 
@@ -561,85 +718,100 @@ module Simp::BeakerHelpers
561
718
  #
562
719
  # Must set BEAKER_RHSM_USER and BEAKER_RHSM_PASS environment variables or pass them in as
563
720
  # parameters
564
- def rhel_rhsm_subscribe(sut, *opts)
721
+ def rhel_rhsm_subscribe(suts, *opts)
565
722
  require 'securerandom'
566
723
 
567
- rhsm_opts = {
568
- :username => ENV['BEAKER_RHSM_USER'],
569
- :password => ENV['BEAKER_RHSM_PASS'],
570
- :system_name => "#{sut}_beaker_#{Time.now.to_i}_#{SecureRandom.uuid}",
571
- :repo_list => {
572
- '7' => [
573
- 'rhel-7-server-extras-rpms',
574
- 'rhel-7-server-optional-rpms',
575
- 'rhel-7-server-rh-common-rpms',
576
- 'rhel-7-server-rpms',
577
- 'rhel-7-server-supplementary-rpms'
578
- ],
579
- '8' => [
580
- 'rhel-8-for-x86_64-baseos-rpms',
581
- 'rhel-8-for-x86_64-supplementary-rpms'
582
- ]
724
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
725
+ block_on(suts, :run_in_parallel => parallel) do |sut|
726
+ rhsm_opts = {
727
+ :username => ENV['BEAKER_RHSM_USER'],
728
+ :password => ENV['BEAKER_RHSM_PASS'],
729
+ :system_name => "#{sut}_beaker_#{Time.now.to_i}_#{SecureRandom.uuid}",
730
+ :repo_list => {
731
+ '7' => [
732
+ 'rhel-7-server-extras-rpms',
733
+ 'rhel-7-server-optional-rpms',
734
+ 'rhel-7-server-rh-common-rpms',
735
+ 'rhel-7-server-rpms',
736
+ 'rhel-7-server-supplementary-rpms'
737
+ ],
738
+ '8' => [
739
+ 'rhel-8-for-x86_64-baseos-rpms',
740
+ 'rhel-8-for-x86_64-supplementary-rpms'
741
+ ]
742
+ }
583
743
  }
584
- }
585
744
 
586
- if opts && opts.is_a?(Hash)
587
- rhsm_opts.merge!(opts)
588
- end
745
+ if opts && opts.is_a?(Hash)
746
+ rhsm_opts.merge!(opts)
747
+ end
589
748
 
590
- os = fact_on(sut, 'operatingsystem').strip
591
- os_release = fact_on(sut, 'operatingsystemmajrelease').strip
749
+ os = fact_on(sut, 'operatingsystem').strip
750
+ os_release = fact_on(sut, 'operatingsystemmajrelease').strip
592
751
 
593
- if os == 'RedHat'
594
- unless rhsm_opts[:username] && rhsm_opts[:password]
595
- fail("You must set BEAKER_RHSM_USER and BEAKER_RHSM_PASS environment variables to register RHEL systems")
596
- end
752
+ if os == 'RedHat'
753
+ unless rhsm_opts[:username] && rhsm_opts[:password]
754
+ fail("You must set BEAKER_RHSM_USER and BEAKER_RHSM_PASS environment variables to register RHEL systems")
755
+ end
597
756
 
598
- sub_status = on(sut, 'subscription-manager status', :accept_all_exit_codes => true)
599
- unless sub_status.exit_code == 0
600
- logger.info("Registering #{sut} via subscription-manager")
601
- on(sut, %{subscription-manager register --auto-attach --name='#{rhsm_opts[:system_name]}' --username='#{rhsm_opts[:username]}' --password='#{rhsm_opts[:password]}'}, :silent => true)
602
- end
757
+ sub_status = on(sut, 'subscription-manager status', :accept_all_exit_codes => true)
758
+ unless sub_status.exit_code == 0
759
+ logger.info("Registering #{sut} via subscription-manager")
760
+ on(sut, %{subscription-manager register --auto-attach --name='#{rhsm_opts[:system_name]}' --username='#{rhsm_opts[:username]}' --password='#{rhsm_opts[:password]}'}, :silent => true)
761
+ end
603
762
 
604
- if rhsm_opts[:repo_list][os_release]
605
- rhel_repo_enable(sut, rhsm_opts[:repo_list][os_release])
606
- else
607
- logger.warn("simp-beaker-helpers:#{__method__} => Default repos for RHEL '#{os_release}' not found")
608
- end
763
+ if rhsm_opts[:repo_list][os_release]
764
+ rhel_repo_enable(sut, rhsm_opts[:repo_list][os_release])
765
+ else
766
+ logger.warn("simp-beaker-helpers:#{__method__} => Default repos for RHEL '#{os_release}' not found")
767
+ end
609
768
 
610
- # Ensure that all users can access the entitlements since we don't know
611
- # who we'll be running jobs as (often not root)
612
- on(sut, 'chmod -R ugo+rX /etc/pki/entitlement', :accept_all_exit_codes => true)
769
+ # Ensure that all users can access the entitlements since we don't know
770
+ # who we'll be running jobs as (often not root)
771
+ on(sut, 'chmod -R ugo+rX /etc/pki/entitlement', :accept_all_exit_codes => true)
772
+ end
613
773
  end
614
774
  end
615
775
 
616
- def sosreport(sut, dest='sosreports')
617
- on(sut, 'puppet resource package sos ensure=latest')
618
- on(sut, 'sosreport --batch')
776
+ def sosreport(suts, dest='sosreports')
777
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
778
+ block_on(suts, :run_in_parallel => parallel) do |sut|
779
+ install_latest_package_on(sut, 'sos')
780
+ on(sut, 'sosreport --batch')
619
781
 
620
- files = on(sut, 'ls /var/tmp/sosreport* /tmp/sosreport* 2>/dev/null', :accept_all_exit_codes => true).output.lines.map(&:strip)
782
+ files = on(sut, 'ls /var/tmp/sosreport* /tmp/sosreport* 2>/dev/null', :accept_all_exit_codes => true).output.lines.map(&:strip)
621
783
 
622
- FileUtils.mkdir_p(dest)
784
+ FileUtils.mkdir_p(dest)
623
785
 
624
- files.each do |file|
625
- scp_from(sut, file, File.absolute_path(dest))
786
+ files.each do |file|
787
+ scp_from(sut, file, File.absolute_path(dest))
788
+ end
626
789
  end
627
790
  end
628
791
 
629
- def rhel_repo_enable(sut, repos)
630
- Array(repos).each do |repo|
631
- on(sut, %{subscription-manager repos --enable #{repo}})
792
+ def rhel_repo_enable(suts, repos)
793
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
794
+ block_on(suts, :run_in_parallel => parallel) do |sut|
795
+ Array(repos).each do |repo|
796
+ on(sut, %{subscription-manager repos --enable #{repo}})
797
+ end
632
798
  end
633
799
  end
634
800
 
635
- def rhel_repo_disable(sut, repos)
636
- Array(repos).each do |repo|
637
- on(sut, %{subscription-manager repos --disable #{repo}}, :accept_all_exit_codes => true)
801
+ def rhel_repo_disable(suts, repos)
802
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
803
+ block_on(suts, :run_in_parallel => parallel) do |sut|
804
+ Array(repos).each do |repo|
805
+ on(sut, %{subscription-manager repos --disable #{repo}}, :accept_all_exit_codes => true)
806
+ end
638
807
  end
639
808
  end
640
809
 
641
- def rhel_rhsm_unsubscribe(sut)
642
- on(sut, %{subscription-manager unregister}, :accept_all_exit_codes => true)
810
+ def rhel_rhsm_unsubscribe(suts)
811
+ parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
812
+ block_on(suts, :run_in_parallel => parallel) do |sut|
813
+ on(sut, %{subscription-manager unregister}, :accept_all_exit_codes => true)
814
+ end
643
815
  end
644
816
 
645
817
  # Apply known OS fixes we need to run Beaker on each SUT
@@ -713,6 +885,9 @@ module Simp::BeakerHelpers
713
885
 
714
886
  host_entry = { fqdn => [] }
715
887
 
888
+ # Add the short name because containers can't change the hostname
889
+ host_entry[fqdn] << host.name if (host[:hypervisor] == 'docker')
890
+
716
891
  # Ensure that all interfaces are active prior to collecting data
717
892
  activate_interfaces(host) unless ENV['BEAKER_no_fix_interfaces']
718
893
 
@@ -726,7 +901,7 @@ module Simp::BeakerHelpers
726
901
  host_entry[fqdn] << ipaddress.strip
727
902
 
728
903
  unless host_entry[fqdn].empty?
729
- suts_network_info[fqdn] = host_entry[fqdn]
904
+ suts_network_info[fqdn] = host_entry[fqdn].sort.uniq
730
905
  end
731
906
  end
732
907
  end
@@ -755,6 +930,7 @@ module Simp::BeakerHelpers
755
930
  end
756
931
 
757
932
  copy_to(ca_sut, pki_hosts_file, host_dir)
933
+
758
934
  # generate certs
759
935
  on(ca_sut, "cd #{host_dir}; cat #{host_dir}/pki.hosts | xargs bash make.sh")
760
936
  end
@@ -789,8 +965,8 @@ module Simp::BeakerHelpers
789
965
  sut.mkdir_p("#{sut_pki_dir}/public")
790
966
  sut.mkdir_p("#{sut_pki_dir}/private")
791
967
  sut.mkdir_p("#{sut_pki_dir}/cacerts")
792
- copy_to(sut, "#{local_host_pki_tree}/#{fqdn}.pem", "#{sut_pki_dir}/private/")
793
- copy_to(sut, "#{local_host_pki_tree}/#{fqdn}.pub", "#{sut_pki_dir}/public/")
968
+ copy_to(sut, "#{local_host_pki_tree}/#{fqdn}.pem", "#{sut_pki_dir}/private/")
969
+ copy_to(sut, "#{local_host_pki_tree}/#{fqdn}.pub", "#{sut_pki_dir}/public/")
794
970
 
795
971
  copy_to(sut, local_cacert, "#{sut_pki_dir}/cacerts/simp_auto_ca.pem")
796
972
 
@@ -800,18 +976,19 @@ module Simp::BeakerHelpers
800
976
  # Need to hash all of the CA certificates so that apps can use them
801
977
  # properly! This must happen on the host itself since it needs to match
802
978
  # the native hashing algorithms.
803
- hash_cmd = <<-EOM.strip
804
- cd #{sut_pki_dir}/cacerts; \
805
- for x in *; do \
806
- if [ ! -h "$x" ]; then \
807
- `openssl x509 -in $x >/dev/null 2>&1`; \
808
- if [ $? -eq 0 ]; then \
809
- hash=`openssl x509 -in $x -hash | head -1`; \
810
- ln -sf $x $hash.0; \
811
- fi; \
812
- fi; \
813
- done
814
- EOM
979
+ hash_cmd = <<~EOM.strip
980
+ PATH=/opt/puppetlabs/puppet/bin:$PATH; \
981
+ cd #{sut_pki_dir}/cacerts; \
982
+ for x in *; do \
983
+ if [ ! -h "$x" ]; then \
984
+ `openssl x509 -in $x >/dev/null 2>&1`; \
985
+ if [ $? -eq 0 ]; then \
986
+ hash=`openssl x509 -in $x -hash | head -1`; \
987
+ ln -sf $x $hash.0; \
988
+ fi; \
989
+ fi; \
990
+ done
991
+ EOM
815
992
 
816
993
  on(sut, hash_cmd)
817
994
  end
@@ -1226,13 +1403,12 @@ done
1226
1403
  def install_simp_repos(sut, disable = [])
1227
1404
  # NOTE: Do *NOT* use puppet in this method since it may not be available yet
1228
1405
 
1229
- if on(sut, 'rpm -q yum-utils', :accept_all_exit_codes => true).exit_code != 0
1230
- on(sut, 'yum -y install yum-utils')
1231
- end
1232
-
1233
- if on(sut, 'rpm -q simp-release-community', :accept_all_exit_codes => true).exit_code != 0
1234
- on(sut, 'yum -y install "https://download.simp-project.com/simp-release-community.rpm"')
1235
- end
1406
+ install_latest_package_on(sut, 'yum-utils')
1407
+ install_latest_package_on(
1408
+ sut,
1409
+ 'simp-release-community',
1410
+ "https://download.simp-project.com/simp-release-community.rpm",
1411
+ )
1236
1412
 
1237
1413
  to_disable = disable.dup
1238
1414
 
@@ -17,7 +17,11 @@ module Simp::BeakerHelpers
17
17
  require 'open-uri'
18
18
 
19
19
  begin
20
- ONLINE = true if open('http://google.com')
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
@@ -1,5 +1,5 @@
1
1
  module Simp; end
2
2
 
3
3
  module Simp::BeakerHelpers
4
- VERSION = '1.19.3'
4
+ VERSION = '1.21.3'
5
5
  end
@@ -6,21 +6,27 @@
6
6
  end
7
7
  -%>
8
8
  HOSTS:
9
- server-el7:
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
- server-el8:
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,36 @@
1
+ HOSTS:
2
+ el7:
3
+ roles:
4
+ - el7
5
+ - master
6
+ platform: el-7-x86_64
7
+ hypervisor: docker
8
+ image: simpproject/simp_build_centos7
9
+ docker_cmd: '/usr/sbin/sshd -D -E /var/log/sshd.log'
10
+
11
+ el8:
12
+ roles:
13
+ - el8
14
+ platform: el-8-x86_64
15
+ hypervisor: docker
16
+ image: simpproject/simp_build_centos8
17
+ docker_cmd: '["/sbin/init"]'
18
+
19
+ CONFIG:
20
+ docker_preserve_image: true
21
+ log_level: verbose
22
+ type: aio
23
+ <% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
24
+ puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
25
+ <% end -%>
26
+ ssh:
27
+ keepalive: true
28
+ keepalive_interval: 10
29
+ host_key:
30
+ - <%= Net::SSH::Transport::Algorithms::ALGORITHMS[:host_key].join("\n#{' '*6}- ") %>
31
+ kex:
32
+ - <%= Net::SSH::Transport::Algorithms::ALGORITHMS[:kex].join("\n#{' '*6}- ") %>
33
+ encryption:
34
+ - <%= Net::SSH::Transport::Algorithms::ALGORITHMS[:encryption].join("\n#{' '*6}- ") %>
35
+ hmac:
36
+ - <%= 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 -%>
@@ -5,7 +5,7 @@ hosts.each do |host|
5
5
  context "on #{host}" do
6
6
  puppet_collection = host.options[:puppet_collection]
7
7
 
8
- client_puppet_version = on(host, 'puppet --version').output.strip
8
+ client_puppet_version = on(host, 'puppet --version').stdout.strip
9
9
 
10
10
  if puppet_collection =~ /puppet(\d+)/
11
11
  puppet_collection_version = $1
@@ -29,4 +29,18 @@ context 'after copy_fixture_modules_to( hosts )' do
29
29
  expect(pfact_on(master, 'os.release.foo')).to eq ''
30
30
  end
31
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
38
+ end
39
+ end
40
+
41
+ describe "pfact_on returns a hash" do
42
+ it 'should return a Hash' do
43
+ expect(pfact_on(master, 'os')).to be_a(Hash)
44
+ end
45
+ end
32
46
  end
@@ -0,0 +1 @@
1
+ spec/acceptance/suites/default/../../nodesets
@@ -0,0 +1 @@
1
+ spec/acceptance/suites/fips_from_fixtures/../../nodesets
@@ -0,0 +1 @@
1
+ spec/acceptance/suites/snapshot/../../nodesets
@@ -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
- expect( @helper.get_puppet_install_info[:puppet_install_version] ).to match(/^6\./)
107
- expect( @helper.get_puppet_install_info[:puppet_collection] ).to eq('puppet6')
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.19.3
4
+ version: 1.21.3
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: 2021-01-04 00:00:00.000000000 Z
12
+ date: 2021-01-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: beaker
@@ -188,15 +188,19 @@ 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/docker.yml
192
+ - spec/acceptance/nodesets/ubuntu.yml
191
193
  - spec/acceptance/suites/default/check_puppet_version_spec.rb
192
194
  - spec/acceptance/suites/default/enable_fips_spec.rb
193
195
  - spec/acceptance/suites/default/fixture_modules_spec.rb
194
196
  - spec/acceptance/suites/default/install_simp_deps_repo_spec.rb
197
+ - spec/acceptance/suites/default/nodesets
195
198
  - spec/acceptance/suites/default/pki_tests_spec.rb
196
199
  - spec/acceptance/suites/default/set_hieradata_on_spec.rb
197
200
  - spec/acceptance/suites/default/write_hieradata_to_spec.rb
198
201
  - spec/acceptance/suites/fips_from_fixtures/00_default_spec.rb
199
202
  - spec/acceptance/suites/fips_from_fixtures/metadata.yml
203
+ - spec/acceptance/suites/fips_from_fixtures/nodesets
200
204
  - spec/acceptance/suites/offline/00_default_spec.rb
201
205
  - spec/acceptance/suites/offline/README
202
206
  - spec/acceptance/suites/offline/nodesets/default.yml
@@ -204,6 +208,7 @@ files:
204
208
  - spec/acceptance/suites/puppet_collections/metadata.yml
205
209
  - spec/acceptance/suites/snapshot/00_snapshot_test_spec.rb
206
210
  - spec/acceptance/suites/snapshot/10_general_usage_spec.rb
211
+ - spec/acceptance/suites/snapshot/nodesets
207
212
  - spec/acceptance/suites/windows/00_default_spec.rb
208
213
  - spec/acceptance/suites/windows/metadata.yml
209
214
  - spec/acceptance/suites/windows/nodesets/default.yml
@@ -217,7 +222,7 @@ licenses:
217
222
  - Apache-2.0
218
223
  metadata:
219
224
  issue_tracker: https://simp-project.atlassian.net
220
- post_install_message:
225
+ post_install_message:
221
226
  rdoc_options: []
222
227
  require_paths:
223
228
  - lib
@@ -232,21 +237,26 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
237
  - !ruby/object:Gem::Version
233
238
  version: '0'
234
239
  requirements: []
235
- rubygems_version: 3.0.9
236
- signing_key:
240
+ rubyforge_project:
241
+ rubygems_version: 2.7.10
242
+ signing_key:
237
243
  specification_version: 4
238
244
  summary: beaker helper methods for SIMP
239
245
  test_files:
240
246
  - spec/acceptance/nodesets/default.yml
247
+ - spec/acceptance/nodesets/docker.yml
248
+ - spec/acceptance/nodesets/ubuntu.yml
241
249
  - spec/acceptance/suites/default/check_puppet_version_spec.rb
242
250
  - spec/acceptance/suites/default/enable_fips_spec.rb
243
251
  - spec/acceptance/suites/default/fixture_modules_spec.rb
244
252
  - spec/acceptance/suites/default/install_simp_deps_repo_spec.rb
253
+ - spec/acceptance/suites/default/nodesets
245
254
  - spec/acceptance/suites/default/pki_tests_spec.rb
246
255
  - spec/acceptance/suites/default/set_hieradata_on_spec.rb
247
256
  - spec/acceptance/suites/default/write_hieradata_to_spec.rb
248
257
  - spec/acceptance/suites/fips_from_fixtures/00_default_spec.rb
249
258
  - spec/acceptance/suites/fips_from_fixtures/metadata.yml
259
+ - spec/acceptance/suites/fips_from_fixtures/nodesets
250
260
  - spec/acceptance/suites/offline/00_default_spec.rb
251
261
  - spec/acceptance/suites/offline/README
252
262
  - spec/acceptance/suites/offline/nodesets/default.yml
@@ -254,6 +264,7 @@ test_files:
254
264
  - spec/acceptance/suites/puppet_collections/metadata.yml
255
265
  - spec/acceptance/suites/snapshot/00_snapshot_test_spec.rb
256
266
  - spec/acceptance/suites/snapshot/10_general_usage_spec.rb
267
+ - spec/acceptance/suites/snapshot/nodesets
257
268
  - spec/acceptance/suites/windows/00_default_spec.rb
258
269
  - spec/acceptance/suites/windows/metadata.yml
259
270
  - spec/acceptance/suites/windows/nodesets/default.yml