simp-beaker-helpers 1.24.4 → 1.26.2

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: ea59f88fb5dfa33fe812b52e53dfb71ff10e104f9eb720cd4f233974478ba6dc
4
- data.tar.gz: 39ef7ef09f672407964dfb2e06302131583864a50ed9fd89ec71238ff1f86ee6
3
+ metadata.gz: 1a861935f1cb30047688354b52fe5208622c767e05de0637149e6b4042b28d0a
4
+ data.tar.gz: 834f97957b17b804aad1a9320944c4229b5c2bcd8eccc0f2dd1373b31841f0d9
5
5
  SHA512:
6
- metadata.gz: bc4ab204f1df2a4a141951d87df4677f449830394d315015079b324c028a7eafe8b32f12a03384b1bc9c01effb8bb5a4cc8e9998349c0bc3f4f9a80c50283d9a
7
- data.tar.gz: e6a63e7e5175abf091cdb7694be5dd889263a3e2fbfd908657d24367199a79c31faa44a5d9b1eb3964534ffe7a64f50f366dc151cdd250548aec7ebc67c2590a
6
+ metadata.gz: fb60e2fa1a182349fa7fcc03e71d7615952400aa6d806d1db0c4b96fdf97a333a8717ddd25b39f61134fba230190c98f707be854be7b5a3edc56fcdb9f4986e9
7
+ data.tar.gz: '089f9e55f5d55fedd54024c83ef828e05efe9c9e21dc81087abdfb139f748643ab3b836b7eade7649ac348e56b1d3cfb3abfb68252d8a571393054479b3bb4d6'
@@ -1,4 +1,4 @@
1
- # When SemVer tag is pushed: create GitHub release & publish gem to rubygems.org
1
+ # Create GitHub release, build & publish .gem to rubygems.org on SemVer tag push
2
2
  #
3
3
  # This workflow's jobs are only triggered in repos under the `simp` organization
4
4
  # ------------------------------------------------------------------------------
@@ -56,6 +56,10 @@ jobs:
56
56
  name: "RELENG checks"
57
57
  if: github.repository_owner == 'simp'
58
58
  runs-on: ubuntu-latest
59
+ outputs:
60
+ build_command: ${{ steps.commands.outputs.build_command }}
61
+ release_command: ${{ steps.commands.outputs.release_command }}
62
+ pkg_dir: ${{ steps.commands.outputs.pkg_dir }}
59
63
  steps:
60
64
  - name: "Assert '${{ github.ref }}' is a tag"
61
65
  run: '[[ "$GITHUB_REF" =~ ^refs/tags/ ]] || { echo "::error ::GITHUB_REF is not a tag: ${GITHUB_REF}"; exit 1 ; }'
@@ -66,8 +70,8 @@ jobs:
66
70
  - name: Determine build and release commands
67
71
  id: commands
68
72
  run: |
69
- # By default, these are the standard tasks from "bundler/gem_tasks"
70
- # To override them in the LOCAL_WORKFLOW_CONFIG_FILE
73
+ # By default, this is the standard task from "bundler/gem_tasks"
74
+ # To override it, add the new command to LOCAL_WORKFLOW_CONFIG_FILE
71
75
  GEM_BUILD_COMMAND='bundle exec rake build'
72
76
  GEM_RELEASE_COMMAND='bundle exec rake build release:rubygem_push'
73
77
  GEM_PKG_DIR='pkg'
data/.gitignore CHANGED
@@ -1,9 +1,24 @@
1
+ .*.sw?
2
+ .yardoc
3
+ .idea/
1
4
  .fips_fixtures.yml
2
5
  *.gem
3
- *.swp
4
- Gemfile.lock
5
- .bundle/
6
6
  *.old
7
7
  .vagrant
