beaker-puppet 1.7.0 → 1.8.0
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 +4 -4
- data/lib/beaker-puppet/install_utils/aio_defaults.rb +17 -3
- data/lib/beaker-puppet/install_utils/foss_utils.rb +13 -5
- data/lib/beaker-puppet/install_utils/puppet_utils.rb +2 -2
- data/lib/beaker-puppet/version.rb +1 -1
- data/setup/{aio → common}/011_Install_Puppet_Server.rb +0 -0
- data/setup/{aio → common}/012_Finalize_Installs.rb +0 -0
- data/setup/{aio → common}/020_InstallCumulusModules.rb +0 -0
- data/setup/{aio → common}/021_InstallAristaModuleMasters.rb +0 -0
- data/setup/{aio → common}/022_InstallAristaModuleAgents.rb +0 -0
- data/setup/{aio → common}/045_EnsureMasterStarted.rb +0 -0
- data/setup/git/000_EnvSetup.rb +94 -97
- data/setup/git/010_TestSetup.rb +39 -58
- data/setup/git/020_PuppetUserAndGroup.rb +0 -3
- data/tasks/ci.rake +20 -11
- metadata +8 -10
- data/setup/git/011_SetMaster.rb +0 -15
- data/setup/git/030_PuppetMasterSanity.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de946f1d393facad35ab19ca4864743772344082
|
4
|
+
data.tar.gz: 01993f13f7f622a4ab94928b681640a07ce9706b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1b58fa827fa766d54f3d900c2a7a8b2ffe9dd8ddb3ae54d8a19c23ab88f6b0a6674d45d3b23d46569c8ffec0135ba1bc7714196f4ba24ac2a3cb7ab402cb90f
|
7
|
+
data.tar.gz: 4d21d18da09e34b826d7a9218a7dce6eef26aeec1745e4289940e7a655332e6bc6563e31d16e7bece336700aedc83238c741ba6947ec560de3a99faa09b74165
|
@@ -23,8 +23,13 @@ module Beaker
|
|
23
23
|
# include sys/ruby) and the newer versions, which have no custom ruby
|
24
24
|
# directory
|
25
25
|
'windows' => { # windows with cygwin
|
26
|
-
'puppetbindir' => '/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/bin
|
27
|
-
'privatebindir' => '/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/puppet/bin:/cygdrive/c/Program Files
|
26
|
+
'puppetbindir' => '/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/bin',
|
27
|
+
'privatebindir' => '/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/puppet/bin:/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/sys/ruby/bin',
|
28
|
+
'distmoduledir' => '`cygpath -smF 35`/PuppetLabs/code/modules',
|
29
|
+
},
|
30
|
+
'windows-64' => { # windows with cygwin
|
31
|
+
'puppetbindir' => '/cygdrive/c/Program Files/Puppet Labs/Puppet/bin',
|
32
|
+
'privatebindir' => '/cygdrive/c/Program Files/Puppet Labs/Puppet/puppet/bin:/cygdrive/c/Program Files/Puppet Labs/Puppet/sys/ruby/bin',
|
28
33
|
'distmoduledir' => '`cygpath -smF 35`/PuppetLabs/code/modules',
|
29
34
|
},
|
30
35
|
'pswindows' => { # pure windows
|
@@ -57,7 +62,16 @@ module Beaker
|
|
57
62
|
if host.is_powershell?
|
58
63
|
platform = 'pswindows'
|
59
64
|
elsif host['platform'] =~ /windows/
|
60
|
-
|
65
|
+
if host[:ruby_arch] == 'x64'
|
66
|
+
ruby_arch = /-64/
|
67
|
+
else
|
68
|
+
ruby_arch = /-32/
|
69
|
+
end
|
70
|
+
if host['platform'] =~ ruby_arch
|
71
|
+
platform = 'windows-64'
|
72
|
+
else
|
73
|
+
platform = 'windows'
|
74
|
+
end
|
61
75
|
else
|
62
76
|
platform = 'unix'
|
63
77
|
end
|
@@ -1447,18 +1447,26 @@ module Beaker
|
|
1447
1447
|
"env PATH=\"#{host['privatebindir']}:${PATH}\" ruby"
|
1448
1448
|
end
|
1449
1449
|
|
1450
|
-
def
|
1451
|
-
if
|
1450
|
+
def get_command(command_name, host, type = 'aio')
|
1451
|
+
if ['aio', 'git'].include?(type)
|
1452
1452
|
if host['platform'] =~ /windows/
|
1453
|
-
"env PATH=\"#{host['privatebindir']}:${PATH}\" cmd /c
|
1453
|
+
"env PATH=\"#{host['privatebindir']}:${PATH}\" cmd /c #{command_name}"
|
1454
1454
|
else
|
1455
|
-
"env PATH=\"#{host['privatebindir']}:${PATH}\"
|
1455
|
+
"env PATH=\"#{host['privatebindir']}:${PATH}\" #{command_name}"
|
1456
1456
|
end
|
1457
1457
|
else
|
1458
|
-
on(host,
|
1458
|
+
on(host, "which #{command_name}").stdout.chomp
|
1459
1459
|
end
|
1460
1460
|
end
|
1461
1461
|
|
1462
|
+
def bundle_command(host, type = 'aio')
|
1463
|
+
get_command('bundle', host, type)
|
1464
|
+
end
|
1465
|
+
|
1466
|
+
def gem_command(host, type = 'aio')
|
1467
|
+
get_command('gem', host, type)
|
1468
|
+
end
|
1469
|
+
|
1462
1470
|
# Configures gem sources on hosts to use a mirror, if specified
|
1463
1471
|
# This is a duplicate of the Gemfile logic.
|
1464
1472
|
def configure_gem_mirror(hosts)
|
@@ -21,7 +21,7 @@ module Beaker
|
|
21
21
|
# 'foss'
|
22
22
|
def normalize_type type
|
23
23
|
case type
|
24
|
-
when /(\A|-)
|
24
|
+
when /(\A|-)foss(\Z|-)/
|
25
25
|
'foss'
|
26
26
|
when /(\A|-)pe(\Z|-)/
|
27
27
|
'pe'
|
@@ -35,7 +35,7 @@ module Beaker
|
|
35
35
|
#Given a host construct a PATH that includes puppetbindir, facterbindir and hierabindir
|
36
36
|
# @param [Host] host A single host to construct pathing for
|
37
37
|
def construct_puppet_path(host)
|
38
|
-
path = (%w(puppetbindir facterbindir hierabindir)).compact.reject(&:empty?)
|
38
|
+
path = (%w(puppetbindir facterbindir hierabindir privatebindir)).compact.reject(&:empty?)
|
39
39
|
#get the PATH defaults
|
40
40
|
path.map! { |val| host[val] }
|
41
41
|
path = path.compact.reject(&:empty?)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/setup/git/000_EnvSetup.rb
CHANGED
@@ -1,68 +1,44 @@
|
|
1
1
|
test_name "Setup environment"
|
2
2
|
|
3
|
-
|
3
|
+
require 'json'
|
4
|
+
require 'open-uri'
|
4
5
|
|
6
|
+
step 'Configure paths' do
|
7
|
+
add_aio_defaults_on(hosts)
|
8
|
+
add_puppet_paths_on(hosts)
|
9
|
+
end
|
10
|
+
|
11
|
+
step "Install git and tar"
|
5
12
|
PACKAGES = {
|
6
|
-
:redhat => [
|
7
|
-
'git',
|
8
|
-
'ruby',
|
9
|
-
'rubygem-json', # invalid on RHEL6
|
10
|
-
'rubygem-io-console', # required for Fedora25 to bundle install
|
11
|
-
'rubygem-rdoc' # required for Fedora25 to install gems
|
12
|
-
],
|
13
|
+
:redhat => ['git'],
|
13
14
|
:debian => [
|
14
15
|
['git', 'git-core'],
|
15
|
-
'ruby',
|
16
|
-
],
|
17
|
-
:debian_ruby18 => [
|
18
|
-
'libjson-ruby',
|
19
|
-
],
|
20
|
-
:solaris_11 => [
|
21
|
-
['git', 'developer/versioning/git'],
|
22
16
|
],
|
23
17
|
:solaris_10 => [
|
24
18
|
'coreutils',
|
25
|
-
'curl', # update curl to fix "CURLOPT_SSL_VERIFYHOST no longer supports 1 as value!" issue
|
26
19
|
'git',
|
27
|
-
'
|
28
|
-
'ruby19_dev',
|
29
|
-
'gcc4core',
|
30
|
-
],
|
31
|
-
:windows => [
|
32
|
-
'git',
|
33
|
-
# there isn't a need for json on windows because it is bundled in ruby 1.9
|
20
|
+
'gtar',
|
34
21
|
],
|
22
|
+
:windows => ['git'],
|
23
|
+
:sles => ['git'],
|
35
24
|
}
|
36
25
|
|
37
|
-
# override
|
38
|
-
#
|
39
|
-
|
40
|
-
# settings from modulepath and Beaker can properly introspect these settings
|
41
|
-
hosts.each do |host|
|
42
|
-
platform = host['platform'] =~ /windows/ ? 'windows' : 'unix'
|
43
|
-
|
44
|
-
host['puppetbindir'] = '/usr/bin' if platform == 'windows'
|
26
|
+
# We need to be able override which tar we use on solaris, which we call later
|
27
|
+
# when we unpack the puppet-runtime archive
|
28
|
+
tar = 'tar'
|
45
29
|
|
46
|
-
|
47
|
-
# also alters puppetbindir / privatebindir to use package installed
|
48
|
-
# paths rather than git installed paths
|
49
|
-
host['distmoduledir'] = AIO_DEFAULTS[platform]['distmoduledir']
|
50
|
-
host['sitemoduledir'] = AIO_DEFAULTS[platform]['sitemoduledir']
|
51
|
-
end
|
52
|
-
|
53
|
-
hosts.each do |host|
|
30
|
+
agents.each do |host|
|
54
31
|
case host['platform']
|
55
|
-
when
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
create_remote_file host, "/root/shutupsolaris", <<END
|
32
|
+
when /solaris/
|
33
|
+
tar = 'gtar'
|
34
|
+
if host['platform'] =~ /11/
|
35
|
+
# The file allows us to non-interactively install these packages with
|
36
|
+
# pkgutil on solaris 11. Solaris 10 does this as a part of the
|
37
|
+
# `install_packages_on` method in beaker. Since we install packages for
|
38
|
+
# solaris 11 using pkg by default, we can't use that method for sol11.
|
39
|
+
# We have to override it so that we can get git from opencws, as it has
|
40
|
+
# the updated ssl certs we need to access github repos.
|
41
|
+
create_remote_file host, "/root/shutupsolaris", <<-END
|
66
42
|
mail=
|
67
43
|
# Overwrite already installed instances
|
68
44
|
instance=overwrite
|
@@ -83,60 +59,81 @@ conflict=nocheck
|
|
83
59
|
action=nocheck
|
84
60
|
# Install to the default base directory.
|
85
61
|
basedir=default
|
86
|
-
END
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
62
|
+
END
|
63
|
+
on host, 'pkgadd -d http://get.opencsw.org/now -a /root/shutupsolaris -n all'
|
64
|
+
on host, '/opt/csw/bin/pkgutil -U all'
|
65
|
+
on host, '/opt/csw/bin/pkgutil -y -i git'
|
66
|
+
on host, '/opt/csw/bin/pkgutil -y -i gtar'
|
67
|
+
end
|
68
|
+
host.add_env_var('PATH', '/opt/csw/bin')
|
93
69
|
end
|
94
70
|
end
|
95
71
|
|
96
|
-
install_packages_on(
|
72
|
+
install_packages_on(agents, PACKAGES, :check_if_exists => true)
|
97
73
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
74
|
+
step "Unpack puppet-runtime" do
|
75
|
+
dev_builds_url = ENV['DEV_BUILDS_URL'] || 'http://builds.delivery.puppetlabs.net'
|
76
|
+
branch = ENV['RUNTIME_BRANCH'] || 'master'
|
77
|
+
|
78
|
+
# We want to grab whatever tag has been promoted most recently into the branch
|
79
|
+
# of puppet-agent that corresponds to whatever component we're working on.
|
80
|
+
# This will allow us to get the latest runtime package that has passed tests.
|
81
|
+
runtime_json = "https://raw.githubusercontent.com/puppetlabs/puppet-agent/#{branch}/configs/components/puppet-runtime.json"
|
82
|
+
runtime_tag = JSON.load(open(runtime_json))['version']
|
83
|
+
|
84
|
+
runtime_url = "#{dev_builds_url}/puppet-runtime/#{runtime_tag}/artifacts/"
|
85
|
+
|
86
|
+
runtime_prefix = "agent-runtime-#{branch}-#{runtime_tag}."
|
87
|
+
runtime_suffix = ".tar.gz"
|
88
|
+
|
89
|
+
agents.each do |host|
|
90
|
+
platform_tag = host['packaging_platform']
|
91
|
+
if platform_tag =~ /windows/
|
92
|
+
# the windows version is hard coded to `2012r2`. Unfortunately,
|
93
|
+
# `host['packaging_platform']` is hard coded to `2012`, so we have to add
|
94
|
+
# the `r2` on our own.
|
95
|
+
platform, version, arch = platform_tag.split('-')
|
96
|
+
platform_tag = "#{platform}-#{version}r2-#{arch}"
|
97
|
+
end
|
98
|
+
tarball_name = runtime_prefix + platform_tag + runtime_suffix
|
99
|
+
|
100
|
+
on host, "curl -Of #{runtime_url}#{tarball_name}"
|
101
|
+
|
102
|
+
case host['platform']
|
103
|
+
when /windows/
|
104
|
+
on host, "gunzip -c #{tarball_name} | tar -k -C /cygdrive/c/ -xf -"
|
105
|
+
|
106
|
+
if arch == 'x64'
|
107
|
+
program_files = 'ProgramFiles64Folder'
|
108
|
+
else
|
109
|
+
program_files = 'ProgramFilesFolder'
|
110
|
+
end
|
111
|
+
if branch == '5.5.x'
|
112
|
+
bindir = "/cygdrive/c/#{program_files}/PuppetLabs/Puppet/sys/ruby/bin"
|
113
|
+
else
|
114
|
+
bindir = "/cygdrive/c/#{program_files}/PuppetLabs/Puppet/puppet/bin"
|
115
|
+
end
|
116
|
+
on host, "chmod 755 #{bindir}/*"
|
117
|
+
|
118
|
+
# Because the runtime archive for windows gets installed in a non-standard
|
119
|
+
# directory (ProgramFiles64Folder), we need to add it to the path here
|
120
|
+
# rather than rely on `host['privatebindir']` like we can for other
|
121
|
+
# platforms
|
122
|
+
host.add_env_var('PATH', bindir)
|
123
|
+
when /osx/
|
124
|
+
on host, "tar -xzf #{tarball_name}"
|
125
|
+
on host, "for d in opt var private; do rsync -ka \"${d}/\" \"/${d}/\"; done"
|
126
|
+
else
|
127
|
+
on host, "gunzip -c #{tarball_name} | #{tar} -k -C / -xf -"
|
128
|
+
end
|
124
129
|
end
|
125
130
|
end
|
126
131
|
|
127
|
-
|
128
|
-
|
132
|
+
step "Install bundler" do
|
133
|
+
# Only configure gem mirror after Ruby has been installed, but before any gems are installed.
|
134
|
+
configure_gem_mirror(agents)
|
129
135
|
|
130
|
-
|
131
|
-
|
132
|
-
when /solaris/
|
133
|
-
step "#{host} Install json from rubygems"
|
134
|
-
on host, 'gem install json_pure --no-ri --no-rdoc --version 1.8.3' # json_pure 2.0 requires ruby 2
|
135
|
-
on host, 'gem install bundler --no-ri --no-rdoc'
|
136
|
-
on host, "ln -sf /opt/csw/bin/bundle #{host['puppetbindir']}/bundle"
|
137
|
-
when /windows/
|
138
|
-
on host, 'cmd /c gem install bundler --no-ri --no-rdoc'
|
139
|
-
else
|
140
|
-
on host, 'gem install bundler --no-ri --no-rdoc'
|
136
|
+
agents.each do |host|
|
137
|
+
on host, "#{gem_command(host)} install bundler --no-ri --no-rdoc"
|
141
138
|
end
|
142
139
|
end
|
data/setup/git/010_TestSetup.rb
CHANGED
@@ -1,79 +1,60 @@
|
|
1
|
-
test_name "Install
|
1
|
+
test_name "Install repositories on target machines..." do
|
2
|
+
|
2
3
|
repositories = options[:install].map do |url|
|
3
4
|
extract_repo_info_from(build_git_url(url))
|
4
5
|
end
|
5
6
|
|
6
|
-
|
7
|
+
agents.each_with_index do |host, index|
|
7
8
|
on host, "echo #{GitHubSig} >> $HOME/.ssh/known_hosts"
|
8
9
|
|
9
10
|
repositories.each do |repository|
|
10
11
|
step "Install #{repository[:name]}"
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
on host, "rm -f #{checkout_dir}" # just the symlink, do not rm -rf !
|
16
|
-
on host, "ln -s #{source_dir} #{checkout_dir}"
|
17
|
-
on host, "cd #{checkout_dir} && if [ -f install.rb ]; then ruby ./install.rb ; else true; fi"
|
18
|
-
else
|
19
|
-
puppet_dir = host.tmpdir('puppet')
|
20
|
-
on(host, "chmod 755 #{puppet_dir}")
|
12
|
+
repo_dir = host.tmpdir(repository[:name])
|
13
|
+
on(host, "chmod 755 #{repo_dir}")
|
14
|
+
|
15
|
+
gem_source = ENV["GEM_SOURCE"] || "https://rubygems.org"
|
21
16
|
|
17
|
+
case repository[:path]
|
18
|
+
when /^(git:|https:|git@)/
|
22
19
|
sha = ENV['SHA'] || `git rev-parse HEAD`.chomp
|
23
|
-
|
24
|
-
|
20
|
+
gem_path = ":git => '#{repository[:path]}', :ref => '#{sha}'"
|
21
|
+
when /^file:\/\/(.*)/
|
22
|
+
gem_path = ":path => '#{$1}'"
|
23
|
+
else
|
24
|
+
gem_path = repository[:path]
|
25
|
+
end
|
26
|
+
create_remote_file(host, "#{repo_dir}/Gemfile", <<-END)
|
25
27
|
source '#{gem_source}'
|
26
|
-
gem '#{repository[:name]}',
|
27
|
-
END
|
28
|
-
case host['platform']
|
29
|
-
when /windows/
|
30
|
-
create_remote_file(host, "#{puppet_dir}/Gemfile", gemfile_contents)
|
31
|
-
# bundle must be passed a Windows style path for a binstubs location
|
32
|
-
bindir = host['puppetbindir'].split(':').first
|
33
|
-
binstubs_dir = on(host, "cygpath -m \"#{bindir}\"").stdout.chomp
|
34
|
-
# note passing --shebang to bundle is not useful because Cygwin
|
35
|
-
# already finds the Ruby interpreter OK with the standard shebang of:
|
36
|
-
# !/usr/bin/env ruby
|
37
|
-
# the problem is a Cygwin style path is passed to the interpreter and this can't be modified:
|
38
|
-
# http://cygwin.1069669.n5.nabble.com/Pass-windows-style-paths-to-the-interpreter-from-the-shebang-line-td43870.html
|
39
|
-
on host, "cd #{puppet_dir} && cmd.exe /c \"bundle install --system --binstubs '#{binstubs_dir}'\""
|
40
|
-
# puppet.bat isn't written by Bundler, but facter.bat is - copy this generic file
|
41
|
-
on host, "cd #{host['puppetbindir']} && test -f ./puppet.bat || cp ./facter.bat ./puppet.bat"
|
42
|
-
# to access gem / facter / puppet / bundle / irb with Cygwin generally requires aliases
|
43
|
-
# so that commands in /usr/bin are overridden and the binstub wrappers won't run inside Cygwin
|
44
|
-
# but rather will execute as batch files through cmd.exe
|
45
|
-
# without being overridden, Cygwin reads the shebang and causes errors like:
|
46
|
-
# C:\cygwin64\bin\ruby.exe: No such file or directory -- /usr/bin/puppet (LoadError)
|
47
|
-
# NOTE /usr/bin/puppet is a Cygwin style path that our custom Ruby build
|
48
|
-
# does not understand - it expects a standard Windows path like c:\cygwin64\bin\puppet
|
28
|
+
gem '#{repository[:name]}', #{gem_path}
|
29
|
+
END
|
49
30
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
puppet_bundler_install_dir = on(host, "cd #{puppet_dir} && bundle show puppet").stdout.chomp
|
62
|
-
else
|
63
|
-
create_remote_file(host, "#{puppet_dir}/Gemfile", gemfile_contents)
|
64
|
-
on host, "cd #{puppet_dir} && bundle install --system --binstubs #{host['puppetbindir']}"
|
65
|
-
puppet_bundler_install_dir = on(host, "cd #{puppet_dir} && bundle show puppet").stdout.chomp
|
66
|
-
end
|
31
|
+
case host['platform']
|
32
|
+
when /windows/
|
33
|
+
# bundle must be passed a Windows style path for a binstubs location
|
34
|
+
bindir = host['puppetbindir'].split(':').first
|
35
|
+
binstubs_dir = on(host, "cygpath -m \"#{bindir}\"").stdout.chomp
|
36
|
+
# note passing --shebang to bundle is not useful because Cygwin
|
37
|
+
# already finds the Ruby interpreter OK with the standard shebang of:
|
38
|
+
# !/usr/bin/env ruby
|
39
|
+
# the problem is a Cygwin style path is passed to the interpreter and this can't be modified:
|
40
|
+
# http://cygwin.1069669.n5.nabble.com/Pass-windows-style-paths-to-the-interpreter-from-the-shebang-line-td43870.html
|
41
|
+
on host, "cd #{repo_dir} && #{bundle_command(host)} install --system --binstubs '#{binstubs_dir}'"
|
67
42
|
|
68
|
-
#
|
69
|
-
#
|
70
|
-
on
|
43
|
+
# bundler created but does not install batch files to the binstubs dir
|
44
|
+
# so we have to manually copy the batch files over
|
45
|
+
gemdir = on(host, "#{gem_command(host)} environment gemdir").stdout.chomp
|
46
|
+
gembindir = File.join(gemdir, 'bin')
|
47
|
+
on host, "cd '#{host['puppetbindir']}' && test -f ./#{repository[:name]}.bat || cp '#{gembindir}/#{repository[:name]}.bat' '#{host['puppetbindir']}/#{repository[:name]}.bat'"
|
48
|
+
else
|
49
|
+
on host, "cd #{repo_dir} && #{bundle_command(host)} install --system --binstubs #{host['puppetbindir']}"
|
71
50
|
end
|
51
|
+
puppet_bundler_install_dir ||= on(host, "cd #{repo_dir} && #{bundle_command(host)} show #{repository[:name]}").stdout.chomp
|
52
|
+
host.add_env_var('RUBYLIB', File.join(puppet_bundler_install_dir, 'lib'))
|
72
53
|
end
|
73
54
|
end
|
74
55
|
|
75
56
|
step "Hosts: create environments directory like AIO does" do
|
76
|
-
|
57
|
+
agents.each do |host|
|
77
58
|
codedir = host.puppet['codedir']
|
78
59
|
on host, "mkdir -p #{codedir}/environments/production/manifests"
|
79
60
|
on host, "mkdir -p #{codedir}/environments/production/modules"
|
@@ -1,10 +1,7 @@
|
|
1
1
|
test_name 'Puppet User and Group' do
|
2
2
|
hosts.each do |host|
|
3
|
-
|
4
3
|
step "ensure puppet user and group added to all nodes because this is what the packages do" do
|
5
4
|
on host, puppet("resource user puppet ensure=present")
|
6
|
-
on host, puppet("resource group puppet ensure=present")
|
7
5
|
end
|
8
|
-
|
9
6
|
end
|
10
7
|
end
|
data/tasks/ci.rake
CHANGED
@@ -110,6 +110,11 @@ $project_SERVER:
|
|
110
110
|
Similar to SERVER, but project specific. If you have only one project (i.e., hiera) that you
|
111
111
|
want to pull from a different server then all the others, you could set HIERA_SERVER=179.0.0.1,
|
112
112
|
and you would get back 'https://179.0.0.1/puppetlabs-hiera.git'.
|
113
|
+
|
114
|
+
RUNTIME_BRANCH:
|
115
|
+
Currently only used with git-based testing. This must correspond to a branch in the
|
116
|
+
puppet-agent repo. We use it to determine the tag of the agent-runtime package that
|
117
|
+
we want. We also use it to construct the agent-runtime archive name (ie agent-runtime-${branch}-${tag})
|
113
118
|
EOS
|
114
119
|
|
115
120
|
namespace :ci do
|
@@ -200,11 +205,15 @@ Run the acceptance tests against a git checkout.
|
|
200
205
|
|
201
206
|
$ SHA=<full sha> bundle exec rake ci:test:git
|
202
207
|
|
203
|
-
SHA
|
208
|
+
SHA: for git based testing specifically, this can be a sha, a branch, or a tag.
|
204
209
|
|
205
210
|
FORK: to test against your fork, defaults to 'puppetlabs'
|
206
211
|
|
207
212
|
SERVER: to git fetch from an alternate GIT server, defaults to 'github.com'
|
213
|
+
|
214
|
+
RUNTIME_BRANCH: the branch of the agent-runtime package to grab, defaults to
|
215
|
+
'master'. This tells us which branch of puppet-agent to get the runtime tag
|
216
|
+
from and helps us create the archive name when we go to curl it down.
|
208
217
|
EOS
|
209
218
|
task :git => ['ci:check_env', 'ci:gen_hosts'] do
|
210
219
|
beaker_suite(:git)
|
@@ -251,15 +260,15 @@ def pre_suites(type)
|
|
251
260
|
[
|
252
261
|
"#{beaker_root}/setup/common/000-delete-puppet-when-none.rb",
|
253
262
|
"#{beaker_root}/setup/aio/010_Install_Puppet_Agent.rb",
|
254
|
-
"#{beaker_root}/setup/
|
255
|
-
"#{beaker_root}/setup/
|
256
|
-
"#{beaker_root}/setup/
|
257
|
-
"#{beaker_root}/setup/
|
258
|
-
"#{beaker_root}/setup/
|
263
|
+
"#{beaker_root}/setup/common/011_Install_Puppet_Server.rb",
|
264
|
+
"#{beaker_root}/setup/common/012_Finalize_Installs.rb",
|
265
|
+
"#{beaker_root}/setup/common/020_InstallCumulusModules.rb",
|
266
|
+
"#{beaker_root}/setup/common/021_InstallAristaModuleMasters.rb",
|
267
|
+
"#{beaker_root}/setup/common/022_InstallAristaModuleAgents.rb",
|
259
268
|
"#{beaker_root}/setup/common/025_StopFirewall.rb",
|
260
269
|
"#{beaker_root}/setup/common/030_StopSssd.rb",
|
261
270
|
"#{beaker_root}/setup/common/040_ValidateSignCert.rb",
|
262
|
-
"#{beaker_root}/setup/
|
271
|
+
"#{beaker_root}/setup/common/045_EnsureMasterStarted.rb",
|
263
272
|
]
|
264
273
|
when :gem
|
265
274
|
[
|
@@ -271,13 +280,13 @@ def pre_suites(type)
|
|
271
280
|
"#{beaker_root}/setup/common/000-delete-puppet-when-none.rb",
|
272
281
|
"#{beaker_root}/setup/git/000_EnvSetup.rb",
|
273
282
|
"#{beaker_root}/setup/git/010_TestSetup.rb",
|
274
|
-
"#{beaker_root}/setup/
|
283
|
+
"#{beaker_root}/setup/common/011_Install_Puppet_Server.rb",
|
275
284
|
"#{beaker_root}/setup/git/020_PuppetUserAndGroup.rb",
|
285
|
+
"#{beaker_root}/setup/git/070_InstallCACerts.rb",
|
276
286
|
"#{beaker_root}/setup/common/025_StopFirewall.rb",
|
277
|
-
"#{beaker_root}/setup/
|
287
|
+
"#{beaker_root}/setup/common/030_StopSssd.rb",
|
278
288
|
"#{beaker_root}/setup/common/040_ValidateSignCert.rb",
|
279
|
-
"#{beaker_root}/setup/
|
280
|
-
"#{beaker_root}/setup/git/070_InstallCACerts.rb",
|
289
|
+
"#{beaker_root}/setup/common/045_EnsureMasterStarted.rb",
|
281
290
|
]
|
282
291
|
end
|
283
292
|
presuites.join(',')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -271,22 +271,20 @@ files:
|
|
271
271
|
- lib/beaker/dsl/install_utils/module_utils.rb
|
272
272
|
- lib/beaker/dsl/install_utils/puppet_utils.rb
|
273
273
|
- setup/aio/010_Install_Puppet_Agent.rb
|
274
|
-
- setup/aio/011_Install_Puppet_Server.rb
|
275
|
-
- setup/aio/012_Finalize_Installs.rb
|
276
|
-
- setup/aio/020_InstallCumulusModules.rb
|
277
|
-
- setup/aio/021_InstallAristaModuleMasters.rb
|
278
|
-
- setup/aio/022_InstallAristaModuleAgents.rb
|
279
|
-
- setup/aio/045_EnsureMasterStarted.rb
|
280
274
|
- setup/common/000-delete-puppet-when-none.rb
|
275
|
+
- setup/common/011_Install_Puppet_Server.rb
|
276
|
+
- setup/common/012_Finalize_Installs.rb
|
277
|
+
- setup/common/020_InstallCumulusModules.rb
|
278
|
+
- setup/common/021_InstallAristaModuleMasters.rb
|
279
|
+
- setup/common/022_InstallAristaModuleAgents.rb
|
281
280
|
- setup/common/025_StopFirewall.rb
|
282
281
|
- setup/common/030_StopSssd.rb
|
283
282
|
- setup/common/040_ValidateSignCert.rb
|
283
|
+
- setup/common/045_EnsureMasterStarted.rb
|
284
284
|
- setup/gem/010_GemInstall.rb
|
285
285
|
- setup/git/000_EnvSetup.rb
|
286
286
|
- setup/git/010_TestSetup.rb
|
287
|
-
- setup/git/011_SetMaster.rb
|
288
287
|
- setup/git/020_PuppetUserAndGroup.rb
|
289
|
-
- setup/git/030_PuppetMasterSanity.rb
|
290
288
|
- setup/git/060_InstallModules.rb
|
291
289
|
- setup/git/070_InstallCACerts.rb
|
292
290
|
- spec/beaker-puppet/helpers/facter_helpers_spec.rb
|
data/setup/git/011_SetMaster.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
test_name 'Hosts: create basic puppet.conf' do
|
2
|
-
skip_test 'not testing with puppetserver' unless @options['is_puppetserver']
|
3
|
-
hosts.each do |host|
|
4
|
-
confdir = host.puppet['confdir']
|
5
|
-
on host, "mkdir -p #{confdir}"
|
6
|
-
puppetconf = File.join(confdir, 'puppet.conf')
|
7
|
-
|
8
|
-
if host['roles'].include?('agent')
|
9
|
-
on host, "echo '[agent]' > '#{puppetconf}' && " +
|
10
|
-
"echo server=#{master} >> '#{puppetconf}'"
|
11
|
-
else
|
12
|
-
on host, "touch '#{puppetconf}'"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
test_name "Puppet Master sanity checks: PID file and SSL dir creation"
|
2
|
-
|
3
|
-
skip_test 'not testing with puppetserver' unless @options['is_puppetserver']
|
4
|
-
|
5
|
-
hostname = on(master, 'facter hostname').stdout.strip
|
6
|
-
fqdn = on(master, 'facter fqdn').stdout.strip
|
7
|
-
|
8
|
-
with_puppet_running_on(master, :main => { :dns_alt_names => "puppet,#{hostname},#{fqdn}", :verbose => true, :noop => true }) do
|
9
|
-
# SSL dir created?
|
10
|
-
step "SSL dir created?"
|
11
|
-
on master, "[ -d #{master.puppet('master')['ssldir']} ]"
|
12
|
-
|
13
|
-
# PID file exists?
|
14
|
-
step "PID file created?"
|
15
|
-
on master, "[ -f #{master.puppet('master')['pidfile']} ]"
|
16
|
-
end
|
17
|
-
|
18
|
-
step "Create module directories normally handled via packaging"
|
19
|
-
on master, "mkdir -p #{master['distmoduledir']}"
|
20
|
-
on master, "mkdir -p #{master['sitemoduledir']}"
|