beaker-pe 2.11.2 → 2.11.7
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/.github/dependabot.yml +8 -0
- data/CODEOWNERS +2 -1
- data/lib/beaker-pe/install/pe_utils.rb +41 -5
- data/lib/beaker-pe/pe-client-tools/executable_helper.rb +1 -0
- data/lib/beaker-pe/pe-client-tools/install_helper.rb +9 -0
- data/lib/beaker-pe/version.rb +1 -1
- data/spec/beaker-pe/install/pe_utils_spec.rb +10 -26
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2729fa197d07e6977316382ea5621a152a0d740a19b1bd8639101867384eb15f
|
|
4
|
+
data.tar.gz: 434680a7743f98182d0a2261c5151b204bd1e0439cf4532ce249bdfb93e2ac14
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 024973babe90a837c4c86b3efecfe5792dc1610eae356a3e05abd54ecafb529640b616923aa674e51c125a4bd4405b67ab15dfaac82f391a9aa7a1cbafb5513c
|
|
7
|
+
data.tar.gz: 884e05b5a6a9e0c0a43420f5fa71bd5c805cc641d2b5cf5bcd3ff9eb2f359bd239c297d93e2405cad89bd06805430006d59666fb4903e9a44d78da9905f9341a
|
data/CODEOWNERS
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#This Repository is maintained by both the beaker and
|
|
1
|
+
#This Repository is maintained by both the beaker, installer, and Night's Watch teams, depending on the location of the changes
|
|
2
2
|
* @puppetlabs/beaker
|
|
3
3
|
/lib/beaker-pe/install @puppetlabs/installer-and-management
|
|
4
|
+
/lib/beaker-pe/pe-client-tools @puppetlabs/night-s-watch
|
|
4
5
|
/spec/beaker-pe/install @puppetlabs/installer-and-management
|
|
@@ -6,7 +6,6 @@ require "beaker-answers"
|
|
|
6
6
|
require "timeout"
|
|
7
7
|
require "json"
|
|
8
8
|
require "deep_merge"
|
|
9
|
-
|
|
10
9
|
module Beaker
|
|
11
10
|
module DSL
|
|
12
11
|
module InstallUtils
|
|
@@ -292,7 +291,7 @@ module Beaker
|
|
|
292
291
|
fetch_and_push_pe(host, path, filename, extension)
|
|
293
292
|
else
|
|
294
293
|
curlopts = opts[:use_proxy] ? " --proxy #{opts[:proxy_hostname]}:3128" : ""
|
|
295
|
-
on host, "cd #{host['working_dir']}; curl -O #{path}/#{filename}#{extension}#{curlopts}"
|
|
294
|
+
on host, "cd #{host['working_dir']}; curl -L -O #{path}/#{filename}#{extension}#{curlopts}"
|
|
296
295
|
end
|
|
297
296
|
end
|
|
298
297
|
end
|
|
@@ -328,7 +327,7 @@ module Beaker
|
|
|
328
327
|
on host, "cd #{host['working_dir']}; chmod 644 #{filename}#{extension}"
|
|
329
328
|
elsif host.is_cygwin?
|
|
330
329
|
curlopts = opts[:use_proxy] ? " --proxy #{opts[:proxy_hostname]}:3128" : ""
|
|
331
|
-
on host, "cd #{host['working_dir']}; curl -O #{path}/#{filename}#{extension}#{curlopts}"
|
|
330
|
+
on host, "cd #{host['working_dir']}; curl -L -O #{path}/#{filename}#{extension}#{curlopts}"
|
|
332
331
|
else
|
|
333
332
|
on host, powershell("$webclient = New-Object System.Net.WebClient; $webclient.DownloadFile('#{path}/#{filename}#{extension}','#{host['working_dir']}\\#{filename}#{extension}')")
|
|
334
333
|
end
|
|
@@ -381,7 +380,7 @@ module Beaker
|
|
|
381
380
|
command_file_push = 'cat '
|
|
382
381
|
else
|
|
383
382
|
curlopts = opts[:use_proxy] ? "--proxy #{opts[:proxy_hostname]}:3128 " : ""
|
|
384
|
-
command_file_push = "curl #{curlopts}#{path}/"
|
|
383
|
+
command_file_push = "curl -L #{curlopts}#{path}/"
|
|
385
384
|
end
|
|
386
385
|
on host, "cd #{host['working_dir']}; #{command_file_push}#{filename}#{extension} | #{unpack}"
|
|
387
386
|
|
|
@@ -582,6 +581,8 @@ module Beaker
|
|
|
582
581
|
do_install_pe_with_pe_managed_external_postgres(hosts,opts)
|
|
583
582
|
when :simple_monolithic
|
|
584
583
|
simple_monolithic_install(hosts.first, hosts.drop(1), opts)
|
|
584
|
+
when :simple_monolithic_install_with_preload
|
|
585
|
+
simple_monolithic_install_with_preload(hosts.first, hosts.drop(1), opts)
|
|
585
586
|
when :simple_split
|
|
586
587
|
# This isn't implemented yet, so just do a generic install instead
|
|
587
588
|
#simple_split_install(hosts, opts)
|
|
@@ -628,7 +629,11 @@ module Beaker
|
|
|
628
629
|
|
|
629
630
|
mono_roles = ['master', 'database', 'dashboard']
|
|
630
631
|
if has_all_roles?(hosts.first, mono_roles) && hosts.drop(1).all? {|host| host['roles'].include?('frictionless')}
|
|
631
|
-
:
|
|
632
|
+
if hosts.first['template'] =~ /-preload/ && opts[:type] != :upgrade
|
|
633
|
+
:simple_monolithic_install_with_preload
|
|
634
|
+
else
|
|
635
|
+
:simple_monolithic
|
|
636
|
+
end
|
|
632
637
|
elsif hosts[0]['roles'].include?('master') && hosts[1]['roles'].include?('database') && hosts[2]['roles'].include?('dashboard') && hosts.drop(3).all? {|host| host['roles'].include?('frictionless')}
|
|
633
638
|
:simple_split
|
|
634
639
|
elsif hosts.any? {|host| host['roles'].include?('pe_postgres')}
|
|
@@ -683,6 +688,37 @@ module Beaker
|
|
|
683
688
|
end
|
|
684
689
|
end
|
|
685
690
|
|
|
691
|
+
# Configure PE on a monolithic master and some number of frictionless agents if a node is using a PE preloaded image for the master node.
|
|
692
|
+
# @param [Host] master The node to configure the master on
|
|
693
|
+
# @param [Array<Host>] agents The nodes to install agents on
|
|
694
|
+
# @param [Hash{Symbol=>Symbol, String}] opts The options for how to install or upgrade PE
|
|
695
|
+
#
|
|
696
|
+
# @example
|
|
697
|
+
# simple_monolithic_install_with_preload(master, agents, {:type => :install, :pe_ver => '2017.2.0'})
|
|
698
|
+
#
|
|
699
|
+
# @return nil
|
|
700
|
+
#
|
|
701
|
+
# @api private
|
|
702
|
+
def simple_monolithic_install_with_preload(master, agents, opts={})
|
|
703
|
+
step "Performing a standard monolithic install with frictionless agents on a preloaded image"
|
|
704
|
+
all_hosts = [master, *agents]
|
|
705
|
+
configure_type_defaults_on([master])
|
|
706
|
+
|
|
707
|
+
# Set PE distribution on the agents, creates working directories
|
|
708
|
+
prepare_hosts(all_hosts, opts)
|
|
709
|
+
register_feature_flags!(opts)
|
|
710
|
+
generate_installer_conf_file_for(master, all_hosts, opts)
|
|
711
|
+
|
|
712
|
+
step "Stop agent on master" do
|
|
713
|
+
stop_agent_on(master)
|
|
714
|
+
end
|
|
715
|
+
|
|
716
|
+
if manage_puppet_service?(master[:pe_ver], options)
|
|
717
|
+
configure_puppet_agent_service(:ensure => 'stopped', :enabled => false)
|
|
718
|
+
end
|
|
719
|
+
|
|
720
|
+
install_agents_only_on(agents, opts)
|
|
721
|
+
end
|
|
686
722
|
|
|
687
723
|
# Configure the master to use a proxy and drop unproxied connections
|
|
688
724
|
def config_hosts_for_proxy_access hosts
|
|
@@ -47,6 +47,15 @@ module Beaker
|
|
|
47
47
|
else
|
|
48
48
|
install_dev_repos_on(product, host, directory, '/tmp/repo_configs',{:dev_builds_url => opts[:dev_builds_url]})
|
|
49
49
|
host.install_package('pe-client-tools')
|
|
50
|
+
if host['platform'] =~ /cisco|centos|redhat|eos|sles|el-|fedora-(2[2-9]|3[0-9])/
|
|
51
|
+
host.exec(Command.new('rpm -q pe-client-tools')) do |command|
|
|
52
|
+
raise "Wanted version not installed." unless command.stdout =~ /-#{opts[:pe_client_tools_version]}/
|
|
53
|
+
end
|
|
54
|
+
elsif host['platform'] =~ /ubuntu|debian|cumulus|huaweios/
|
|
55
|
+
host.exec(Command.new("apt-cache policy pe-client-tools | sed -n -e 's/Installed: //p'")) do |command|
|
|
56
|
+
raise "Wanted version not installed." unless command.stdout =~ /-#{opts[:pe_client_tools_version]}/
|
|
57
|
+
end
|
|
58
|
+
end
|
|
50
59
|
end
|
|
51
60
|
end
|
|
52
61
|
end
|
data/lib/beaker-pe/version.rb
CHANGED
|
@@ -646,29 +646,6 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
646
646
|
def slice_installer_options(host)
|
|
647
647
|
host.host_hash.select { |k,v| [ :pe_installer_conf_file, :pe_installer_conf_setting].include?(k) }
|
|
648
648
|
end
|
|
649
|
-
|
|
650
|
-
context 'when version < 2016.2.0' do
|
|
651
|
-
let(:pe_ver) { '3.8.5' }
|
|
652
|
-
|
|
653
|
-
it 'sets legacy settings' do
|
|
654
|
-
expect(slice_installer_options(host)).to eq(legacy_settings)
|
|
655
|
-
end
|
|
656
|
-
end
|
|
657
|
-
|
|
658
|
-
context 'when version >= 2016.2.0' do
|
|
659
|
-
let (:pe_ver) { '2016.2.0' }
|
|
660
|
-
|
|
661
|
-
it 'test use_meep?' do
|
|
662
|
-
expect(subject.use_meep?('3.8.5')).to eq(false)
|
|
663
|
-
expect(subject.use_meep?('2016.1.2')).to eq(false)
|
|
664
|
-
expect(subject.use_meep?('2016.2.0')).to eq(true)
|
|
665
|
-
expect(subject.use_meep?('2016.2.0-rc1-gabcdef')).to eq(true)
|
|
666
|
-
end
|
|
667
|
-
|
|
668
|
-
it 'sets meep settings' do
|
|
669
|
-
expect(slice_installer_options(host)).to eq(meep_settings)
|
|
670
|
-
end
|
|
671
|
-
end
|
|
672
649
|
end
|
|
673
650
|
|
|
674
651
|
RSpec.shared_examples 'test flag' do |flag_name|
|
|
@@ -1114,7 +1091,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
1114
1091
|
path = unixhost['pe_dir']
|
|
1115
1092
|
filename = "#{ unixhost['dist'] }"
|
|
1116
1093
|
extension = '.tar'
|
|
1117
|
-
expect( subject ).to receive( :on ).with( unixhost, "cd #{ unixhost['working_dir'] }; curl #{ path }/#{ filename }#{ extension } | tar -xvf -" ).once
|
|
1094
|
+
expect( subject ).to receive( :on ).with( unixhost, "cd #{ unixhost['working_dir'] }; curl -L #{ path }/#{ filename }#{ extension } | tar -xvf -" ).once
|
|
1118
1095
|
subject.fetch_pe( [unixhost], {} )
|
|
1119
1096
|
end
|
|
1120
1097
|
|
|
@@ -1144,7 +1121,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
1144
1121
|
path = unixhost['pe_dir']
|
|
1145
1122
|
filename = "#{ unixhost['dist'] }"
|
|
1146
1123
|
extension = '.tar.gz'
|
|
1147
|
-
expect( subject ).to receive( :on ).with( unixhost, "cd #{ unixhost['working_dir'] }; curl #{ path }/#{ filename }#{ extension } | gunzip | tar -xvf -" ).once
|
|
1124
|
+
expect( subject ).to receive( :on ).with( unixhost, "cd #{ unixhost['working_dir'] }; curl -L #{ path }/#{ filename }#{ extension } | gunzip | tar -xvf -" ).once
|
|
1148
1125
|
subject.fetch_pe( [unixhost], {} )
|
|
1149
1126
|
end
|
|
1150
1127
|
|
|
@@ -1190,7 +1167,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
1190
1167
|
path = machost['pe_dir']
|
|
1191
1168
|
filename = "#{ machost['dist'] }"
|
|
1192
1169
|
extension = '.dmg'
|
|
1193
|
-
expect( subject ).to receive( :on ).with( machost, "cd #{ machost['working_dir'] }; curl -O #{ path }/#{ filename }#{ extension }" ).once
|
|
1170
|
+
expect( subject ).to receive( :on ).with( machost, "cd #{ machost['working_dir'] }; curl -L -O #{ path }/#{ filename }#{ extension }" ).once
|
|
1194
1171
|
subject.fetch_pe( [machost], {} )
|
|
1195
1172
|
end
|
|
1196
1173
|
|
|
@@ -1644,6 +1621,13 @@ describe ClassMixedWithDSLInstallUtils do
|
|
|
1644
1621
|
subject.do_install([])
|
|
1645
1622
|
end
|
|
1646
1623
|
|
|
1624
|
+
it 'chooses to do a simple monolithic install with preload when appropriate' do
|
|
1625
|
+
expect(subject).to receive(:simple_monolithic_install_with_preload)
|
|
1626
|
+
allow(subject).to receive(:determine_install_type).and_return(:simple_monolithic_install_with_preload)
|
|
1627
|
+
|
|
1628
|
+
subject.do_install([])
|
|
1629
|
+
end
|
|
1630
|
+
|
|
1647
1631
|
it 'can perform a simple installation' do
|
|
1648
1632
|
expect(subject).to receive(:get_mco_setting).and_return({})
|
|
1649
1633
|
allow( subject ).to receive( :verify_network_resources).with(hosts, nil)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: beaker-pe
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.11.
|
|
4
|
+
version: 2.11.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppetlabs
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-08-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -248,6 +248,7 @@ executables:
|
|
|
248
248
|
extensions: []
|
|
249
249
|
extra_rdoc_files: []
|
|
250
250
|
files:
|
|
251
|
+
- ".github/dependabot.yml"
|
|
251
252
|
- ".gitignore"
|
|
252
253
|
- ".rspec"
|
|
253
254
|
- ".simplecov"
|
|
@@ -306,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
306
307
|
- !ruby/object:Gem::Version
|
|
307
308
|
version: '0'
|
|
308
309
|
requirements: []
|
|
309
|
-
rubygems_version: 3.0.
|
|
310
|
+
rubygems_version: 3.0.8
|
|
310
311
|
signing_key:
|
|
311
312
|
specification_version: 4
|
|
312
313
|
summary: Beaker PE DSL Helpers!
|