8
+ dist
9
+ /pkg
10
+ # Read everything in fixtures
11
+ /spec/fixtures/*
12
+ # Un-ignore hieradata
13
+ !/spec/fixtures/hieradata/*
14
+ # Except this one, which is auto-generated
15
+ /spec/fixtures/hieradata/hiera.yaml
16
+ /spec/rp_env
17
+ /.rspec_system
18
+ /.vagrant
19
+ /.bundle
20
+ /.vendor
21
+ /vendor
22
+ /junit
8
23
  /log
9
- /spec/fixtures
24
+ /doc
data/.gitlab-ci.yml CHANGED
@@ -313,6 +313,12 @@ default:
313
313
  script:
314
314
  - bundle exec rake beaker:suites[default]
315
315
 
316
+ default-amzn2:
317
+ <<: *pup_6_x
318
+ <<: *acceptance_base
319
+ script:
320
+ - bundle exec rake beaker:suites[default,amzn2]
321
+
316
322
  default-fips:
317
323
  <<: *pup_6_x
318
324
  <<: *acceptance_base
data/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ### 1.26.2 / 2022-07-26
2
+ * Fixed:
3
+ * Limit the length of the CN field of the certificates to 64 bytes
4
+
5
+ ### 1.26.1 / 2022-06-24
6
+ * Fixed:
7
+ * Ensure that `multi_node` is enabled by default for backwards compatibility
8
+ * Sort the discovered nodesets by default when running with `ALL` nodesets
9
+
10
+ ### 1.26.0 / 2022-06-24
11
+ * Added:
12
+ * Allow for sequential nodesets by setting `multi_node: false` in the
13
+ `CONFIG:` section of your nodeset.
14
+
15
+ ### 1.25.0 / 2022-06-11
16
+ * Fixed:
17
+ * Replaced calls to `sed -c` with something POSIX compliant that should work
18
+ on non-RHEL systems
19
+ * Added:
20
+ * Updated all dependencies to their latest versions where possible and removed
21
+ depdendencies on deprecated libraries.
22
+
23
+ ### 1.24.5 / 2022-05-06
24
+ * Fixed:
25
+ * Added a workaround for Amazon Linux 2 testing
26
+
1
27
  ### 1.24.4 / 2022-04-28
2
28
  * Fixed:
3
29
  * Workaround for [MODULES-11315] in `puppet-agent-versions.yaml`
data/Gemfile CHANGED
@@ -44,8 +44,8 @@ group :system_tests do
44
44
  gem 'beaker-rspec'
45
45
  gem 'beaker-windows'
46
46
  gem 'net-ssh'
47
- gem 'puppet', ENV.fetch('PUPPET_VERSION', '~> 6.0')
48
- gem 'puppetlabs_spec_helper', '~> 3.0'
47
+ gem 'puppet', ENV.fetch('PUPPET_VERSION', '~> 7.0')
49
48
  gem 'rubocop'
50
49
  gem 'rubocop-rspec'
50
+ gem 'puppetlabs_spec_helper', '~> 4.0'
51
51
  end
data/files/pki/make.sh CHANGED
@@ -46,7 +46,7 @@ for hosts in $*; do
46
46
  echo "-- $hname"
47
47
  mkdir -p "${keydist}/${hname}/cacerts"
48
48
 
49
- sed -e "s/#HOSTNAME#/${hname}/" template_host.cnf > "working/${hname}.cnf"
49
+ sed -e "s/#HOSTNAME#/${hname:0:63}/" template_host.cnf > "working/${hname}.cnf"
50
50
 
51
51
  if [ "$hname" != "$hosts" ];
52
52
  then
@@ -73,7 +73,8 @@ for hosts in $*; do
73
73
  done
74
74
  done
75
75
 
76
- sed -ci "s/# subjectAltName = #ALTNAMES#/subjectAltName = ${altnames}/" "working/${hname}.cnf"
76
+ tgt_file="working/${hname}.cnf"
77
+ sed -e "s/# subjectAltName = #ALTNAMES#/subjectAltName = ${altnames}/" "$tgt_file" 1<> "$tgt_file"
77
78
  fi
78
79
 
79
80
  echo "-- running openssl req"
@@ -420,7 +420,11 @@ module Simp::BeakerHelpers
420
420
  #
421
421
  # This isn't 100% correct but it's "good enough" for an automated CI
422
422
  # environment to tell us if something is critically out of alignment.
423
- on(@sut, %(cd scap-content/build-scripts; sed -ci 's/ssg.build_derivatives.profile_handling/__simp_dontcare__ = None #ssg.build_derivatives.profile_handling/g' enable_derivatives.py))
423
+ safe_sed(
424
+ @sut,
425
+ 's/ssg.build_derivatives.profile_handling/__simp_dontcare__ = None #ssg.build_derivatives.profile_handling/g',
426
+ 'scap-content/build-scripts/enable_derivatives.py'
427
+ )
424
428
 
425
429
  on(@sut, %(cd scap-content/build; cmake ../; make -j4 #{OS_INFO[@os][@os_rel]['ssg']['build_target']}-content && cp *ds.xml #{@scap_working_dir}))
426
430
  end
@@ -1,5 +1,5 @@
1
1
  module Simp; end
2
2
 
3
3
  module Simp::BeakerHelpers
4
- VERSION = '1.24.4'
4
+ VERSION = '1.26.2'
5
5
  end
@@ -12,6 +12,8 @@ module Simp::BeakerHelpers
12
12
  require 'simp/beaker_helpers/ssg'
13
13
  require 'simp/beaker_helpers/version'
14
14
 
15
+ @run_in_parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
16
+
15
17
  # Stealing this from the Ruby 2.5 Dir::Tmpname workaround from Rails
16
18
  def self.tmpname
17
19
  t = Time.new.strftime("%Y%m%d")
@@ -25,8 +27,7 @@ module Simp::BeakerHelpers
25
27
  #
26
28
  # Has no effect if yum or dnf is not present.
27
29
  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
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
30
31
  repo,target = key.split('.')
31
32
 
32
33
  unless target
@@ -56,8 +57,7 @@ module Simp::BeakerHelpers
56
57
  # 'foo.installonly_limit' => '5' # Applies only to the 'foo' repo
57
58
  # }
58
59
  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|
60
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
61
61
  yum_opts.each_pair do |k,v|
62
62
  set_yum_opt_on(sut, k, v)
63
63
  end
@@ -70,8 +70,7 @@ module Simp::BeakerHelpers
70
70
  retry_interval: 10
71
71
  }
72
72
 
73
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
74
- block_on(suts, :run_in_parallel => parallel) do |sut|
73
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
75
74
  package_source = package_name unless package_source
76
75
 
77
76
  unless sut.check_for_package(package_name)
@@ -91,8 +90,7 @@ module Simp::BeakerHelpers
91
90
  retry_interval: 10
92
91
  }
93
92
 
94
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
95
- block_on(suts, :run_in_parallel => parallel) do |sut|
93
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
96
94
  package_source = package_name unless package_source
97
95
 
98
96
  if sut.check_for_package(package_name)
@@ -380,8 +378,7 @@ module Simp::BeakerHelpers
380
378
  opts[:pluginsync] = opts.fetch(:pluginsync, true)
381
379
 
382
380
  unless ENV['BEAKER_copy_fixtures'] == 'no'
383
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
384
- block_on(suts, :run_in_parallel => parallel) do |sut|
381
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
385
382
  STDERR.puts " ** copy_fixture_modules_to: '#{sut}'" if ENV['BEAKER_helpers_verbose']
386
383
 
387
384
  # Use spec_prep to provide modules (this supports isolated networks)
@@ -443,8 +440,7 @@ module Simp::BeakerHelpers
443
440
  end
444
441
 
445
442
  def munge_ssh_crypto_policies(suts, key_types=['ssh-rsa'])
446
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
447
- block_on(suts, :run_in_parallel => parallel) do |sut|
443
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
448
444
  if has_crypto_policies(sut)
449
445
  install_latest_package_on(sut, 'crypto-policies', nil, :accept_all_exit_codes => true)
450
446
 
@@ -455,14 +451,31 @@ module Simp::BeakerHelpers
455
451
  end
456
452
  end
457
453
 
454
+ # Perform the equivalend of an in-place sed without changing the target inode
455
+ #
456
+ # Required for many container targets
457
+ def safe_sed(suts = hosts, pattern, target_file)
458
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
459
+ tmpfile = sut.tmpfile('safe_sed')
460
+
461
+ command = [
462
+ "cp #{target_file} #{tmpfile}",
463
+ "sed -i '#{pattern}' #{tmpfile}",
464
+ "cat #{tmpfile} > #{target_file}"
465
+ ].join(' && ')
466
+
467
+ on(sut, command)
468
+
469
+ sut.rm_rf(tmpfile)
470
+ end
471
+ end
472
+
458
473
  # Configure and reboot SUTs into FIPS mode
459
474
  def enable_fips_mode_on( suts = hosts )
460
475
  puts '== configuring FIPS mode on SUTs'
461
476
  puts ' -- (use BEAKER_fips=no to disable)'
462
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
463
477
 
464
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
465
- block_on(suts, :run_in_parallel => parallel) do |sut|
478
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
466
479
  next if sut[:hypervisor] == 'docker'
467
480
 
468
481
  if is_windows?(sut)
@@ -483,7 +496,7 @@ module Simp::BeakerHelpers
483
496
  # that doesn't break vagrant access and is appropriate for
484
497
  # typical module tests.)
485
498
  fips_ssh_ciphers = [ 'aes256-ctr','aes192-ctr','aes128-ctr']
486
- on(sut, %(sed -ci '/Ciphers /d' /etc/ssh/sshd_config))
499
+ safe_sed(sut, '/Ciphers /d', '/etc/ssh/sshd_config')
487
500
  on(sut, %(echo 'Ciphers #{fips_ssh_ciphers.join(',')}' >> /etc/ssh/sshd_config))
488
501
 
489
502
  fips_enable_modulepath = ''
@@ -535,8 +548,7 @@ module Simp::BeakerHelpers
535
548
  # - <URL to GPGKEY1>
536
549
  # - <URL to GPGKEY2>
537
550
  def enable_yum_repos_on( suts = hosts )
538
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
539
- block_on(suts, :run_in_parallel => parallel) do |sut|
551
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
540
552
  if sut['yum_repos']
541
553
  sut['yum_repos'].each_pair do |repo, metadata|
542
554
  repo_manifest = create_yum_resource(repo, metadata)
@@ -617,8 +629,7 @@ module Simp::BeakerHelpers
617
629
  #
618
630
  # Can be disabled by setting BEAKER_enable_epel=no
619
631
  def enable_epel_on(suts)
620
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
621
- block_on(suts, :run_in_parallel => parallel) do |sut|
632
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
622
633
  if ONLINE
623
634
  os_info = fact_on(sut, 'os')
624
635
  os_maj_rel = os_info['release']['major']
@@ -661,8 +672,7 @@ module Simp::BeakerHelpers
661
672
  end
662
673
 
663
674
  def update_package_from_centos_stream(suts, package_name)
664
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
665
- block_on(suts, :run_in_parallel => parallel) do |sut|
675
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
666
676
  sut.install_package('centos-release-stream') unless sut.check_for_package('centos-release-stream')
667
677
  install_latest_package_on(sut, package_name)
668
678
  sut.uninstall_package('centos-release-stream')
@@ -670,8 +680,7 @@ module Simp::BeakerHelpers
670
680
  end
671
681
 
672
682
  def linux_errata( suts )
673
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
674
- block_on(suts, :run_in_parallel => parallel) do |sut|
683
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
675
684
  # Set the locale if not set
676
685
  sut.set_env_var('LANG', 'en_US.UTF-8') unless sut.get_env_var('LANG')
677
686
 
@@ -688,9 +697,14 @@ module Simp::BeakerHelpers
688
697
  if current_domain.empty?
689
698
  new_fqdn = hostname + '.beaker.test'
690
699
 
691
- on(sut, "sed -ci 's/#{hostname}.*/#{new_fqdn} #{hostname}/' /etc/hosts")
692
- on(sut, "echo '#{new_fqdn}' > /etc/hostname", :accept_all_exit_codes => true)
693
- on(sut, "hostname #{new_fqdn}", :accept_all_exit_codes => true)
700
+ safe_sed(sut, 's/#{hostname}.*/#{new_fqdn} #{hostname}/', '/etc/hosts')
701
+
702
+ if !sut.which('hostnamectl').empty?
703
+ on(sut, "hostnamectl set-hostname #{new_fqdn}")
704
+ else
705
+ on(sut, "echo '#{new_fqdn}' > /etc/hostname", :accept_all_exit_codes => true)
706
+ on(sut, "hostname #{new_fqdn}", :accept_all_exit_codes => true)
707
+ end
694
708
 
