beaker-puppet 0.13.3 → 0.13.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/beaker-puppet/helpers/puppet_helpers.rb +30 -23
- data/lib/beaker-puppet/version.rb +1 -1
- data/setup/common/040_ValidateSignCert.rb +1 -5
- data/spec/beaker-puppet/helpers/puppet_helpers_spec.rb +17 -34
- data/spec/beaker-puppet/install_utils/puppet5_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d322c80a47192acedb35fe134e928ca9fad94f94
|
4
|
+
data.tar.gz: d4dfedaa36a7a51a237388eebee0d8c9e664ee28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94e08a2ccdd6e9e75f18d28bae39262ab9af24432a65021d07756ececb4651c942ab9069a3243194a25e06cbc9d2ee5c32afd5ca2d63fc0ab540609421e3ebc7
|
7
|
+
data.tar.gz: 3fcb942b149e20a2c46e9cbc2d39f0bc69ff0f4dd734ab52684df47bba1b1f2746d00453a969bd7353cb97c2b255288951cd63277f07d6a442de4b5725beac59
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'timeout'
|
2
3
|
require 'inifile'
|
3
4
|
require 'resolv'
|
@@ -47,6 +48,18 @@ module Beaker
|
|
47
48
|
# running the command.
|
48
49
|
#
|
49
50
|
|
51
|
+
# Read a setting from the puppet master config
|
52
|
+
#
|
53
|
+
# @param [Host] host The host
|
54
|
+
# @param [String] setting The setting to read
|
55
|
+
#
|
56
|
+
def puppet_config(host, setting, section: nil)
|
57
|
+
command = "config print #{setting}"
|
58
|
+
command += " --section #{section}" if section
|
59
|
+
|
60
|
+
on(host, puppet(command)).stdout.strip
|
61
|
+
end
|
62
|
+
|
50
63
|
# Return the name of the puppet user.
|
51
64
|
#
|
52
65
|
# @param [Host] host One object that acts like a Beaker::Host
|
@@ -54,7 +67,7 @@ module Beaker
|
|
54
67
|
# @note This method assumes puppet is installed on the host.
|
55
68
|
#
|
56
69
|
def puppet_user(host)
|
57
|
-
|
70
|
+
puppet_config(host, 'user', section: 'master')
|
58
71
|
end
|
59
72
|
|
60
73
|
# Return the name of the puppet group.
|
@@ -64,7 +77,7 @@ module Beaker
|
|
64
77
|
# @note This method assumes puppet is installed on the host.
|
65
78
|
#
|
66
79
|
def puppet_group(host)
|
67
|
-
|
80
|
+
puppet_config(host, 'group', section: 'master')
|
68
81
|
end
|
69
82
|
|
70
83
|
# Test Puppet running in a certain run mode with specific options.
|
@@ -135,10 +148,10 @@ module Beaker
|
|
135
148
|
# :master => {:masterlog => '/elswhere'},
|
136
149
|
# :agent => {:server => 'localhost'} ) do
|
137
150
|
#
|
138
|
-
# ...tests to be
|
151
|
+
# ...tests to be run...
|
139
152
|
# end
|
140
153
|
#
|
141
|
-
def with_puppet_running_on
|
154
|
+
def with_puppet_running_on(host, conf_opts, testdir = host.tmpdir(File.basename(@path)), &block)
|
142
155
|
raise(ArgumentError, "with_puppet_running_on's conf_opts must be a Hash. You provided a #{conf_opts.class}: '#{conf_opts}'") if !conf_opts.kind_of?(Hash)
|
143
156
|
cmdline_args = conf_opts[:__commandline_args__]
|
144
157
|
service_args = conf_opts[:__service_args__] || {}
|
@@ -151,8 +164,8 @@ module Beaker
|
|
151
164
|
logger.debug "Setting curl retries to #{curl_retries}"
|
152
165
|
|
153
166
|
if options[:is_puppetserver] || host[:is_puppetserver]
|
154
|
-
confdir = host
|
155
|
-
vardir = host
|
167
|
+
confdir = puppet_config(host, 'confdir', section: 'master')
|
168
|
+
vardir = puppet_config(host, 'vardir', section: 'master')
|
156
169
|
|
157
170
|
if cmdline_args
|
158
171
|
split_args = cmdline_args.split()
|
@@ -176,7 +189,10 @@ module Beaker
|
|
176
189
|
modify_tk_config(host, puppetserver_conf, puppetserver_opts)
|
177
190
|
end
|
178
191
|
begin
|
179
|
-
backup_file = backup_the_file(host,
|
192
|
+
backup_file = backup_the_file(host,
|
193
|
+
puppet_config(host, 'confdir', section: 'master'),
|
194
|
+
testdir,
|
195
|
+
'puppet.conf')
|
180
196
|
lay_down_new_puppet_conf host, conf_opts, testdir
|
181
197
|
|
182
198
|
if host.use_service_scripts? && !service_args[:bypass_service_script]
|
@@ -250,7 +266,7 @@ module Beaker
|
|
250
266
|
|
251
267
|
# @!visibility private
|
252
268
|
def restore_puppet_conf_from_backup( host, backup_file )
|
253
|
-
puppet_conf = host
|
269
|
+
puppet_conf = puppet_config(host, 'config', section: 'master')
|
254
270
|
|
255
271
|
if backup_file
|
256
272
|
host.exec( Command.new( "if [ -f '#{backup_file}' ]; then " +
|
@@ -278,7 +294,7 @@ module Beaker
|
|
278
294
|
|
279
295
|
# @!visibility private
|
280
296
|
def stop_puppet_from_source_on( host )
|
281
|
-
pid = host.exec( Command.new('cat `puppet
|
297
|
+
pid = host.exec( Command.new('cat `puppet config print --section master pidfile`') ).stdout.chomp
|
282
298
|
host.exec( Command.new( "kill #{pid}" ) )
|
283
299
|
Timeout.timeout(10) do
|
284
300
|
while host.exec( Command.new( "kill -0 #{pid}"), :acceptable_exit_codes => [0,1] ).exit_code == 0 do
|
@@ -305,7 +321,7 @@ module Beaker
|
|
305
321
|
|
306
322
|
# @!visibility private
|
307
323
|
def lay_down_new_puppet_conf( host, configuration_options, testdir )
|
308
|
-
puppetconf_main = host
|
324
|
+
puppetconf_main = puppet_config(host, 'config', section: 'master')
|
309
325
|
puppetconf_filename = File.basename(puppetconf_main)
|
310
326
|
puppetconf_test = File.join(testdir, puppetconf_filename)
|
311
327
|
|
@@ -321,7 +337,7 @@ module Beaker
|
|
321
337
|
|
322
338
|
# @!visibility private
|
323
339
|
def puppet_conf_for host, conf_opts
|
324
|
-
puppetconf = host.exec( Command.new( "cat #{host
|
340
|
+
puppetconf = host.exec( Command.new( "cat #{puppet_config(host, 'config', section: 'master')}" ) ).stdout
|
325
341
|
new_conf = IniFile.new(content: puppetconf).merge( conf_opts )
|
326
342
|
|
327
343
|
new_conf
|
@@ -845,24 +861,15 @@ module Beaker
|
|
845
861
|
# @param [String] name A remote path prefix for the new temp
|
846
862
|
# directory. Default value is '/tmp/beaker'
|
847
863
|
# @param [String] user The name of user that should own the temp
|
848
|
-
# directory. If no username is specified, use `puppet
|
849
|
-
# --
|
864
|
+
# directory. If no username is specified, use `puppet config print user
|
865
|
+
# --section master` to obtain username from master. Raise RuntimeError
|
850
866
|
# if this puppet command returns a non-zero exit code.
|
851
867
|
#
|
852
868
|
# @return [String] Returns the name of the newly-created dir.
|
853
869
|
def create_tmpdir_for_user(host, name='/tmp/beaker', user=nil)
|
854
|
-
|
855
|
-
result = on host, puppet("master --configprint user")
|
856
|
-
if not result.exit_code == 0
|
857
|
-
raise "`puppet master --configprint` failed, check that puppet is installed on #{host} or explicitly pass in a user name."
|
858
|
-
end
|
859
|
-
user = result.stdout.strip
|
860
|
-
end
|
861
|
-
|
870
|
+
user ||= puppet_config(host, 'user', section: 'master')
|
862
871
|
create_tmpdir_on(host, name, user)
|
863
|
-
|
864
872
|
end
|
865
|
-
|
866
873
|
end
|
867
874
|
end
|
868
875
|
end
|
@@ -14,7 +14,7 @@ test_name "Validate Sign Cert" do
|
|
14
14
|
step "Clear SSL on all hosts"
|
15
15
|
hosts.each do |host|
|
16
16
|
ssldir = on(host, puppet('agent --configprint ssldir')).stdout.chomp
|
17
|
-
on(host, "rm -rf '#{ssldir}'")
|
17
|
+
on(host, "rm -rf '#{ssldir}/*'")
|
18
18
|
end
|
19
19
|
|
20
20
|
step "Master: Start Puppet Master" do
|
@@ -22,10 +22,6 @@ test_name "Validate Sign Cert" do
|
|
22
22
|
:main => {
|
23
23
|
:dns_alt_names => "puppet,#{hostname},#{fqdn}",
|
24
24
|
},
|
25
|
-
:__service_args__ => {
|
26
|
-
# apache2 service scripts can't restart if we've removed the ssl dir
|
27
|
-
:bypass_service_script => true,
|
28
|
-
},
|
29
25
|
}
|
30
26
|
with_puppet_running_on(master, master_opts) do
|
31
27
|
|
@@ -43,32 +43,19 @@ describe ClassMixedWithDSLHelpers do
|
|
43
43
|
context 'with no user argument' do
|
44
44
|
|
45
45
|
context 'with no path name argument' do
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
expect{
|
53
|
-
subject.create_tmpdir_for_user host
|
54
|
-
}.to raise_error(RuntimeError, /`puppet master --configprint` failed,/)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
context 'with puppet installed on host' do
|
58
|
-
it 'executes chown once' do
|
59
|
-
cmd = "the command"
|
60
|
-
expect(Beaker::Command).to receive(:new).with(/puppet master --configprint user/, [], {"ENV"=>{}, :cmdexe=>true}).and_return(cmd)
|
61
|
-
expect(subject).to receive(:on).with(host, cmd).and_return(result)
|
62
|
-
expect(subject).to receive(:create_tmpdir_on).with(host, /\/tmp\/beaker/, /puppet/)
|
63
|
-
subject.create_tmpdir_for_user(host)
|
64
|
-
end
|
46
|
+
it 'executes chown once' do
|
47
|
+
cmd = "the command"
|
48
|
+
expect(Beaker::Command).to receive(:new).with(/puppet config print user --section master/, [], {"ENV"=>{}, :cmdexe=>true}).and_return(cmd)
|
49
|
+
expect(subject).to receive(:on).with(host, cmd).and_return(result)
|
50
|
+
expect(subject).to receive(:create_tmpdir_on).with(host, /\/tmp\/beaker/, /puppet/)
|
51
|
+
subject.create_tmpdir_for_user(host)
|
65
52
|
end
|
66
53
|
end
|
67
54
|
|
68
55
|
context 'with path name argument' do
|
69
56
|
it 'executes chown once' do
|
70
57
|
cmd = "the command"
|
71
|
-
expect(Beaker::Command).to receive(:new).with(/puppet
|
58
|
+
expect(Beaker::Command).to receive(:new).with(/puppet config print user --section master/, [], {"ENV"=>{}, :cmdexe=>true}).and_return(cmd)
|
72
59
|
expect(subject).to receive(:on).with(host, cmd).and_return(result)
|
73
60
|
expect(subject).to receive(:create_tmpdir_on).with(host, /\/tmp\/bogus/, /puppet/)
|
74
61
|
subject.create_tmpdir_for_user(host, "/tmp/bogus")
|
@@ -748,11 +735,9 @@ describe ClassMixedWithDSLHelpers do
|
|
748
735
|
stub_post_setup
|
749
736
|
allow( subject ).to receive( :options) .and_return( {:is_puppetserver => true})
|
750
737
|
allow( subject ).to receive( :modify_tk_config)
|
751
|
-
allow(
|
752
|
-
|
753
|
-
|
754
|
-
'config' => "#{default_confdir}/puppet.conf"
|
755
|
-
})
|
738
|
+
allow( subject ).to receive(:puppet_config).with(host, 'confdir', anything).and_return(default_confdir)
|
739
|
+
allow( subject ).to receive(:puppet_config).with(host, 'vardir', anything).and_return(default_vardir)
|
740
|
+
allow( subject ).to receive(:puppet_config).with(host, 'config', anything).and_return("#{default_confdir}/puppet.conf")
|
756
741
|
end
|
757
742
|
|
758
743
|
describe 'when the global option for :is_puppetserver is false' do
|
@@ -973,7 +958,7 @@ describe ClassMixedWithDSLHelpers do
|
|
973
958
|
execution = 0
|
974
959
|
expect do
|
975
960
|
subject.with_puppet_running_on(host, {}) do
|
976
|
-
expect(host).to execute_commands_matching(/^puppet master/).
|
961
|
+
expect(host).to execute_commands_matching(/^puppet master/).once
|
977
962
|
execution += 1
|
978
963
|
end
|
979
964
|
end.to change { execution }.by(1)
|
@@ -990,7 +975,7 @@ describe ClassMixedWithDSLHelpers do
|
|
990
975
|
execution = 0
|
991
976
|
expect do
|
992
977
|
subject.with_puppet_running_on(host, { :restart_when_done => true }) do
|
993
|
-
expect(host).to execute_commands_matching(/^puppet master/).
|
978
|
+
expect(host).to execute_commands_matching(/^puppet master/).once
|
994
979
|
execution += 1
|
995
980
|
end
|
996
981
|
end.to change { execution }.by(1)
|
@@ -1002,19 +987,17 @@ describe ClassMixedWithDSLHelpers do
|
|
1002
987
|
|
1003
988
|
describe 'backup and restore of puppet.conf' do
|
1004
989
|
before :each do
|
1005
|
-
|
1006
|
-
allow(
|
1007
|
-
allow( mock_puppetconf_reader ).to receive( :[] ).with( 'confdir' ).and_return( '/root/mock' )
|
1008
|
-
allow( host ).to receive( :puppet ).with( any_args ).and_return( mock_puppetconf_reader )
|
990
|
+
allow(subject).to receive(:puppet_config).with(host, 'confdir', anything).and_return('/root/mock')
|
991
|
+
allow(subject).to receive(:puppet_config).with(host, 'config', anything).and_return('/root/mock/puppet.conf')
|
1009
992
|
end
|
1010
993
|
|
1011
|
-
let(:original_location) {
|
994
|
+
let(:original_location) { '/root/mock/puppet.conf' }
|
1012
995
|
let(:backup_location) {
|
1013
|
-
filename = File.basename(
|
996
|
+
filename = File.basename(original_location)
|
1014
997
|
File.join(tmpdir_path, "#{filename}.bak")
|
1015
998
|
}
|
1016
999
|
let(:new_location) {
|
1017
|
-
filename = File.basename(
|
1000
|
+
filename = File.basename(original_location)
|
1018
1001
|
File.join(tmpdir_path, filename)
|
1019
1002
|
}
|
1020
1003
|
|
@@ -172,7 +172,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
172
172
|
it 'install an MSI from a URL on Windows' do
|
173
173
|
@platform = 'windows'
|
174
174
|
|
175
|
-
expect(subject).to receive(:
|
175
|
+
expect(subject).to receive(:generic_install_msi_on).with(host, artifact_url)
|
176
176
|
|
177
177
|
subject.install_artifact_on(host, artifact_url, 'project_name')
|
178
178
|
end
|
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: 0.13.
|
4
|
+
version: 0.13.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|