simp-beaker-helpers 1.21.2 → 1.21.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/simp/beaker_helpers.rb +268 -201
- data/lib/simp/beaker_helpers/version.rb +1 -1
- data/spec/acceptance/nodesets/docker.yml +36 -0
- data/spec/acceptance/suites/default/check_puppet_version_spec.rb +1 -1
- data/spec/acceptance/suites/default/fixture_modules_spec.rb +6 -0
- data/spec/acceptance/suites/default/nodesets +1 -1
- data/spec/acceptance/suites/fips_from_fixtures/nodesets +1 -1
- data/spec/acceptance/suites/snapshot/nodesets +1 -1
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 876c4f6b1c6dfe6c9230d0c127e6dabdd3cc77c372e0d6def7e42606ecd35cc6
|
4
|
+
data.tar.gz: 062201bba85a2199e442d907b30aae6e2674db29de2c21c7bc49e5ef5dd7c117
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8469baf544e003f9450a6c0b5639a2112c36961846e06faf6222878b5a1f0d6eb5663fd3c921d6b2117174cfdcf74863da67c40364c34a3818a5eb1204a94901
|
7
|
+
data.tar.gz: 2810e22a457f9daf3d91e355d2ead18e1b3dd5aaecbebc8f516930968cc937b1a9322750d305591db47d3f2d0d25cd8895c9189c16ee71f9505756eb447015b0
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
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
|
+
|
1
9
|
### 1.21.2 / 2021-01-15
|
2
10
|
* Fixed version mismatch. 1.21.1 was tagged with an incorrect version
|
3
11
|
in version.rb.
|
data/lib/simp/beaker_helpers.rb
CHANGED
@@ -18,27 +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(
|
21
|
+
def install_latest_package_on(suts, package_name, package_source=nil, opts={})
|
22
22
|
default_opts = {
|
23
23
|
max_retries: 3,
|
24
24
|
retry_interval: 10
|
25
25
|
}
|
26
26
|
|
27
|
-
|
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
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
42
45
|
end
|
43
46
|
end
|
44
47
|
|
@@ -104,7 +107,30 @@ module Simp::BeakerHelpers
|
|
104
107
|
else
|
105
108
|
container_id = sut.host_hash[:docker_container_id]
|
106
109
|
end
|
107
|
-
|
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
|
+
|
108
134
|
elsif rsync_functional_on?(sut)
|
109
135
|
# This makes rsync_to work like beaker and scp usually do
|
110
136
|
exclude_hack = %(__-__' -L --exclude '__-__)
|
@@ -142,9 +168,10 @@ module Simp::BeakerHelpers
|
|
142
168
|
def pfact_on(sut, fact_name)
|
143
169
|
require 'ostruct'
|
144
170
|
|
171
|
+
found_fact = nil
|
145
172
|
# If puppet is not installed, there are no puppet facts to fetch
|
146
173
|
if sut.which('puppet').empty?
|
147
|
-
fact_on(sut, fact_name
|
174
|
+
found_fact = fact_on(sut, fact_name)
|
148
175
|
else
|
149
176
|
facts_json = nil
|
150
177
|
begin
|
@@ -163,11 +190,13 @@ module Simp::BeakerHelpers
|
|
163
190
|
|
164
191
|
found_fact = facts.dig(*(fact_name.split('.')))
|
165
192
|
|
166
|
-
#
|
167
|
-
|
168
|
-
|
169
|
-
return found_fact
|
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?
|
170
196
|
end
|
197
|
+
|
198
|
+
# Ensure that Hashes return as Hash objects
|
199
|
+
found_fact.is_a?(OpenStruct) ? found_fact.marshal_dump : found_fact
|
171
200
|
end
|
172
201
|
|
173
202
|
# Returns the modulepath on the SUT, as an Array
|
@@ -349,13 +378,16 @@ module Simp::BeakerHelpers
|
|
349
378
|
file_exists_on(sut, '/etc/crypto-policies/config')
|
350
379
|
end
|
351
380
|
|
352
|
-
def munge_ssh_crypto_policies(
|
353
|
-
|
354
|
-
|
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)
|
355
386
|
|
356
|
-
|
357
|
-
|
358
|
-
|
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
|
359
391
|
end
|
360
392
|
end
|
361
393
|
|
@@ -365,7 +397,10 @@ module Simp::BeakerHelpers
|
|
365
397
|
puts ' -- (use BEAKER_fips=no to disable)'
|
366
398
|
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
367
399
|
|
400
|
+
parallel = (ENV['BEAKER_SIMP_parallel'] == 'yes')
|
368
401
|
block_on(suts, :run_in_parallel => parallel) do |sut|
|
402
|
+
next if sut[:hypervisor] == 'docker'
|
403
|
+
|
369
404
|
if is_windows?(sut)
|
370
405
|
puts " -- SKIPPING #{sut} because it is windows"
|
371
406
|
next
|
@@ -514,155 +549,167 @@ module Simp::BeakerHelpers
|
|
514
549
|
# Enable EPEL if appropriate to do so and the system is online
|
515
550
|
#
|
516
551
|
# Can be disabled by setting BEAKER_enable_epel=no
|
517
|
-
def enable_epel_on(
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
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
|
536
573
|
|
537
|
-
|
538
|
-
|
574
|
+
if os_maj_rel == '8'
|
575
|
+
on sut, %{subscription-manager repos --enable "codeready-builder-for-rhel-8-#{os_info['architecture']}-rpms"}
|
576
|
+
end
|
539
577
|
end
|
540
|
-
end
|
541
578
|
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
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
|
546
585
|
end
|
547
586
|
end
|
548
587
|
end
|
549
588
|
end
|
550
589
|
end
|
551
590
|
|
552
|
-
def update_package_from_centos_stream(
|
553
|
-
|
554
|
-
|
555
|
-
|
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')
|
597
|
+
end
|
556
598
|
end
|
557
599
|
|
558
|
-
def linux_errata(
|
559
|
-
|
560
|
-
|
561
|
-
|
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'
|
562
606
|
|
563
|
-
|
607
|
+
os_info = fact_on(sut, 'os')
|
564
608
|
|
565
|
-
|
566
|
-
|
567
|
-
|
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
|
568
612
|
|
569
|
-
|
570
|
-
|
613
|
+
if current_domain.empty?
|
614
|
+
new_fqdn = hostname + '.beaker.test'
|
571
615
|
|
572
|
-
|
573
|
-
|
574
|
-
|
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)
|
575
619
|
|
576
|
-
|
577
|
-
|
578
|
-
|
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
|
579
624
|
end
|
580
|
-
end
|
581
625
|
|
582
|
-
|
583
|
-
|
584
|
-
|
626
|
+
if fact_on(sut, 'domain').strip.empty?
|
627
|
+
fail("Error: hosts must have an FQDN, got domain='#{current_domain}'")
|
628
|
+
end
|
585
629
|
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
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]]
|
651
|
+
end
|
652
|
+
]
|
609
653
|
|
610
|
-
|
611
|
-
|
612
|
-
|
654
|
+
user_info.keys.each do |user|
|
655
|
+
src_file = "#{user_info[user]}/.ssh/authorized_keys"
|
656
|
+
tgt_file = "/etc/ssh/local_keys/#{user}"
|
613
657
|
|
614
|
-
|
658
|
+
on(sut, %{if [ -f "#{src_file}" ]; then cp -a -f "#{src_file}" "#{tgt_file}" && chmod 644 "#{tgt_file}"; fi}, :silent => true)
|
659
|
+
end
|
615
660
|
end
|
616
|
-
end
|
617
661
|
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
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
|
622
666
|
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
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)
|
673
|
+
end
|
630
674
|
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
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
|
638
682
|
|
639
|
-
|
640
|
-
|
683
|
+
c.after(:all) do
|
684
|
+
rhel_rhsm_unsubscribe(sut)
|
685
|
+
end
|
641
686
|
end
|
642
687
|
end
|
643
|
-
end
|
644
688
|
|
645
|
-
|
646
|
-
|
647
|
-
|
689
|
+
if ['CentOS','RedHat','OracleLinux'].include?(os_info['name'])
|
690
|
+
enable_yum_repos_on(sut)
|
691
|
+
enable_epel_on(sut)
|
648
692
|
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
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
|
656
700
|
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
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
|
661
708
|
end
|
662
|
-
end
|
663
709
|
|
664
|
-
|
665
|
-
|
710
|
+
# Clean up YUM prior to starting our test runs.
|
711
|
+
on(sut, 'yum clean all')
|
712
|
+
end
|
666
713
|
end
|
667
714
|
end
|
668
715
|
end
|
@@ -671,85 +718,100 @@ module Simp::BeakerHelpers
|
|
671
718
|
#
|
672
719
|
# Must set BEAKER_RHSM_USER and BEAKER_RHSM_PASS environment variables or pass them in as
|
673
720
|
# parameters
|
674
|
-
def rhel_rhsm_subscribe(
|
721
|
+
def rhel_rhsm_subscribe(suts, *opts)
|
675
722
|
require 'securerandom'
|
676
723
|
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
'
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
'
|
692
|
-
|
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
|
+
}
|
693
743
|
}
|
694
|
-
}
|
695
744
|
|
696
|
-
|
697
|
-
|
698
|
-
|
745
|
+
if opts && opts.is_a?(Hash)
|
746
|
+
rhsm_opts.merge!(opts)
|
747
|
+
end
|
699
748
|
|
700
|
-
|
701
|
-
|
749
|
+
os = fact_on(sut, 'operatingsystem').strip
|
750
|
+
os_release = fact_on(sut, 'operatingsystemmajrelease').strip
|
702
751
|
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
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
|
707
756
|
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
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
|
713
762
|
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
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
|
719
768
|
|
720
|
-
|
721
|
-
|
722
|
-
|
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
|
723
773
|
end
|
724
774
|
end
|
725
775
|
|
726
|
-
def sosreport(
|
727
|
-
|
728
|
-
|
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')
|
729
781
|
|
730
|
-
|
782
|
+
files = on(sut, 'ls /var/tmp/sosreport* /tmp/sosreport* 2>/dev/null', :accept_all_exit_codes => true).output.lines.map(&:strip)
|
731
783
|
|
732
|
-
|
784
|
+
FileUtils.mkdir_p(dest)
|
733
785
|
|
734
|
-
|
735
|
-
|
786
|
+
files.each do |file|
|
787
|
+
scp_from(sut, file, File.absolute_path(dest))
|
788
|
+
end
|
736
789
|
end
|
737
790
|
end
|
738
791
|
|
739
|
-
def rhel_repo_enable(
|
740
|
-
|
741
|
-
|
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
|
742
798
|
end
|
743
799
|
end
|
744
800
|
|
745
|
-
def rhel_repo_disable(
|
746
|
-
|
747
|
-
|
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
|
748
807
|
end
|
749
808
|
end
|
750
809
|
|
751
|
-
def rhel_rhsm_unsubscribe(
|
752
|
-
|
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
|
753
815
|
end
|
754
816
|
|
755
817
|
# Apply known OS fixes we need to run Beaker on each SUT
|
@@ -823,6 +885,9 @@ module Simp::BeakerHelpers
|
|
823
885
|
|
824
886
|
host_entry = { fqdn => [] }
|
825
887
|
|
888
|
+
# Add the short name because containers can't change the hostname
|
889
|
+
host_entry[fqdn] << host.name if (host[:hypervisor] == 'docker')
|
890
|
+
|
826
891
|
# Ensure that all interfaces are active prior to collecting data
|
827
892
|
activate_interfaces(host) unless ENV['BEAKER_no_fix_interfaces']
|
828
893
|
|
@@ -836,7 +901,7 @@ module Simp::BeakerHelpers
|
|
836
901
|
host_entry[fqdn] << ipaddress.strip
|
837
902
|
|
838
903
|
unless host_entry[fqdn].empty?
|
839
|
-
suts_network_info[fqdn] = host_entry[fqdn]
|
904
|
+
suts_network_info[fqdn] = host_entry[fqdn].sort.uniq
|
840
905
|
end
|
841
906
|
end
|
842
907
|
end
|
@@ -865,6 +930,7 @@ module Simp::BeakerHelpers
|
|
865
930
|
end
|
866
931
|
|
867
932
|
copy_to(ca_sut, pki_hosts_file, host_dir)
|
933
|
+
|
868
934
|
# generate certs
|
869
935
|
on(ca_sut, "cd #{host_dir}; cat #{host_dir}/pki.hosts | xargs bash make.sh")
|
870
936
|
end
|
@@ -899,8 +965,8 @@ module Simp::BeakerHelpers
|
|
899
965
|
sut.mkdir_p("#{sut_pki_dir}/public")
|
900
966
|
sut.mkdir_p("#{sut_pki_dir}/private")
|
901
967
|
sut.mkdir_p("#{sut_pki_dir}/cacerts")
|
902
|
-
copy_to(sut, "#{local_host_pki_tree}/#{fqdn}.pem",
|
903
|
-
copy_to(sut, "#{local_host_pki_tree}/#{fqdn}.pub",
|
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/")
|
904
970
|
|
905
971
|
copy_to(sut, local_cacert, "#{sut_pki_dir}/cacerts/simp_auto_ca.pem")
|
906
972
|
|
@@ -911,6 +977,7 @@ module Simp::BeakerHelpers
|
|
911
977
|
# properly! This must happen on the host itself since it needs to match
|
912
978
|
# the native hashing algorithms.
|
913
979
|
hash_cmd = <<~EOM.strip
|
980
|
+
PATH=/opt/puppetlabs/puppet/bin:$PATH; \
|
914
981
|
cd #{sut_pki_dir}/cacerts; \
|
915
982
|
for x in *; do \
|
916
983
|
if [ ! -h "$x" ]; then \
|
@@ -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}- ") %>
|
@@ -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').
|
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
|
@@ -37,4 +37,10 @@ context 'after copy_fixture_modules_to( hosts )' do
|
|
37
37
|
expect(pfact_on(master, 'fips_enabled')).to eq expected
|
38
38
|
end
|
39
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
|
40
46
|
end
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
spec/acceptance/suites/default/../../nodesets
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
spec/acceptance/suites/fips_from_fixtures/../../nodesets
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
spec/acceptance/suites/snapshot/../../nodesets
|
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.21.
|
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-
|
12
|
+
date: 2021-01-20 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/docker.yml
|
191
192
|
- spec/acceptance/nodesets/ubuntu.yml
|
192
193
|
- spec/acceptance/suites/default/check_puppet_version_spec.rb
|
193
194
|
- spec/acceptance/suites/default/enable_fips_spec.rb
|
@@ -221,7 +222,7 @@ licenses:
|
|
221
222
|
- Apache-2.0
|
222
223
|
metadata:
|
223
224
|
issue_tracker: https://simp-project.atlassian.net
|
224
|
-
post_install_message:
|
225
|
+
post_install_message:
|
225
226
|
rdoc_options: []
|
226
227
|
require_paths:
|
227
228
|
- lib
|
@@ -236,12 +237,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
237
|
- !ruby/object:Gem::Version
|
237
238
|
version: '0'
|
238
239
|
requirements: []
|
239
|
-
|
240
|
-
|
240
|
+
rubyforge_project:
|
241
|
+
rubygems_version: 2.7.10
|
242
|
+
signing_key:
|
241
243
|
specification_version: 4
|
242
244
|
summary: beaker helper methods for SIMP
|
243
245
|
test_files:
|
244
246
|
- spec/acceptance/nodesets/default.yml
|
247
|
+
- spec/acceptance/nodesets/docker.yml
|
245
248
|
- spec/acceptance/nodesets/ubuntu.yml
|
246
249
|
- spec/acceptance/suites/default/check_puppet_version_spec.rb
|
247
250
|
- spec/acceptance/suites/default/enable_fips_spec.rb
|