simp-beaker-helpers 1.18.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.fixtures.yml +8 -0
- data/.gitignore +8 -0
- data/.gitlab-ci.yml +163 -0
- data/.rspec +4 -0
- data/.rubocop.yml +546 -0
- data/.travis.yml +36 -0
- data/CHANGELOG.md +231 -0
- data/Gemfile +51 -0
- data/LICENSE +27 -0
- data/README.md +543 -0
- data/Rakefile +151 -0
- data/files/pki/clean.sh +1 -0
- data/files/pki/make.sh +101 -0
- data/files/pki/template_ca.cnf +259 -0
- data/files/pki/template_host.cnf +263 -0
- data/files/puppet-agent-versions.yaml +46 -0
- data/lib/simp/beaker_helpers.rb +1231 -0
- data/lib/simp/beaker_helpers/constants.rb +25 -0
- data/lib/simp/beaker_helpers/inspec.rb +328 -0
- data/lib/simp/beaker_helpers/snapshot.rb +156 -0
- data/lib/simp/beaker_helpers/ssg.rb +383 -0
- data/lib/simp/beaker_helpers/version.rb +5 -0
- data/lib/simp/beaker_helpers/windows.rb +16 -0
- data/lib/simp/rake/beaker.rb +269 -0
- data/simp-beaker-helpers.gemspec +38 -0
- data/spec/acceptance/nodesets/default.yml +32 -0
- data/spec/acceptance/suites/default/check_puppet_version_spec.rb +23 -0
- data/spec/acceptance/suites/default/enable_fips_spec.rb +23 -0
- data/spec/acceptance/suites/default/fixture_modules_spec.rb +22 -0
- data/spec/acceptance/suites/default/install_simp_deps_repo_spec.rb +43 -0
- data/spec/acceptance/suites/default/nodesets +1 -0
- data/spec/acceptance/suites/default/pki_tests_spec.rb +55 -0
- data/spec/acceptance/suites/default/set_hieradata_on_spec.rb +33 -0
- data/spec/acceptance/suites/default/write_hieradata_to_spec.rb +33 -0
- data/spec/acceptance/suites/fips_from_fixtures/00_default_spec.rb +63 -0
- data/spec/acceptance/suites/fips_from_fixtures/metadata.yml +2 -0
- data/spec/acceptance/suites/fips_from_fixtures/nodesets +1 -0
- data/spec/acceptance/suites/offline/00_default_spec.rb +165 -0
- data/spec/acceptance/suites/offline/README +2 -0
- data/spec/acceptance/suites/offline/nodesets/default.yml +26 -0
- data/spec/acceptance/suites/puppet_collections/00_default_spec.rb +25 -0
- data/spec/acceptance/suites/puppet_collections/metadata.yml +2 -0
- data/spec/acceptance/suites/puppet_collections/nodesets/default.yml +30 -0
- data/spec/acceptance/suites/snapshot/00_snapshot_test_spec.rb +82 -0
- data/spec/acceptance/suites/snapshot/10_general_usage_spec.rb +56 -0
- data/spec/acceptance/suites/snapshot/nodesets +1 -0
- data/spec/acceptance/suites/windows/00_default_spec.rb +119 -0
- data/spec/acceptance/suites/windows/metadata.yml +2 -0
- data/spec/acceptance/suites/windows/nodesets/default.yml +33 -0
- data/spec/acceptance/suites/windows/nodesets/win2016.yml +35 -0
- data/spec/acceptance/suites/windows/nodesets/win2019.yml +34 -0
- data/spec/lib/simp/beaker_helpers_spec.rb +216 -0
- data/spec/spec_helper.rb +100 -0
- data/spec/spec_helper_acceptance.rb +25 -0
- metadata +243 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
3
|
+
require 'simp/beaker_helpers/version'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'simp-beaker-helpers'
|
8
|
+
s.date = Date.today.to_s
|
9
|
+
s.summary = 'beaker helper methods for SIMP'
|
10
|
+
s.description = <<-EOF
|
11
|
+
Beaker helper methods to help scaffold SIMP acceptance tests
|
12
|
+
EOF
|
13
|
+
s.version = Simp::BeakerHelpers::VERSION
|
14
|
+
s.license = 'Apache-2.0'
|
15
|
+
s.authors = ['Chris Tessmer','Trevor Vaughan']
|
16
|
+
s.email = 'simp@simp-project.org'
|
17
|
+
s.homepage = 'https://github.com/simp/rubygem-simp-beaker-helpers'
|
18
|
+
s.metadata = {
|
19
|
+
'issue_tracker' => 'https://simp-project.atlassian.net'
|
20
|
+
}
|
21
|
+
s.add_runtime_dependency 'beaker' , ['>= 4.17.0', '< 5.0.0']
|
22
|
+
s.add_runtime_dependency 'beaker-rspec' , '~> 6.2'
|
23
|
+
s.add_runtime_dependency 'beaker-puppet' , ['>= 1.18.14', '< 2.0.0']
|
24
|
+
s.add_runtime_dependency 'beaker-docker' , '~> 0.3'
|
25
|
+
s.add_runtime_dependency 'beaker-vagrant' , ['>= 0.6.4', '< 2.0.0']
|
26
|
+
s.add_runtime_dependency 'beaker-puppet_install_helper', '~> 0.9'
|
27
|
+
s.add_runtime_dependency 'highline' , '~> 2.0'
|
28
|
+
s.add_runtime_dependency 'nokogiri' , '~> 1.8'
|
29
|
+
|
30
|
+
# Because net-telnet dropped support for Ruby < 2.3.0
|
31
|
+
# TODO: Update this when we no longer support Ruby 2.1.9 (should be October 2018)
|
32
|
+
s.add_runtime_dependency 'net-telnet', '~> 0.1.1'
|
33
|
+
|
34
|
+
### s.files = Dir['Rakefile', '{bin,lib,spec}/**/*', 'README*', 'LICENSE*'] & `git ls-files -z .`.split("\0")
|
35
|
+
s.files = `git ls-files`.split("\n")
|
36
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
37
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
38
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<%
|
2
|
+
if ENV['BEAKER_HYPERVISOR']
|
3
|
+
hypervisor = ENV['BEAKER_HYPERVISOR']
|
4
|
+
else
|
5
|
+
hypervisor = 'vagrant'
|
6
|
+
end
|
7
|
+
-%>
|
8
|
+
HOSTS:
|
9
|
+
server-el7:
|
10
|
+
roles:
|
11
|
+
- server
|
12
|
+
- default
|
13
|
+
- master
|
14
|
+
- el7
|
15
|
+
platform: el-7-x86_64
|
16
|
+
box: centos/7
|
17
|
+
hypervisor: <%= hypervisor %>
|
18
|
+
|
19
|
+
server-el6:
|
20
|
+
roles:
|
21
|
+
- el6
|
22
|
+
platform: el-6-x86_64
|
23
|
+
box: centos/6
|
24
|
+
hypervisor: <%= hypervisor %>
|
25
|
+
|
26
|
+
CONFIG:
|
27
|
+
log_level: verbose
|
28
|
+
type: aio
|
29
|
+
vagrant_memsize: 256
|
30
|
+
<% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
|
31
|
+
puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
|
32
|
+
<% end -%>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
hosts.each do |host|
|
4
|
+
describe 'make sure puppet version is valid' do
|
5
|
+
context "on #{host}" do
|
6
|
+
puppet_collection = host.options[:puppet_collection]
|
7
|
+
|
8
|
+
client_puppet_version = on(host, 'puppet --version').output.strip
|
9
|
+
|
10
|
+
if puppet_collection =~ /puppet(\d+)/
|
11
|
+
puppet_collection_version = $1
|
12
|
+
|
13
|
+
it "should be running puppet version #{puppet_collection_version}" do
|
14
|
+
expect(client_puppet_version.split('.').first).to eq(puppet_collection_version)
|
15
|
+
end
|
16
|
+
else
|
17
|
+
it 'should not be running puppet 5' do
|
18
|
+
expect(client_puppet_version.split('.').first).to eq '5'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
hosts.each do |host|
|
4
|
+
describe 'FIPS enabled from Forge' do
|
5
|
+
context "on #{host}" do
|
6
|
+
if ENV['BEAKER_fips'] == 'yes'
|
7
|
+
it 'creates an alternate apply directory' do
|
8
|
+
on(host, 'test -d /root/.beaker_fips/modules')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'has fips enabled' do
|
12
|
+
stdout = on(host, 'cat /proc/sys/crypto/fips_enabled').stdout.strip
|
13
|
+
expect(stdout).to eq('1')
|
14
|
+
end
|
15
|
+
else
|
16
|
+
it 'has fips disabled' do
|
17
|
+
stdout = on(host, 'cat /proc/sys/crypto/fips_enabled').stdout.strip
|
18
|
+
expect(stdout).to eq('0')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
context 'after copy_fixture_modules_to( hosts )' do
|
4
|
+
before(:all) do
|
5
|
+
# This should automatically run pluginsync_on hosts
|
6
|
+
copy_fixture_modules_to( hosts )
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "fact_on(master,'root_home')" do
|
10
|
+
it 'should not return value of `root_home`' do
|
11
|
+
puts fact = fact_on(master, 'root_home')
|
12
|
+
expect( fact ).to eq ''
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "pfact_on(master,'root_home')" do
|
17
|
+
it 'should return value of `root_home`' do
|
18
|
+
puts fact = pfact_on(master, 'root_home')
|
19
|
+
expect( fact ).to eq '/root'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
hosts.each do |host|
|
4
|
+
describe '#write_hieradata_to' do
|
5
|
+
|
6
|
+
it 'should install yum utils' do
|
7
|
+
host.install_package('yum-utils')
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'defailt settings' do
|
11
|
+
before(:all) { install_simp_repos(host) }
|
12
|
+
|
13
|
+
it 'creates the repo' do
|
14
|
+
on host, 'test -f /etc/yum.repos.d/simp.repo'
|
15
|
+
on host, 'test -f /etc/yum.repos.d/simp_deps.repo'
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'enables the correct repos' do
|
19
|
+
simp6info = on(host, '/usr/bin/yum repolist -v simp | grep ^Repo-status').stdout.strip
|
20
|
+
expect(simp6info).to match(/.*Repo-status.*enabled.*/)
|
21
|
+
simp6depsinfo = on(host, 'yum repolist -v simp_deps| grep ^Repo-status').stdout.strip
|
22
|
+
expect(simp6depsinfo).to match(/.*Repo-status.*enabled.*/)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when passed a disabled list ' do
|
27
|
+
before(:all) { install_simp_repos(host, ['simp'] ) }
|
28
|
+
|
29
|
+
it 'creates the repo' do
|
30
|
+
on host, 'test -f /etc/yum.repos.d/simp.repo'
|
31
|
+
on host, 'test -f /etc/yum.repos.d/simp_deps.repo'
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'enables the correct repos' do
|
35
|
+
simp6info = on(host, 'yum repolist -v simp | grep ^Repo-status').stdout.strip
|
36
|
+
expect(simp6info).to match(/.*Repo-status.*disabled.*/)
|
37
|
+
simp6depsinfo = on(host, 'yum repolist -v simp_deps| grep ^Repo-status').stdout.strip
|
38
|
+
expect(simp6depsinfo).to match(/.*Repo-status.*enabled.*/)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
spec/acceptance/suites/default/../../nodesets
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
require 'tmpdir'
|
3
|
+
|
4
|
+
|
5
|
+
context 'PKI operations' do
|
6
|
+
|
7
|
+
context 'after run_fake_pki_ca_on(master,hosts)' do
|
8
|
+
before(:all) do
|
9
|
+
copy_fixture_modules_to( hosts )
|
10
|
+
end
|
11
|
+
|
12
|
+
shared_examples_for 'a correctly copied keydist/ tree' do |test_dir|
|
13
|
+
it 'correctly copies keydist/ tree' do
|
14
|
+
on(master, "ls -d #{test_dir}" +
|
15
|
+
" #{test_dir}/cacerts" +
|
16
|
+
" #{test_dir}/cacerts/cacert_*.pem"
|
17
|
+
)
|
18
|
+
|
19
|
+
hosts.each do |host|
|
20
|
+
name = host.node_name
|
21
|
+
on(master, "ls -d #{test_dir}/#{name}/cacerts" +
|
22
|
+
" #{test_dir}/#{name}/#{name}.pem" +
|
23
|
+
" #{test_dir}/#{name}/#{name}.pub" +
|
24
|
+
" #{test_dir}/cacerts/cacert_*.pem"
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'a Fake CA under /root' do
|
31
|
+
tmp_keydist_dir = Dir.mktmpdir 'simp-beaker-helpers__pki-tests'
|
32
|
+
run_fake_pki_ca_on( master, hosts, tmp_keydist_dir )
|
33
|
+
|
34
|
+
it 'should create /root/pki' do
|
35
|
+
on(master, 'test -d /root/pki')
|
36
|
+
end
|
37
|
+
|
38
|
+
it_behaves_like 'a correctly copied keydist/ tree', '/root/pki/keydist'
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
describe 'after copy_keydist_to' do
|
43
|
+
test_dir = '/etc/puppetlabs/code/environments/production/modules/pki/files/keydist'
|
44
|
+
copy_keydist_to(master)
|
45
|
+
it_behaves_like 'a correctly copied keydist/ tree', test_dir
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'after copy_keydist_to(master,"/tmp/foo")' do
|
49
|
+
test_dir = '/tmp/foo'
|
50
|
+
copy_keydist_to(master, test_dir)
|
51
|
+
it_behaves_like 'a correctly copied keydist/ tree', test_dir
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
hosts.each do |host|
|
4
|
+
describe '#set_hieradata_on' do
|
5
|
+
context 'when passed a YAML string' do
|
6
|
+
before(:all) { set_hieradata_on(host, "---\n") }
|
7
|
+
after(:all) { on(host, "rm -rf #{hiera_datadir(host)}") }
|
8
|
+
|
9
|
+
it 'creates the datadir' do
|
10
|
+
on host, "test -d #{hiera_datadir(host)}"
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'writes the correct contents to the correct file' do
|
14
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/common.yaml").stdout
|
15
|
+
expect(stdout).to eq("---\n")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when passed a hash' do
|
20
|
+
before(:all) { set_hieradata_on(host, { 'foo' => 'bar' }) }
|
21
|
+
after(:all) { on(host, "rm -rf #{hiera_datadir(host)}") }
|
22
|
+
|
23
|
+
it 'creates the datadir' do
|
24
|
+
on host, "test -d #{hiera_datadir(host)}"
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'writes the correct contents to the correct file' do
|
28
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/common.yaml").stdout
|
29
|
+
expect(stdout).to eq("---\nfoo: bar\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
hosts.each do |host|
|
4
|
+
describe '#write_hieradata_to' do
|
5
|
+
context 'when passed a YAML string' do
|
6
|
+
before(:all) { set_hieradata_on(host, "---\n") }
|
7
|
+
after(:all) { on(host, "rm -rf #{hiera_datadir(host)}") }
|
8
|
+
|
9
|
+
it 'creates the datadir' do
|
10
|
+
on host, "test -d #{hiera_datadir(host)}"
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'writes the correct contents to the correct file' do
|
14
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/common.yaml").stdout
|
15
|
+
expect(stdout).to eq("---\n")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when passed a hash' do
|
20
|
+
before(:all) { set_hieradata_on(host, { 'foo' => 'bar' }) }
|
21
|
+
after(:all) { on(host, "rm -rf #{hiera_datadir(host)}") }
|
22
|
+
|
23
|
+
it 'creates the datadir' do
|
24
|
+
on host, "test -d #{hiera_datadir(host)}"
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'writes the correct contents to the correct file' do
|
28
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/common.yaml").stdout
|
29
|
+
expect(stdout).to eq("---\nfoo: bar\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
class ScrubFixtures
|
2
|
+
require 'simp/beaker_helpers'
|
3
|
+
include Simp::BeakerHelpers
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
FileUtils.rm_rf(File.join(fixtures_path, 'modules'))
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'yaml'
|
11
|
+
require 'tempfile'
|
12
|
+
|
13
|
+
alt_fixtures = File.absolute_path('.fips_fixtures.yml')
|
14
|
+
|
15
|
+
new_fixtures = {
|
16
|
+
'fixtures' => {
|
17
|
+
'repositories' => {}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
new_fixtures['fixtures']['repositories']['fips'] = 'https://github.com/simp/pupmod-simp-fips'
|
22
|
+
new_fixtures['fixtures']['repositories']['augeasproviders_core'] = 'https://github.com/simp/augeasproviders_core'
|
23
|
+
new_fixtures['fixtures']['repositories']['augeasproviders_grub'] = 'https://github.com/simp/augeasproviders_grub'
|
24
|
+
new_fixtures['fixtures']['repositories']['simplib'] = 'https://github.com/simp/pupmod-simp-simplib'
|
25
|
+
new_fixtures['fixtures']['repositories']['stdlib'] = 'https://github.com/simp/puppetlabs-stdlib'
|
26
|
+
|
27
|
+
File.open(alt_fixtures, 'w'){ |fh| fh.puts(new_fixtures.to_yaml) }
|
28
|
+
|
29
|
+
ScrubFixtures.new
|
30
|
+
|
31
|
+
ENV['BEAKER_fips'] = 'yes'
|
32
|
+
ENV['FIXTURES_YML'] = alt_fixtures
|
33
|
+
|
34
|
+
Bundler.with_clean_env{
|
35
|
+
ENV['FIXTURES_YML'] = alt_fixtures
|
36
|
+
|
37
|
+
%x{bundle exec rake spec_prep}
|
38
|
+
}
|
39
|
+
|
40
|
+
require 'spec_helper_acceptance'
|
41
|
+
|
42
|
+
describe 'FIPS pre-installed' do
|
43
|
+
after(:all) do
|
44
|
+
if alt_fixtures && File.exist?(alt_fixtures)
|
45
|
+
FileUtils.rm(alt_fixtures)
|
46
|
+
|
47
|
+
ScrubFixtures.new
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
hosts.each do |host|
|
52
|
+
context "on #{host}" do
|
53
|
+
it 'does not create an alternate apply directory' do
|
54
|
+
on(host, 'test ! -d /root/.beaker_fips/modules')
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'has fips enabled' do
|
58
|
+
stdout = on(host, 'cat /proc/sys/crypto/fips_enabled').stdout.strip
|
59
|
+
expect(stdout).to eq('1')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
spec/acceptance/suites/fips_from_fixtures/../../nodesets
|
@@ -0,0 +1,165 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
describe 'Offline mode' do
|
4
|
+
hosts.each do |host|
|
5
|
+
context "on #{host}" do
|
6
|
+
let(:vagrant_version) { '2.2.5' }
|
7
|
+
let(:vagrant_rpm) { "https://releases.hashicorp.com/vagrant/#{vagrant_version}/vagrant_#{vagrant_version}_x86_64.rpm" }
|
8
|
+
let(:virtualbox_repo) { 'http://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo' }
|
9
|
+
let(:build_user) { 'build_user' }
|
10
|
+
let(:build_user_cmd) { "runuser #{build_user} -l -c" }
|
11
|
+
|
12
|
+
# Not sure if this is a QEMU thing with the image or something else
|
13
|
+
it 'works around a CentOS curl bug with libvirt' do
|
14
|
+
on(host, %(touch /etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned))
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'adds the build user' do
|
18
|
+
on(host, %(useradd -b /home -G wheel -m -c "Build User" -s /bin/bash -U #{build_user}))
|
19
|
+
|
20
|
+
# Allow the build user to perform privileged operations
|
21
|
+
on(host, %(echo 'Defaults:build_user !requiretty' >> /etc/sudoers))
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'installs required packages' do
|
25
|
+
host.install_package('epel-release')
|
26
|
+
|
27
|
+
required_packages = [
|
28
|
+
'augeas-devel',
|
29
|
+
'autoconf',
|
30
|
+
'automake',
|
31
|
+
'bison',
|
32
|
+
'createrepo',
|
33
|
+
'curl',
|
34
|
+
'dkms',
|
35
|
+
'initscripts',
|
36
|
+
'gcc',
|
37
|
+
'gcc-c++',
|
38
|
+
'genisoimage',
|
39
|
+
'git',
|
40
|
+
'glibc-devel',
|
41
|
+
'glibc-headers',
|
42
|
+
'gnupg2',
|
43
|
+
'kernel-devel',
|
44
|
+
'libffi-devel',
|
45
|
+
'libicu-devel',
|
46
|
+
'libtool',
|
47
|
+
'libvirt',
|
48
|
+
'libvirt-client',
|
49
|
+
'libvirt-devel',
|
50
|
+
'libxml2',
|
51
|
+
'libxml2-devel',
|
52
|
+
'libxslt',
|
53
|
+
'libxslt-devel',
|
54
|
+
'libyaml-devel',
|
55
|
+
'make',
|
56
|
+
'ntpdate',
|
57
|
+
'openssl',
|
58
|
+
'openssl-devel',
|
59
|
+
'qemu',
|
60
|
+
'readline-devel',
|
61
|
+
'rpm-build',
|
62
|
+
'rpm-sign',
|
63
|
+
'rpmdevtools',
|
64
|
+
'ruby-devel',
|
65
|
+
'rubygems',
|
66
|
+
'seabios',
|
67
|
+
'sqlite-devel',
|
68
|
+
'util-linux',
|
69
|
+
'which'
|
70
|
+
]
|
71
|
+
|
72
|
+
on(host, %(yum -y install #{required_packages.join(' ')}))
|
73
|
+
on(host, %(yum -y update))
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'removes limits from the system' do
|
77
|
+
# Remove system limits
|
78
|
+
on(host, %(rm -rf /etc/security/limits.d/*.conf))
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'installs the latest VirtualBox' do
|
82
|
+
on(host, %(curl "#{virtualbox_repo}" -o /etc/yum.repos.d/virtualbox.repo))
|
83
|
+
on(host, 'yum -y install $(yum -y list | grep VirtualBox | sort | tail -1 | cut -f 1 -d " ")')
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'installs the VirtualBox extension pack' do
|
87
|
+
on(host, 'VERSION=$(VBoxManage --version | tail -1 | cut -f 1 -d "r") && curl -Lo ${TMPDIR}/Oracle_VM_VirtualBox_Extension_Pack-${VERSION}.vbox-extpack http://download.virtualbox.org/virtualbox/${VERSION}/Oracle_VM_VirtualBox_Extension_Pack-${VERSION}.vbox-extpack && yes | VBoxManage extpack install ${TMPDIR}/Oracle_VM_VirtualBox_Extension_Pack-${VERSION}.vbox-extpack && rm -rf ${TMPDIR}/Oracle_VM_VirtualBox_Extension_Pack-${VERSION}.vbox-extpack')
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'adds the build user to the vboxusers group' do
|
91
|
+
on(host, %(usermod -a -G vboxusers #{build_user}))
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'reboots the system to finalize VirtualBox' do
|
95
|
+
host.reboot
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'installs RPM for the build user' do
|
99
|
+
# Install RVM
|
100
|
+
on(host, %(#{build_user_cmd} "for i in {1..5}; do { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3; } && { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB; } && break || sleep 1; done"))
|
101
|
+
on(host, %(#{build_user_cmd} "gpg2 --refresh-keys"))
|
102
|
+
on(host, %(#{build_user_cmd} "curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer -o rvm-installer && curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer.asc -o rvm-installer.asc && gpg2 --verify rvm-installer.asc rvm-installer && bash rvm-installer"))
|
103
|
+
on(host, %(#{build_user_cmd} "rvm install 2.4.4 --disable-binary"))
|
104
|
+
on(host, %(#{build_user_cmd} "rvm use --default 2.4.4"))
|
105
|
+
on(host, %(#{build_user_cmd} "rvm all do gem install bundler -v '~> 1.16' --no-document"))
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'installs vagrant' do
|
109
|
+
on(host, %(yum -y install #{vagrant_rpm}))
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'preps for testing by downloading boxes for tests' do
|
113
|
+
on(host, %(#{build_user_cmd} "vagrant box add --provider virtualbox centos/6"))
|
114
|
+
on(host, %(#{build_user_cmd} "vagrant box add --provider virtualbox centos/7"))
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'runs a simple nested virt test' do
|
118
|
+
build_user_homedir = on(host, "readlink -f ~#{build_user}").output.strip
|
119
|
+
vagrant_testdir = "#{build_user_homedir}/vagrant_test"
|
120
|
+
|
121
|
+
vagrant_test_file = <<-EOM
|
122
|
+
Vagrant.configure("2") do |c|
|
123
|
+
c.vm.define 'test' do |v|
|
124
|
+
v.vm.hostname = 'centos7.test.net'
|
125
|
+
v.vm.box = 'centos/7'
|
126
|
+
v.vm.box_check_update = 'false'
|
127
|
+
end
|
128
|
+
end
|
129
|
+
EOM
|
130
|
+
|
131
|
+
host.mkdir_p(vagrant_testdir)
|
132
|
+
|
133
|
+
create_remote_file(host, "#{vagrant_testdir}/Vagrantfile", vagrant_test_file)
|
134
|
+
|
135
|
+
on(host, %(chown -R #{build_user} #{vagrant_testdir}))
|
136
|
+
|
137
|
+
on(host, %(#{build_user_cmd} "cd #{vagrant_testdir} && vagrant up"))
|
138
|
+
on(host, %(#{build_user_cmd} "cd #{vagrant_testdir} && vagrant destroy -f"))
|
139
|
+
end
|
140
|
+
|
141
|
+
# We're testing a real module since that has the widest set of
|
142
|
+
# repercussions for reaching out to the internet
|
143
|
+
it 'downloads a module to test' do
|
144
|
+
on(host, %(#{build_user_cmd} "git clone https://github.com/simp/pupmod-simp-at"))
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'preps the module for building' do
|
148
|
+
on(host, %(#{build_user_cmd} "cd pupmod-simp-at; bundle update"))
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'runs a network-connected test' do
|
152
|
+
on(host, %(#{build_user_cmd} "cd pupmod-simp-at; rake beaker:suites"))
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'disables all internet network traffic via iptables' do
|
156
|
+
on(host, %(iptables -I OUTPUT -d `ip route | awk '/default/ {print $3}'`/16 -j ACCEPT))
|
157
|
+
on(host, 'iptables -A OUTPUT -j DROP')
|
158
|
+
end
|
159
|
+
|
160
|
+
xit 'runs a network-disconnected test' do
|
161
|
+
on(host, %(#{build_user_cmd} "cd pupmod-simp-at; rake beaker:suites"))
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|