695
709
  if sut.file_exist?('/etc/sysconfig/network')
696
710
  on(sut, "sed -s '/HOSTNAME=/d' /etc/sysconfig/network")
@@ -785,8 +799,7 @@ module Simp::BeakerHelpers
785
799
  def rhel_rhsm_subscribe(suts, *opts)
786
800
  require 'securerandom'
787
801
 
788
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
789
- block_on(suts, :run_in_parallel => parallel) do |sut|
802
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
790
803
  rhsm_opts = {
791
804
  :username => ENV['BEAKER_RHSM_USER'],
792
805
  :password => ENV['BEAKER_RHSM_PASS'],
@@ -838,8 +851,7 @@ module Simp::BeakerHelpers
838
851
  end
839
852
 
840
853
  def sosreport(suts, dest='sosreports')
841
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
842
- block_on(suts, :run_in_parallel => parallel) do |sut|
854
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
843
855
  install_latest_package_on(sut, 'sos')
844
856
  on(sut, 'sosreport --batch')
845
857
 
@@ -854,8 +866,7 @@ module Simp::BeakerHelpers
854
866
  end
855
867
 
856
868
  def rhel_repo_enable(suts, repos)
857
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
858
- block_on(suts, :run_in_parallel => parallel) do |sut|
869
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
859
870
  Array(repos).each do |repo|
860
871
  on(sut, %{subscription-manager repos --enable #{repo}})
861
872
  end
@@ -863,8 +874,7 @@ module Simp::BeakerHelpers
863
874
  end
864
875
 
865
876
  def rhel_repo_disable(suts, repos)
866
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
867
- block_on(suts, :run_in_parallel => parallel) do |sut|
877
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
868
878
  Array(repos).each do |repo|
869
879
  on(sut, %{subscription-manager repos --disable #{repo}}, :accept_all_exit_codes => true)
870
880
  end
@@ -872,16 +882,14 @@ module Simp::BeakerHelpers
872
882
  end
873
883
 
874
884
  def rhel_rhsm_unsubscribe(suts)
875
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
876
- block_on(suts, :run_in_parallel => parallel) do |sut|
885
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
877
886
  on(sut, %{subscription-manager unregister}, :accept_all_exit_codes => true)
878
887
  end
879
888
  end
880
889
 
881
890
  # Apply known OS fixes we need to run Beaker on each SUT
882
891
  def fix_errata_on( suts = hosts )
883
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
884
- block_on(suts, :run_in_parallel => parallel) do |sut|
892
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
885
893
  if is_windows?(sut)
886
894
  # Load the Windows requirements
887
895
  require 'simp/beaker_helpers/windows'
@@ -1091,8 +1099,7 @@ module Simp::BeakerHelpers
1091
1099
  def activate_interfaces(hosts)
1092
1100
  return if ENV['BEAKER_no_fix_interfaces']
1093
1101
 
1094
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
1095
- block_on(hosts, :run_in_parallel => parallel) do |host|
1102
+ block_on(hosts, :run_in_parallel => @run_in_parallel) do |host|
1096
1103
  if host[:platform] =~ /windows/
1097
1104
  puts " -- SKIPPING #{host} because it is windows"
1098
1105
  next
@@ -1335,8 +1342,7 @@ module Simp::BeakerHelpers
1335
1342
  noop => false
1336
1343
  }
1337
1344
  PLUGINSYNC_MANIFEST
1338
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
1339
- apply_manifest_on(hosts, pluginsync_manifest, :run_in_parallel => parallel)
1345
+ apply_manifest_on(hosts, pluginsync_manifest, :run_in_parallel => @run_in_parallel)
1340
1346
  end
1341
1347
 
1342
1348
 
@@ -1455,9 +1461,8 @@ module Simp::BeakerHelpers
1455
1461
  ENV['BEAKER_PUPPET_COLLECTION'] = install_info[:puppet_collection]
1456
1462
  end
1457
1463
 
1458
- require 'beaker/puppet_install_helper'
1459
-
1460
- run_puppet_install_helper(install_info[:puppet_install_type], install_info[:puppet_install_version])
1464
+ require 'beaker-puppet'
1465
+ install_puppet_on(hosts, version: install_info[:puppet_install_version])
1461
1466
  end
1462
1467
 
1463
1468
  # Configure all SIMP repos on a host and disable all repos in the disable Array
@@ -1494,18 +1499,28 @@ module Simp::BeakerHelpers
1494
1499
 
1495
1500
  return if (ENV.fetch('SIMP_install_repos', 'yes') == 'no')
1496
1501
 
1497
- parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
1498
- block_on(suts, :run_in_parallel => parallel) do |sut|
1502
+ block_on(suts, :run_in_parallel => @run_in_parallel) do |sut|
1499
1503
  install_package_unless_present_on(sut, 'yum-utils')
1500
1504
 
1505
+ os = fact_on(sut, 'os.name')
1501
1506
  release = fact_on(sut, 'os.release.major')
1502
1507
 
1508
+ # Work around Amazon 2 compatibility
1509
+ if (( os == 'Amazon' ) && ( "#{release}" == '2' ))
1510
+ release = '7'
1511
+ end
1512
+
1503
1513
  install_package_unless_present_on(
1504
1514
  sut,
1505
1515
  'simp-release-community',
1506
1516
  "https://download.simp-project.com/simp-release-community.el#{release}.rpm"
1507
1517
  )
1508
1518
 
1519
+ # TODO: Remove this hack-around when there's a version for AL2
1520
+ if ( os == 'Amazon' )
1521
+ on(sut, %(sed -i 's/$releasever/#{release}/g' /etc/yum.repos.d/simp*))
1522
+ end
1523
+
1509
1524
  to_disable = disable.dup
1510
1525
  to_disable += ENV.fetch('BEAKER_SIMP_disable_repos', '').split(',').map(&:strip)
1511
1526
 
@@ -2,7 +2,8 @@ require 'rake'
2
2
  require 'rake/clean'
3
3
  require 'rake/tasklib'
4
4
  require 'fileutils'
5
- require 'puppetlabs_spec_helper/tasks/beaker'
5
+ require 'beaker/tasks/rake_task'
6
+ require 'beaker-rspec/rake_task'
6
7
  require 'puppetlabs_spec_helper/tasks/fixtures'
7
8
 
8
9
  module Simp; end
@@ -224,7 +225,46 @@ module Simp::Rake
224
225
  nodesets << File.join(nodeset_path, 'default.yml')
225
226
  end
226
227
 
228
+ refined_nodesets = []
229
+
227
230
  nodesets.each do |nodeset_yml|
231
+ parsed_nodeset = ::Beaker::Options::HostsFileParser.parse_hosts_file(nodeset_yml)
232
+
233
+ # Default to multi-node testing for backwards compatibility
234
+ multi_node = (parsed_nodeset[:multi_node] == false ? false: true)
235
+
236
+ if multi_node
237
+ refined_nodesets.push(nodeset_yml)
238
+ else
239
+ parsed_nodeset_hosts = parsed_nodeset.delete(:HOSTS)
240
+
241
+ parsed_nodeset_hosts.each do |k,v|
242
+
243
+ v[:roles] ||= []
244
+ v[:roles] |= ['default']
245
+
246
+ tmp_nodeset = {
247
+ :HOSTS => { k => v },
248
+ :CONFIG => parsed_nodeset
249
+ }
250
+
251
+ tmp_nodeset_file = Tempfile.new("nodeset_#{k}-")
252
+ tmp_nodeset_file.write(tmp_nodeset.to_yaml)
253
+ tmp_nodeset_file.close
254
+
255
+ refined_nodesets.push(tmp_nodeset_file.path)
256
+
257
+ at_exit do
258
+ if tmp_nodeset_file && File.exist?(tmp_nodeset_file.path)
259
+ tmp_nodeset_file.close
260
+ tmp_nodeset_file.unlink
261
+ end
262
+ end
263
+ end
264
+ end
265
+ end
266
+
267
+ refined_nodesets.sort.each do |nodeset_yml|
228
268
  unless File.file?(nodeset_yml)
229
269
  # Get here if user has specified a non-existent nodeset or the
230
270
  # implied `default` nodeset does not exist.
@@ -22,19 +22,14 @@ Gem::Specification.new do |s|
22
22
  s.required_ruby_version = '>= 2.3.0'
23
23
 
24
24
  s.add_runtime_dependency 'beaker' , ['>= 4.17.0', '< 5.0.0']
25
- s.add_runtime_dependency 'beaker-rspec' , '~> 6.2'
25
+ s.add_runtime_dependency 'beaker-rspec' , '~> 7.1'
26
26
  s.add_runtime_dependency 'beaker-puppet' , ['>= 1.18.14', '< 2.0.0']
27
27
  s.add_runtime_dependency 'beaker-docker' , ['>= 0.8.3', '< 2.0.0']
28
28
  s.add_runtime_dependency 'docker-api' , ['>= 2.1.0', '< 3.0.0']
29
29
  s.add_runtime_dependency 'beaker-vagrant' , ['>= 0.6.4', '< 2.0.0']
30
- s.add_runtime_dependency 'beaker-puppet_install_helper', '~> 0.9'
31
30
  s.add_runtime_dependency 'highline' , '~> 2.0'
32
31
  s.add_runtime_dependency 'nokogiri' , '~> 1.8'
33
32
 
34
- # Because net-telnet dropped support for Ruby < 2.3.0
35
- # TODO: Update this when we no longer support Ruby 2.1.9 (should be October 2018)
36
- s.add_runtime_dependency 'net-telnet', '~> 0.1.1'
37
-
38
33
  ### s.files = Dir['Rakefile', '{bin,lib,spec}/**/*', 'README*', 'LICENSE*'] & `git ls-files -z .`.split("\0")
39
34
  s.files = `git ls-files`.split("\n")
40
35
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -0,0 +1,22 @@
1
+ <%
2
+ if ENV['BEAKER_HYPERVISOR']
3
+ hypervisor = ENV['BEAKER_HYPERVISOR']
4
+ else
5
+ hypervisor = 'vagrant'
6
+ end
7
+ -%>
8
+ HOSTS:
9
+ amzn2:
10
+ roles:
11
+ - default
12
+ platform: el-7-x86_64
13
+ box: gbailey/amzn2
14
+ hypervisor: <%= hypervisor %>
15
+
16
+ CONFIG:
17
+ log_level: verbose
18
+ synced_folder : disabled
19
+ type: aio
20
+ <% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
21
+ puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
22
+ <% end -%>
@@ -8,8 +8,8 @@
8
8
  HOSTS:
9
9
  el7:
10
10
  roles:
11
+ - default
11
12
  - el7
12
- - master
13
13
  platform: el-7-x86_64
14
14
  box: centos/7
15
15
  hypervisor: <%= hypervisor %>
@@ -18,13 +18,13 @@ HOSTS:
18
18
  roles:
19
19
  - el8
20
20
  platform: el-8-x86_64
21
- box: generic/centos8
21
+ box: centos/stream8
22
22
  hypervisor: <%= hypervisor %>
23
23
 
24
24
  CONFIG:
25
+ multi_node: <%= ['yes','true'].include?(ENV['BEAKER_multi_node']) ? true : false %>
25
26
  log_level: verbose
26
27
  type: aio
27
- vagrant_memsize: 512
28
28
  vagrant_cpus: 2
29
29
  <% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
30
30
  puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
@@ -1,8 +1,8 @@
1
1
  HOSTS:
2
2
  el7.test.net:
3
3
  roles:
4
+ - default
4
5
  - el7
5
- - master
6
6
  platform: el-7-x86_64
7
7
  hypervisor: docker
8
8
  image: simpproject/simp_beaker_el7
@@ -8,8 +8,8 @@
8
8
  HOSTS:
9
9
  oel7:
10
10
  roles:
11
+ - default
11
12
  - el7
12
- - master
13
13
  platform: el-7-x86_64
14
14
  box: generic/oracle7
15
15
  hypervisor: <%= hypervisor %>
@@ -24,7 +24,6 @@ HOSTS:
24
24
  CONFIG:
25
25
  log_level: verbose
26
26
  type: aio
27
- vagrant_memsize: 1024
28
27
  vagrant_cpus: 2
29
28
  <% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
30
29
  puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
@@ -7,6 +7,8 @@
7
7
  -%>
8
8
  HOSTS:
9
9
  focal:
10
+ roles:
11
+ - default
10
12
  platform: ubuntu-20.04-x86_64
11
13
  box: ubuntu/focal64
12
14
  hypervisor: <%= hypervisor %>
@@ -14,7 +16,6 @@ HOSTS:
14
16
  CONFIG:
15
17
  log_level: verbose
16
18
  type: aio
17
- vagrant_memsize: 512
18
19
  <% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
19
20
  puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
20
21
  <% end -%>
@@ -6,41 +6,41 @@ context 'after copy_fixture_modules_to( hosts )' do
6
6
  copy_fixture_modules_to( hosts )
7
7
  end
8
8
 
9
- describe "fact_on(master,'root_home')" do
9
+ describe "fact_on(default,'root_home')" do
10
10
  it 'should not return value of `root_home`' do
11
- expect(fact_on(master, 'root_home')).to eq ''
11
+ expect(fact_on(default, 'root_home')).to eq ''
12
12
  end
13
13
  end
14
14
 
15
- describe "pfact_on(master,'root_home')" do
15
+ describe "pfact_on(default,'root_home')" do
16
16
  it 'should return value of `root_home`' do
17
- expect(pfact_on(master, 'root_home')).to eq '/root'
17
+ expect(pfact_on(default, 'root_home')).to eq '/root'
18
18
  end
19
19
  end
20
20
 
21
- describe "pfact_on(master,'os.release.major')" do
21
+ describe "pfact_on(default,'os.release.major')" do
22
22
  it 'should return the value of `os.release.major`' do
23
- expect(pfact_on(master, 'os.release.major')).to match(/.+/)
23
+ expect(pfact_on(default, 'os.release.major')).to match(/.+/)
24
24
  end
25
25
  end
26
26
 
27
- describe "pfact_on(master,'os.release.foo')" do
27
+ describe "pfact_on(default,'os.release.foo')" do
28
28
  it 'should not return the value of `os.release.foo`' do
29
- expect(pfact_on(master, 'os.release.foo')).to eq ''
29
+ expect(pfact_on(default, 'os.release.foo')).to eq ''
30
30
  end
31
31
  end
32
32
 
33
- describe "pfact_on(master,'fips_enabled')" do
33
+ describe "pfact_on(default,'fips_enabled')" do
34
34
  expected = (ENV['BEAKER_fips'] == 'yes')
35
35
 
36
36
  it 'should return false' do
37
- expect(pfact_on(master, 'fips_enabled')).to eq expected
37
+ expect(pfact_on(default, 'fips_enabled')).to eq expected
38
38
  end
39
39
  end
40
40
 
41
41
  describe "pfact_on returns a hash" do
42
42
  it 'should return a Hash' do
43
- expect(pfact_on(master, 'os')).to be_a(Hash)
43
+ expect(pfact_on(default, 'os')).to be_a(Hash)
44
44
  end
45
45
  end
46
46
  end
@@ -4,21 +4,21 @@ require 'tmpdir'
4
4
 
5
5
  context 'PKI operations' do
6
6
 
7
- context 'after run_fake_pki_ca_on(master,hosts)' do
7
+ context 'after run_fake_pki_ca_on(default,hosts)' do
8
8
  before(:all) do
9
9
  copy_fixture_modules_to( hosts )
10
10
  end
11
11
 
12
12
  shared_examples_for 'a correctly copied keydist/ tree' do |test_dir|
13
13
  it 'correctly copies keydist/ tree' do
14
- on(master, "ls -d #{test_dir}" +
14
+ on(default, "ls -d #{test_dir}" +
15
15
  " #{test_dir}/cacerts" +
16
16
  " #{test_dir}/cacerts/cacert_*.pem"
17
17
  )
18
18
 
19
19
  hosts.each do |host|
20
20
  name = host.node_name
21
- on(master, "ls -d #{test_dir}/#{name}/cacerts" +
21
+ on(default, "ls -d #{test_dir}/#{name}/cacerts" +
22
22
  " #{test_dir}/#{name}/#{name}.pem" +
23
23
  " #{test_dir}/#{name}/#{name}.pub" +
24
24
  " #{test_dir}/cacerts/cacert_*.pem"
@@ -29,10 +29,10 @@ context 'PKI operations' do
29
29
 
30
30
  describe 'a Fake CA under /root' do
31
31
  tmp_keydist_dir = Dir.mktmpdir 'simp-beaker-helpers__pki-tests'
32
- run_fake_pki_ca_on( master, hosts, tmp_keydist_dir )
32
+ run_fake_pki_ca_on( default, hosts, tmp_keydist_dir )
33
33
 
34
34
  it 'should create /root/pki' do
35
- on(master, 'test -d /root/pki')
35
+ on(default, 'test -d /root/pki')
36
36
  end
37
37
 
38
38
  it_behaves_like 'a correctly copied keydist/ tree', '/root/pki/keydist'
@@ -41,13 +41,13 @@ context 'PKI operations' do
41
41
 
42
42
  describe 'after copy_keydist_to' do
43
43
  test_dir = '/etc/puppetlabs/code/environments/production/modules/pki/files/keydist'
44
- copy_keydist_to(master)
44
+ copy_keydist_to(default)
45
45
  it_behaves_like 'a correctly copied keydist/ tree', test_dir
46
46
  end
47
47
 
48
- describe 'after copy_keydist_to(master,"/tmp/foo")' do
48
+ describe 'after copy_keydist_to(default,"/tmp/foo")' do
49
49
  test_dir = '/tmp/foo'
50
- copy_keydist_to(master, test_dir)
50
+ copy_keydist_to(default, test_dir)
51
51
  it_behaves_like 'a correctly copied keydist/ tree', test_dir
52
52
  end
53
53
 
@@ -5,8 +5,6 @@ require 'beaker-rspec'
5
5
  require 'simp/beaker_helpers'
6
6
  include Simp::BeakerHelpers
7
7
 
8
- require 'beaker/puppet_install_helper'
9
-
10
8
  unless ENV['BEAKER_provision'] == 'no'
11
9
  hosts.each do |host|
12
10
  unless Simp::BeakerHelpers::Snapshot.exist?(host, 'puppet_installed')
@@ -29,7 +29,6 @@ HOSTS:
29
29
  CONFIG:
30
30
  log_level: verbose
31
31
  type: aio
32
- vagrant_memsize: 256
33
32
  <% if ENV['BEAKER_PUPPET_ENVIRONMENT'] -%>
34
33
  puppet_environment: <%= ENV['BEAKER_PUPPET_ENVIRONMENT'] %>
35
34
  <% end -%>
@@ -29,7 +29,6 @@ HOSTS:
29
29
  CONFIG:
30
30
  log_level: verbose
31
31
  type: aio
32
- vagrant_memsize: 256
33
32
  <% if ENV['BEAKER_PUPPET_ENVIRONMENT'] -%>
34
33
  puppet_environment: <%= ENV['BEAKER_PUPPET_ENVIRONMENT'] %>
35
34
  <% end -%>
@@ -28,7 +28,6 @@ HOSTS:
28
28
  CONFIG:
29
29
  log_level: verbose
30
30
  type: aio
31
- vagrant_memsize: 256
32
31
  <% if ENV['BEAKER_PUPPET_ENVIRONMENT'] -%>
33
32
  puppet_environment: <%= ENV['BEAKER_PUPPET_ENVIRONMENT'] %>
34
33
  <% end -%>
@@ -18,8 +18,40 @@ end
18
18
 
19
19
  RSpec.configure do |c|
20
20
  # ensure that environment OS is ready on each host
21
- fix_errata_on(hosts)
21
+ fix_errata_on hosts
22
+
23
+ # Detect cases in which no examples are executed (e.g., nodeset does not
24
+ # have hosts with required roles)
25
+ c.fail_if_no_examples = true
22
26
 
23
27
  # Readable test descriptions
24
28
  c.formatter = :documentation
29
+
30
+ # Configure all nodes in nodeset
31
+ c.before :suite do
32
+ begin
33
+ # Install modules and dependencies from spec/fixtures/modules
34
+ copy_fixture_modules_to( hosts )
35
+ begin
36
+ server = only_host_with_role(hosts, 'server')
37
+ rescue ArgumentError =>e
38
+ server = only_host_with_role(hosts, 'default')
39
+ end
40
+
41
+ # Generate and install PKI certificates on each SUT
42
+ Dir.mktmpdir do |cert_dir|
43
+ run_fake_pki_ca_on(server, hosts, cert_dir )
44
+ hosts.each{ |sut| copy_pki_to( sut, cert_dir, '/etc/pki/simp-testing' )}
45
+ end
46
+
47
+ # add PKI keys
48
+ copy_keydist_to(server)
49
+ rescue StandardError, ScriptError => e
50
+ if ENV['PRY']
51
+ require 'pry'; binding.pry
52
+ else
53
+ raise e
54
+ end
55
+ end
56
+ end
25
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simp-beaker-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.24.4
4
+ version: 1.26.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Tessmer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-04-29 00:00:00.000000000 Z
12
+ date: 2022-07-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: beaker
@@ -37,14 +37,14 @@ dependencies:
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '6.2'
40
+ version: '7.1'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '6.2'
47
+ version: '7.1'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: beaker-puppet
50
50
  requirement: !ruby/object:Gem::Requirement
@@ -125,20 +125,6 @@ dependencies:
125
125
  - - "<"
126
126
  - !ruby/object:Gem::Version
127
127
  version: 2.0.0
128
- - !ruby/object:Gem::Dependency
129
- name: beaker-puppet_install_helper
130
- requirement: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - "~>"
133
- - !ruby/object:Gem::Version
134
- version: '0.9'
135
- type: :runtime
136
- prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - "~>"
140
- - !ruby/object:Gem::Version
141
- version: '0.9'
142
128
  - !ruby/object:Gem::Dependency
143
129
  name: highline
144
130
  requirement: !ruby/object:Gem::Requirement
@@ -167,20 +153,6 @@ dependencies:
167
153
  - - "~>"
168
154
  - !ruby/object:Gem::Version
169
155
  version: '1.8'
170
- - !ruby/object:Gem::Dependency
171
- name: net-telnet
172
- requirement: !ruby/object:Gem::Requirement
173
- requirements:
174
- - - "~>"
175
- - !ruby/object:Gem::Version
176
- version: 0.1.1
177
- type: :runtime
178
- prerelease: false
179
- version_requirements: !ruby/object:Gem::Requirement
180
- requirements:
181
- - - "~>"
182
- - !ruby/object:Gem::Version
183
- version: 0.1.1
184
156
  description: " Beaker helper methods to help scaffold SIMP acceptance tests\n"
185
157
  email: simp@simp-project.org
186
158
  executables: []
@@ -219,6 +191,7 @@ files:
219
191
  - lib/simp/beaker_helpers/windows.rb
220
192
  - lib/simp/rake/beaker.rb
221
193
  - simp-beaker-helpers.gemspec
194
+ - spec/acceptance/nodesets/amzn2.yml
222
195
  - spec/acceptance/nodesets/default.yml
223
196
  - spec/acceptance/nodesets/docker.yml
224
197
  - spec/acceptance/nodesets/oel.yml