beaker-puppet_install_helper 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3ab1391c840c72e0a1e79bf939dcbfbdf58869a
4
- data.tar.gz: f4c3d416e7647511608663e7e3fe84540eee0ab8
3
+ metadata.gz: 8131d15e7ced64bf1aa8ca7ea41f81364282778f
4
+ data.tar.gz: 56f041ee7891f7e5d35a50634ef6de2d75122267
5
5
  SHA512:
6
- metadata.gz: 21987dff0ba3291aa3a1e81cc5a94e076ba08c62c387ba0ac5c4fea2cc5484719d7489c3ae3b881a4d519cf1f1758b3847fba5df0c6d8f5c8e839b93cda02000
7
- data.tar.gz: 8b6c6cd2b7c4d31e6853a8f0454990bb3d56166e6261297e28b76a79d745f5d05b0098e4014b2f72f3b99f5c77c3dc3c3a312429d1e00c06367021a6ea0c624e
6
+ metadata.gz: 4a00f8327123a968bb98cb2fe4d313694a2d290841ebc0cc4d0cfaa80732190a288060d2949bf8b7d93fb359d3f4005eff2732e4e79d04dddba331e3b2da90ca
7
+ data.tar.gz: 5533d94d243a3f7d0dfc48528a63141aae8a6ca75add65f154627217102284628e470831e0ea444bd98cd7de7d940347445a937dfe3887ddd58d106b55080992
data/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## [0.7.0]
8
+ ### Changed
9
+ - MODULES-4653 `run_puppet_install_helper_on` now installs puppetserver on master role when using the `foss` install type.
10
+
11
+ ### Fixed
12
+ - Add puppet bin folder to $PATH on non-windows
13
+
7
14
  ## [0.6.0]
8
15
  ### Changed
9
16
  - Change the default `PUPPET_INSTALL_TYPE` to `agent`
@@ -32,6 +39,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
32
39
  ### Changed
33
40
  - Add solaris for installing CA certs as well.
34
41
 
42
+ [0.7.0]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.6.0...0.7.0
35
43
  [0.6.0]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.5.0...0.6.0
36
44
  [0.5.0]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.4.4...0.5.0
37
45
  [0.4.4]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.4.3...0.4.4
data/README.md CHANGED
@@ -12,6 +12,7 @@ The way to use this is to declare either `run_puppet_install_helper()` or `run_p
12
12
  - `PUPPET_INSTALL_TYPE=foss` will read `PUPPET_INSTALL_VERSION` and:
13
13
  - if `PUPPET_INSTALL_VERSION` is less than 4 will attempt to install that version of the system package if available, or else the ruby gem of that version.
14
14
  - if `PUPPET_INSTALL_VERSION` is 4 or more it will attempt to install the corresponding puppet-agent package, or gem version otherwise.
15
+ - if a `master` role is defined, will install puppetserver on that node. Note that the corresponding puppet-agent dependency will be installed on that node rather than the specified `PUPPET_INSTALL_VERSION`.
15
16
 
16
17
  The best way is explicitly set `PUPPET_INSTALL_TYPE` and `PUPPET_INSTALL_VERSION` to what you want. It'll probably do what you expect.
17
18
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'beaker-puppet_install_helper'
3
- s.version = '0.6.0'
3
+ s.version = '0.7.0'
4
4
  s.authors = ['Puppetlabs']
5
5
  s.email = ['hunter@puppet.com']
6
6
  s.homepage = 'https://github.com/puppetlabs/beaker-puppet_install_helper'
@@ -51,8 +51,25 @@ module Beaker::PuppetInstallHelper
51
51
  when 'foss'
52
52
  opts = options.merge(version: version,
53
53
  default_action: 'gem_install')
54
-
55
- install_puppet_on(hosts, opts)
54
+ hosts.each do |host|
55
+ if hosts_with_role(hosts, 'master').length>0 then
56
+ next if host == master
57
+ end
58
+ install_puppet_on(host, opts)
59
+ end
60
+ if hosts_with_role(hosts, 'master').length>0 then
61
+ # install puppetserver
62
+ install_puppetlabs_release_repo( master, 'pc1' )
63
+ master.install_package('puppetserver')
64
+ on(master, puppet('resource', 'service', 'puppetserver', 'ensure=running'))
65
+ agents.each do |agent|
66
+ on(agent, puppet('resource', 'host', 'puppet', 'ensure=present', "ip=#{master.get_ip}"))
67
+ on(agent, puppet('agent', '--test'), :acceptable_exit_codes => [0,1])
68
+ end
69
+ master['distmoduledir'] = on(master, puppet('config', 'print', 'modulepath')).stdout.split(':')[0]
70
+ sign_certificate_for(agents)
71
+ run_agent_on(agents)
72
+ end
56
73
  # XXX install_puppet_on() will only add_aio_defaults_on when the nodeset
57
74
  # type == 'aio', but we don't want to depend on that.
58
75
  if opts[:version] && !version_is_less(opts[:version], '4.0.0')
@@ -60,6 +77,9 @@ module Beaker::PuppetInstallHelper
60
77
  add_puppet_paths_on(hosts)
61
78
  end
62
79
  Array(hosts).each do |host|
80
+ if hosts_with_role(hosts, 'master').length>0 then
81
+ next if host == master
82
+ end
63
83
  if fact_on(host, 'osfamily') != 'windows'
64
84
  on host, "mkdir -p #{host['distmoduledir']}"
65
85
  # XXX Maybe this can just be removed? What PE/puppet version needs
@@ -88,6 +108,12 @@ module Beaker::PuppetInstallHelper
88
108
  # nodeset type == 'aio', but we don't want to depend on that.
89
109
  add_aio_defaults_on(hosts)
90
110
  add_puppet_paths_on(hosts)
111
+ # beaker does not add the puppet bin folder to $PATH. this adds it for puppet 4
112
+ Array(hosts).each do |host|
113
+ if fact_on(host, 'osfamily') != 'windows'
114
+ on host, "echo 'export PATH=/opt/puppetlabs/puppet/bin:${PATH}' >> /root/.bashrc"
115
+ end
116
+ end
91
117
  else
92
118
  raise ArgumentError, "Type must be pe, foss, or agent; got #{type.inspect}"
93
119
  end
@@ -10,10 +10,12 @@ describe 'Beaker::PuppetInstallHelper' do
10
10
  allow(foss_host).to receive(:[]).with('distmoduledir').and_return('/dne')
11
11
  allow(foss_host).to receive(:[]).with('platform').and_return('Debian')
12
12
  allow(foss_host).to receive(:[]).with('pe_ver').and_return(nil)
13
+ allow(foss_host).to receive(:[]).with('roles').and_return(['agent'])
13
14
  allow(foss_host).to receive(:puppet).and_return('hiera_config' => '/dne')
14
15
  allow(pe_host).to receive(:[]).with('pe_ver').and_return('3.8.3')
15
16
  allow(pe_host).to receive(:[]).with('distmoduledir').and_return('/dne')
16
17
  allow(pe_host).to receive(:[]).with('platform').and_return('Debian')
18
+ allow(pe_host).to receive(:[]).with('roles').and_return(['agent'])
17
19
  allow(pe_host).to receive(:puppet).and_return('hiera_config' => '/dne')
18
20
  [foss_host, pe_host]
19
21
  end
@@ -21,6 +23,7 @@ describe 'Beaker::PuppetInstallHelper' do
21
23
  allow(subject).to receive(:options).and_return({})
22
24
  allow(subject).to receive(:on)
23
25
  allow(subject).to receive(:fact_on)
26
+ allow(subject).to receive(:agents).and_return(hosts)
24
27
  end
25
28
  after :each do
26
29
  ENV.delete('PUPPET_VERSION')
@@ -71,22 +74,56 @@ describe 'Beaker::PuppetInstallHelper' do
71
74
  end
72
75
  end
73
76
  context 'for foss' do
77
+ let :hosts do
78
+ foss_host = double(is_pe?: false)
79
+ foss_master = double(is_pe?: false)
80
+ allow(foss_host).to receive(:[]).with('distmoduledir').and_return('/dne')
81
+ allow(foss_host).to receive(:[]).with('platform').and_return('Debian')
82
+ allow(foss_host).to receive(:[]).with('pe_ver').and_return(nil)
83
+ allow(foss_host).to receive(:[]).with('roles').and_return(['agent'])
84
+ allow(foss_host).to receive(:puppet).and_return('hiera_config' => '/dne')
85
+ allow(foss_master).to receive(:[]).with('pe_ver').and_return(nil)
86
+ allow(foss_master).to receive(:[]=).with('distmoduledir', 'foo')
87
+ allow(foss_master).to receive(:[]).with('platform').and_return('Debian')
88
+ allow(foss_master).to receive(:[]).with('roles').and_return(['master'])
89
+ allow(foss_master).to receive(:get_ip).and_return('1.2.3.4')
90
+ allow(foss_master).to receive(:install_package).with('puppetserver')
91
+ allow(foss_master).to receive(:get_ip).and_return('1.2.3.4')
92
+ [foss_host, foss_master]
93
+ end
94
+ let :result do
95
+ Beaker::Result.new( nil, nil )
96
+ end
97
+ before :each do
98
+ allow(subject).to receive(:master).and_return(hosts[1])
99
+ allow(subject).to receive(:sign_certificate_for)
100
+ allow(subject).to receive(:puppet_agent)
101
+ allow(subject).to receive(:puppet).with('resource', 'service', 'puppetserver', 'ensure=running')
102
+ allow(subject).to receive(:puppet).with('resource', 'host', 'puppet', 'ensure=present', 'ip=1.2.3.4')
103
+ allow(subject).to receive(:puppet).with('agent', '--test')
104
+ allow(subject).to receive(:puppet).with('config', 'print', 'modulepath')
105
+ allow(subject).to receive(:on).and_return(result)
106
+ result.stdout = 'foo:bar'
107
+ end
74
108
  it 'uses foss explicitly' do
75
109
  ENV['PUPPET_INSTALL_TYPE'] = 'foss'
76
- expect(subject).to receive(:install_puppet_on).with(hosts, version: nil, default_action: 'gem_install')
110
+ expect(subject).to receive(:install_puppetlabs_release_repo).with(hosts[1], 'pc1')
111
+ expect(subject).to receive(:install_puppet_on).with(hosts[0], version: nil, default_action: 'gem_install')
77
112
  subject.run_puppet_install_helper_on(hosts)
78
113
  end
79
114
  %w(PUPPET_VERSION PUPPET_INSTALL_VERSION).each do |version_var|
80
115
  it 'uses foss with a version' do
81
116
  ENV['PUPPET_INSTALL_TYPE'] = 'foss'
82
117
  ENV[version_var] = '3.8.1'
83
- expect(subject).to receive(:install_puppet_on).with(hosts, version: '3.8.1', default_action: 'gem_install')
118
+ expect(subject).to receive(:install_puppetlabs_release_repo).with(hosts[1], 'pc1')
119
+ expect(subject).to receive(:install_puppet_on).with(hosts[0], version: '3.8.1', default_action: 'gem_install')
84
120
  subject.run_puppet_install_helper_on(hosts)
85
121
  end
86
122
  it 'uses foss with a >4 version detects AIO' do
87
123
  ENV['PUPPET_INSTALL_TYPE'] = 'foss'
88
124
  ENV[version_var] = '4.1.0'
89
- expect(subject).to receive(:install_puppet_on).with(hosts, version: '4.1.0', default_action: 'gem_install')
125
+ expect(subject).to receive(:install_puppetlabs_release_repo).with(hosts[1], 'pc1')
126
+ expect(subject).to receive(:install_puppet_on).with(hosts[0], version: '4.1.0', default_action: 'gem_install')
90
127
  expect(subject).to receive(:add_aio_defaults_on).with(hosts)
91
128
  expect(subject).to receive(:add_puppet_paths_on).with(hosts)
92
129
  subject.run_puppet_install_helper_on(hosts)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-puppet_install_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-04 00:00:00.000000000 Z
11
+ date: 2017-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec