beaker 2.18.3 → 2.19.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 +8 -8
- data/HISTORY.md +439 -2
- data/acceptance/lib/beaker/acceptance/install_utils.rb +58 -0
- data/acceptance/pre_suite/puppet_git/install.rb +6 -65
- data/acceptance/tests/foss_utils/clone_git_repo_on.rb +49 -0
- data/beaker.gemspec +2 -0
- data/lib/beaker/dsl/helpers/web_helpers.rb +2 -1
- data/lib/beaker/dsl/install_utils/aio_defaults.rb +0 -2
- data/lib/beaker/dsl/install_utils/foss_utils.rb +97 -60
- data/lib/beaker/dsl/install_utils/pe_utils.rb +30 -53
- data/lib/beaker/dsl/install_utils/puppet_utils.rb +43 -0
- data/lib/beaker/dsl/install_utils/windows_utils.rb +144 -0
- data/lib/beaker/dsl/roles.rb +20 -3
- data/lib/beaker/dsl/structure.rb +14 -3
- data/lib/beaker/host.rb +24 -3
- data/lib/beaker/host/unix/pkg.rb +9 -0
- data/lib/beaker/host/windows/exec.rb +3 -0
- data/lib/beaker/host_prebuilt_steps.rb +5 -9
- data/lib/beaker/hypervisor/aws_sdk.rb +22 -18
- data/lib/beaker/hypervisor/docker.rb +7 -0
- data/lib/beaker/hypervisor/vmpooler.rb +4 -0
- data/lib/beaker/logger.rb +12 -1
- data/lib/beaker/options/command_line_parser.rb +9 -0
- data/lib/beaker/options/options_hash.rb +3 -296
- data/lib/beaker/options/parser.rb +12 -0
- data/lib/beaker/options/presets.rb +0 -1
- data/lib/beaker/ssh_connection.rb +48 -23
- data/lib/beaker/test_case.rb +1 -1
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/helpers/web_helpers_spec.rb +10 -1
- data/spec/beaker/dsl/install_utils/foss_utils_spec.rb +194 -49
- data/spec/beaker/dsl/install_utils/pe_utils_spec.rb +112 -22
- data/spec/beaker/dsl/install_utils/puppet_utils_spec.rb +57 -0
- data/spec/beaker/dsl/install_utils/windows_utils_spec.rb +132 -0
- data/spec/beaker/dsl/roles_spec.rb +36 -5
- data/spec/beaker/dsl/structure_spec.rb +9 -2
- data/spec/beaker/host/unix/pkg_spec.rb +26 -6
- data/spec/beaker/host_prebuilt_steps_spec.rb +3 -2
- data/spec/beaker/host_spec.rb +18 -0
- data/spec/beaker/hypervisor/aixer_spec.rb +1 -1
- data/spec/beaker/hypervisor/aws_sdk_spec.rb +595 -58
- data/spec/beaker/hypervisor/docker_spec.rb +2 -1
- data/spec/beaker/hypervisor/solaris_spec.rb +1 -0
- data/spec/beaker/hypervisor/vagrant_spec.rb +2 -1
- data/spec/beaker/logger_spec.rb +39 -0
- data/spec/beaker/options/command_line_parser_spec.rb +2 -2
- data/spec/beaker/options/options_hash_spec.rb +1 -102
- data/spec/beaker/options/parser_spec.rb +19 -0
- data/spec/beaker/options/pe_version_scaper_spec.rb +11 -1
- data/spec/beaker/options/presets_spec.rb +8 -0
- data/spec/beaker/ssh_connection_spec.rb +39 -21
- data/spec/helpers.rb +9 -3
- data/spec/mocks.rb +2 -0
- metadata +34 -11
- data/lib/beaker/answers.rb +0 -143
- data/lib/beaker/answers/version20.rb +0 -120
- data/lib/beaker/answers/version28.rb +0 -121
- data/lib/beaker/answers/version30.rb +0 -227
- data/lib/beaker/answers/version32.rb +0 -44
- data/lib/beaker/answers/version34.rb +0 -51
- data/lib/beaker/answers/version38.rb +0 -29
- data/lib/beaker/answers/version40.rb +0 -44
- data/spec/beaker/answers_spec.rb +0 -547
data/spec/mocks.rb
CHANGED
@@ -77,12 +77,14 @@ module FakeHost
|
|
77
77
|
|
78
78
|
def self.create(name = 'fakevm', platform = 'redhat-version-arch', options = {})
|
79
79
|
options_hash = Beaker::Options::OptionsHash.new.merge(options)
|
80
|
+
options_hash[:logger] = RSpec::Mocks::Double.new('logger').as_null_object
|
80
81
|
host = Beaker::Host.create(name, { 'platform' => Beaker::Platform.new(platform) } , options_hash)
|
81
82
|
host.extend(MockedExec)
|
82
83
|
host
|
83
84
|
end
|
84
85
|
|
85
86
|
module MockedExec
|
87
|
+
|
86
88
|
def self.extended(other)
|
87
89
|
other.instance_eval do
|
88
90
|
send(:instance_variable_set, :@commands, [])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -248,6 +248,34 @@ dependencies:
|
|
248
248
|
- - ~>
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: 0.2.1
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: beaker-answers
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ~>
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0.0'
|
258
|
+
type: :runtime
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ~>
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0.0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: stringify-hash
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ~>
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0.0'
|
272
|
+
type: :runtime
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ~>
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0.0'
|
251
279
|
- !ruby/object:Gem::Dependency
|
252
280
|
name: rbvmomi
|
253
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -390,6 +418,7 @@ files:
|
|
390
418
|
- acceptance/fixtures/module/spec/spec_helper_acceptance.rb
|
391
419
|
- acceptance/fixtures/module/tests/init.pp
|
392
420
|
- acceptance/fixtures/module/vendor/bundle/ruby/gems.txt
|
421
|
+
- acceptance/lib/beaker/acceptance/install_utils.rb
|
393
422
|
- acceptance/pre_suite/README.md
|
394
423
|
- acceptance/pre_suite/pe/install.rb
|
395
424
|
- acceptance/pre_suite/puppet_gem/install.rb
|
@@ -397,6 +426,7 @@ files:
|
|
397
426
|
- acceptance/pre_suite/puppet_pkg/install.rb
|
398
427
|
- acceptance/tests/base/README.md
|
399
428
|
- acceptance/tests/base/host.rb
|
429
|
+
- acceptance/tests/foss_utils/clone_git_repo_on.rb
|
400
430
|
- acceptance/tests/hypervisor/communication.rb
|
401
431
|
- acceptance/tests/puppet/README.md
|
402
432
|
- acceptance/tests/puppet/install_smoke.rb
|
@@ -404,14 +434,6 @@ files:
|
|
404
434
|
- bin/beaker
|
405
435
|
- ext/completion/beaker-completion.bash
|
406
436
|
- lib/beaker.rb
|
407
|
-
- lib/beaker/answers.rb
|
408
|
-
- lib/beaker/answers/version20.rb
|
409
|
-
- lib/beaker/answers/version28.rb
|
410
|
-
- lib/beaker/answers/version30.rb
|
411
|
-
- lib/beaker/answers/version32.rb
|
412
|
-
- lib/beaker/answers/version34.rb
|
413
|
-
- lib/beaker/answers/version38.rb
|
414
|
-
- lib/beaker/answers/version40.rb
|
415
437
|
- lib/beaker/cli.rb
|
416
438
|
- lib/beaker/command.rb
|
417
439
|
- lib/beaker/command_factory.rb
|
@@ -434,6 +456,7 @@ files:
|
|
434
456
|
- lib/beaker/dsl/install_utils/pe_defaults.rb
|
435
457
|
- lib/beaker/dsl/install_utils/pe_utils.rb
|
436
458
|
- lib/beaker/dsl/install_utils/puppet_utils.rb
|
459
|
+
- lib/beaker/dsl/install_utils/windows_utils.rb
|
437
460
|
- lib/beaker/dsl/outcomes.rb
|
438
461
|
- lib/beaker/dsl/patterns.rb
|
439
462
|
- lib/beaker/dsl/roles.rb
|
@@ -519,7 +542,6 @@ files:
|
|
519
542
|
- lib/beaker/test_case.rb
|
520
543
|
- lib/beaker/test_suite.rb
|
521
544
|
- lib/beaker/version.rb
|
522
|
-
- spec/beaker/answers_spec.rb
|
523
545
|
- spec/beaker/cli_spec.rb
|
524
546
|
- spec/beaker/command_spec.rb
|
525
547
|
- spec/beaker/dsl/assertions_spec.rb
|
@@ -536,6 +558,7 @@ files:
|
|
536
558
|
- spec/beaker/dsl/install_utils/pe_defaults_spec.rb
|
537
559
|
- spec/beaker/dsl/install_utils/pe_utils_spec.rb
|
538
560
|
- spec/beaker/dsl/install_utils/puppet_utils_spec.rb
|
561
|
+
- spec/beaker/dsl/install_utils/windows_utils_spec.rb
|
539
562
|
- spec/beaker/dsl/outcomes_spec.rb
|
540
563
|
- spec/beaker/dsl/roles_spec.rb
|
541
564
|
- spec/beaker/dsl/structure_spec.rb
|
data/lib/beaker/answers.rb
DELETED
@@ -1,143 +0,0 @@
|
|
1
|
-
module Beaker
|
2
|
-
# This class provides methods for generating PE answer file
|
3
|
-
# information.
|
4
|
-
class Answers
|
5
|
-
|
6
|
-
DEFAULT_ANSWERS = Beaker::Options::OptionsHash.new.merge({
|
7
|
-
:q_puppet_enterpriseconsole_auth_user_email => 'admin@example.com',
|
8
|
-
:q_puppet_enterpriseconsole_auth_password => '~!@#$%^*-/ aZ',
|
9
|
-
:q_puppet_enterpriseconsole_smtp_port => 25,
|
10
|
-
:q_puppet_enterpriseconsole_smtp_use_tls => 'n',
|
11
|
-
:q_verify_packages => 'y',
|
12
|
-
:q_puppetdb_password => '~!@#$%^*-/ aZ',
|
13
|
-
:q_puppetmaster_enterpriseconsole_port => 443,
|
14
|
-
:q_puppet_enterpriseconsole_auth_database_name => 'console_auth',
|
15
|
-
:q_puppet_enterpriseconsole_auth_database_user => 'mYu7hu3r',
|
16
|
-
:q_puppet_enterpriseconsole_database_name => 'console',
|
17
|
-
:q_puppet_enterpriseconsole_database_user => 'mYc0nS03u3r',
|
18
|
-
:q_database_root_password => '=ZYdjiP3jCwV5eo9s1MBd',
|
19
|
-
:q_database_root_user => 'pe-postgres',
|
20
|
-
:q_database_export_dir => '/tmp',
|
21
|
-
:q_puppetdb_database_name => 'pe-puppetdb',
|
22
|
-
:q_puppetdb_database_user => 'mYpdBu3r',
|
23
|
-
:q_database_port => 5432,
|
24
|
-
:q_puppetdb_port => 8081,
|
25
|
-
:q_classifier_database_user => 'DFGhjlkj',
|
26
|
-
:q_database_name => 'pe-classifier',
|
27
|
-
:q_classifier_database_password => '~!@#$%^*-/ aZ',
|
28
|
-
:q_activity_database_user => 'adsfglkj',
|
29
|
-
:q_activity_database_name => 'pe-activity',
|
30
|
-
:q_activity_database_password => '~!@#$%^*-/ aZ',
|
31
|
-
:q_rbac_database_user => 'RbhNBklm',
|
32
|
-
:q_rbac_database_name => 'pe-rbac',
|
33
|
-
:q_rbac_database_password => '~!@#$%^*-/ aZ',
|
34
|
-
:q_install_update_server => 'y',
|
35
|
-
:q_exit_for_nc_migrate => 'n',
|
36
|
-
:q_enable_future_parser => 'n',
|
37
|
-
:q_pe_check_for_updates => 'n',
|
38
|
-
})
|
39
|
-
|
40
|
-
# When given a Puppet Enterprise version, a list of hosts and other
|
41
|
-
# qualifying data this method will return the appropriate object that can be used
|
42
|
-
# to generate answer file data.
|
43
|
-
#
|
44
|
-
# @param [String] version Puppet Enterprise version to generate answer data for
|
45
|
-
# @param [Array<Beaker::Host>] hosts An array of host objects.
|
46
|
-
# @param [Hash] options options for answer files
|
47
|
-
# @option options [Symbol] :type Should be one of :upgrade or :install.
|
48
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
49
|
-
# data.
|
50
|
-
def self.create version, hosts, options
|
51
|
-
case version
|
52
|
-
when /\A(4\.0|2015)/
|
53
|
-
return Version40.new(version, hosts, options)
|
54
|
-
when /\A3\.99/
|
55
|
-
return Version40.new(version, hosts, options)
|
56
|
-
when /\A3\.8/
|
57
|
-
return Version38.new(version, hosts, options)
|
58
|
-
when /\A3\.7/
|
59
|
-
return Version34.new(version, hosts, options)
|
60
|
-
when /\A3\.4/
|
61
|
-
return Version34.new(version, hosts, options)
|
62
|
-
when /\A3\.[2-3]/
|
63
|
-
return Version32.new(version, hosts, options)
|
64
|
-
when /\A3\.1/
|
65
|
-
return Version30.new(version, hosts, options)
|
66
|
-
when /\A3\.0/
|
67
|
-
return Version30.new(version, hosts, options)
|
68
|
-
when /\A2\.8/
|
69
|
-
return Version28.new(version, hosts, options)
|
70
|
-
when /\A2\.0/
|
71
|
-
return Version20.new(version, hosts, options)
|
72
|
-
else
|
73
|
-
raise NotImplementedError, "Don't know how to generate answers for #{version}"
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
# The answer value for a provided question. Use the user answer when available, otherwise return the default
|
78
|
-
# @param [Hash] options options for answer file
|
79
|
-
# @option options [Symbol] :answer Contains a hash of user provided question name and answer value pairs.
|
80
|
-
# @param [String] default Should there be no user value for the provided question name return this default
|
81
|
-
# @return [String] The answer value
|
82
|
-
def answer_for(options, q, default = nil)
|
83
|
-
answer = DEFAULT_ANSWERS[q]
|
84
|
-
# check to see if there is a value for this in the provided options
|
85
|
-
if options[:answers] && options[:answers][q]
|
86
|
-
answer = options[:answers][q]
|
87
|
-
end
|
88
|
-
# use the default if we don't have anything
|
89
|
-
if not answer
|
90
|
-
answer = default
|
91
|
-
end
|
92
|
-
answer
|
93
|
-
end
|
94
|
-
|
95
|
-
# When given a Puppet Enterprise version, a list of hosts and other
|
96
|
-
# qualifying data this method will return a hash (keyed from the hosts)
|
97
|
-
# of default Puppet Enterprise answer file data hashes.
|
98
|
-
#
|
99
|
-
# @param [String] version Puppet Enterprise version to generate answer data for
|
100
|
-
# @param [Array<Beaker::Host>] hosts An array of host objects.
|
101
|
-
# @param [Hash] options options for answer files
|
102
|
-
# @option options [Symbol] :type Should be one of :upgrade or :install.
|
103
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
104
|
-
# data.
|
105
|
-
def initialize(version, hosts, options)
|
106
|
-
@version = version
|
107
|
-
@hosts = hosts
|
108
|
-
@options = options
|
109
|
-
end
|
110
|
-
|
111
|
-
# Generate the answers hash based upon version, host and option information
|
112
|
-
def generate_answers
|
113
|
-
raise "This should be handled by subclasses!"
|
114
|
-
end
|
115
|
-
|
116
|
-
# Access the answers hash for this version, host and option information. If the answers
|
117
|
-
# have not yet been calculated, generate them.
|
118
|
-
# @return [Hash] A hash of answers keyed by host.name
|
119
|
-
def answers
|
120
|
-
@answers ||= generate_answers
|
121
|
-
end
|
122
|
-
|
123
|
-
# This converts a data hash provided by answers, and returns a Puppet
|
124
|
-
# Enterprise compatible answer file ready for use.
|
125
|
-
#
|
126
|
-
# @param [Beaker::Host] host Host object in question to generate the answer
|
127
|
-
# file for.
|
128
|
-
# @return [String] a string of answers
|
129
|
-
# @example Generating an answer file for a series of hosts
|
130
|
-
# hosts.each do |host|
|
131
|
-
# answers = Beaker::Answers.new("2.0", hosts, "master")
|
132
|
-
# create_remote_file host, "/mypath/answer", answers.answer_string(host, answers)
|
133
|
-
# end
|
134
|
-
def answer_string(host)
|
135
|
-
answers[host.name].map { |k,v| "#{k}=#{v}" }.join("\n")
|
136
|
-
end
|
137
|
-
|
138
|
-
end
|
139
|
-
|
140
|
-
[ 'version40', 'version34', 'version32', 'version30', 'version28', 'version20' ].each do |lib|
|
141
|
-
require "beaker/answers/#{lib}"
|
142
|
-
end
|
143
|
-
end
|
@@ -1,120 +0,0 @@
|
|
1
|
-
module Beaker
|
2
|
-
# This class provides answer file information for PE version 2.0
|
3
|
-
#
|
4
|
-
# @api private
|
5
|
-
class Version20 < Answers
|
6
|
-
# Return answer data for a host
|
7
|
-
#
|
8
|
-
# @param [Beaker::Host] host Host to return data for
|
9
|
-
# @param [Beaker::Host] master Host object representing the master
|
10
|
-
# @param [Beaker::Host] dashboard Host object representing the dashboard
|
11
|
-
# @param [Hash] options options for answer files
|
12
|
-
# @option options [Symbol] :type Should be one of :upgrade or :install.
|
13
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
14
|
-
# data.
|
15
|
-
def host_answers(host, master, dashboard, options)
|
16
|
-
return nil if host['platform'] =~ /windows/
|
17
|
-
|
18
|
-
agent_a = {
|
19
|
-
:q_install => 'y',
|
20
|
-
:q_puppetagent_install => 'y',
|
21
|
-
:q_puppet_cloud_install => 'y',
|
22
|
-
:q_puppet_symlinks_install => 'y',
|
23
|
-
:q_vendor_packages_install => 'y',
|
24
|
-
:q_puppetagent_certname => host.to_s,
|
25
|
-
:q_puppetagent_server => master.to_s,
|
26
|
-
|
27
|
-
# Disable console and master by default
|
28
|
-
# This will be overridden by other blocks being merged in
|
29
|
-
:q_puppetmaster_install => 'n',
|
30
|
-
:q_puppet_enterpriseconsole_install => 'n',
|
31
|
-
}
|
32
|
-
|
33
|
-
master_dns_altnames = [master.to_s, master['ip'], 'puppet'].compact.uniq.join(',')
|
34
|
-
master_a = {
|
35
|
-
:q_puppetmaster_install => 'y',
|
36
|
-
:q_puppetmaster_certname => master.to_s,
|
37
|
-
:q_puppetmaster_dnsaltnames => master_dns_altnames,
|
38
|
-
:q_puppetmaster_enterpriseconsole_hostname => dashboard.to_s,
|
39
|
-
:q_puppetmaster_enterpriseconsole_port => answer_for(options, :q_puppetmaster_enterpriseconsole_port, 443),
|
40
|
-
:q_puppetmaster_forward_facts => 'y',
|
41
|
-
}
|
42
|
-
|
43
|
-
dashboard_user = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_user_email)}'"
|
44
|
-
smtp_host = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_host, dashboard.to_s)}'"
|
45
|
-
dashboard_password = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_password)}'"
|
46
|
-
smtp_port = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_port)}'"
|
47
|
-
smtp_username = answer_for(options, :q_puppet_enterpriseconsole_smtp_username)
|
48
|
-
smtp_password = answer_for(options, :q_puppet_enterpriseconsole_smtp_password)
|
49
|
-
smtp_use_tls = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_use_tls)}'"
|
50
|
-
auth_database_name = answer_for(options, :q_puppet_enterpriseconsole_auth_database_name, 'console_auth')
|
51
|
-
auth_database_user = answer_for(options, :q_puppet_enterpriseconsole_auth_database_user, 'mYu7hu3r')
|
52
|
-
console_database_name = answer_for(options, :q_puppet_enterpriseconsole_database_name, 'console')
|
53
|
-
console_database_user = answer_for(options, :q_puppet_enterpriseconsole_database_user, 'mYc0nS03u3r')
|
54
|
-
console_inventory_port = answer_for(options, :q_puppet_enterpriseconsole_inventory_port, 8140)
|
55
|
-
console_httpd_port = answer_for(options, :q_puppet_enterpriseconsole_httpd_port, 443)
|
56
|
-
|
57
|
-
console_a = {
|
58
|
-
:q_puppet_enterpriseconsole_install => 'y',
|
59
|
-
:q_puppet_enterpriseconsole_database_install => 'y',
|
60
|
-
:q_puppet_enterpriseconsole_auth_database_name => auth_database_name,
|
61
|
-
:q_puppet_enterpriseconsole_auth_database_user => auth_database_user,
|
62
|
-
:q_puppet_enterpriseconsole_auth_database_password => dashboard_password,
|
63
|
-
:q_puppet_enterpriseconsole_database_name => console_database_name,
|
64
|
-
:q_puppet_enterpriseconsole_database_user => console_database_user,
|
65
|
-
:q_puppet_enterpriseconsole_database_root_password => dashboard_password,
|
66
|
-
:q_puppet_enterpriseconsole_database_password => dashboard_password,
|
67
|
-
:q_puppet_enterpriseconsole_inventory_hostname => host.to_s,
|
68
|
-
:q_puppet_enterpriseconsole_inventory_certname => host.to_s,
|
69
|
-
:q_puppet_enterpriseconsole_inventory_dnsaltnames => master.to_s,
|
70
|
-
:q_puppet_enterpriseconsole_inventory_port => console_inventory_port,
|
71
|
-
:q_puppet_enterpriseconsole_master_hostname => master.to_s,
|
72
|
-
:q_puppet_enterpriseconsole_auth_user_email => dashboard_user,
|
73
|
-
:q_puppet_enterpriseconsole_auth_password => dashboard_password,
|
74
|
-
:q_puppet_enterpriseconsole_httpd_port => console_httpd_port,
|
75
|
-
:q_puppet_enterpriseconsole_smtp_host => smtp_host,
|
76
|
-
:q_puppet_enterpriseconsole_smtp_use_tls => smtp_use_tls,
|
77
|
-
:q_puppet_enterpriseconsole_smtp_port => smtp_port,
|
78
|
-
}
|
79
|
-
|
80
|
-
console_a[:q_puppet_enterpriseconsole_auth_user] = console_a[:q_puppet_enterpriseconsole_auth_user_email]
|
81
|
-
|
82
|
-
if smtp_password and smtp_username
|
83
|
-
console_a.merge!({
|
84
|
-
:q_puppet_enterpriseconsole_smtp_password => "'#{smtp_password}'",
|
85
|
-
:q_puppet_enterpriseconsole_smtp_username => "'#{smtp_username}'",
|
86
|
-
:q_puppet_enterpriseconsole_smtp_user_auth => 'y'
|
87
|
-
})
|
88
|
-
end
|
89
|
-
|
90
|
-
answers = agent_a.dup
|
91
|
-
if host == master
|
92
|
-
answers.merge! master_a
|
93
|
-
end
|
94
|
-
|
95
|
-
if host == dashboard
|
96
|
-
answers.merge! console_a
|
97
|
-
end
|
98
|
-
|
99
|
-
return answers
|
100
|
-
end
|
101
|
-
|
102
|
-
# Return answer data for all hosts.
|
103
|
-
#
|
104
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
105
|
-
# data.
|
106
|
-
def generate_answers
|
107
|
-
the_answers = {}
|
108
|
-
dashboard = only_host_with_role(@hosts, 'dashboard')
|
109
|
-
master = only_host_with_role(@hosts, 'master')
|
110
|
-
@hosts.each do |h|
|
111
|
-
the_answers[h.name] = host_answers(h, master, dashboard, @options)
|
112
|
-
if the_answers[h.name] && h[:custom_answers]
|
113
|
-
the_answers[h.name] = the_answers[h.name].merge(h[:custom_answers])
|
114
|
-
end
|
115
|
-
h[:answers] = the_answers[h.name]
|
116
|
-
end
|
117
|
-
return the_answers
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
@@ -1,121 +0,0 @@
|
|
1
|
-
module Beaker
|
2
|
-
# This class provides answer file information for PE version 2.8
|
3
|
-
#
|
4
|
-
# @api private
|
5
|
-
class Version28 < Answers
|
6
|
-
|
7
|
-
# Return answer data for a host
|
8
|
-
#
|
9
|
-
# @param [Beaker::Host] host Host to return data for
|
10
|
-
# @param [Beaker::Host] master Host object representing the master
|
11
|
-
# @param [Beaker::Host] dashboard Host object representing the dashboard
|
12
|
-
# @param [Hash] options options for answer files
|
13
|
-
# @option options [Symbol] :type Should be one of :upgrade or :install.
|
14
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
15
|
-
# data.
|
16
|
-
def host_answers(host, master, dashboard, options)
|
17
|
-
return nil if host['platform'] =~ /windows/
|
18
|
-
|
19
|
-
agent_a = {
|
20
|
-
:q_install => 'y',
|
21
|
-
:q_puppetagent_install => 'y',
|
22
|
-
:q_puppet_cloud_install => 'y',
|
23
|
-
:q_puppet_symlinks_install => 'y',
|
24
|
-
:q_vendor_packages_install => 'y',
|
25
|
-
:q_puppetagent_certname => host.to_s,
|
26
|
-
:q_puppetagent_server => master.to_s,
|
27
|
-
|
28
|
-
# Disable console and master by default
|
29
|
-
# This will be overridden by other blocks being merged in
|
30
|
-
:q_puppetmaster_install => 'n',
|
31
|
-
:q_puppet_enterpriseconsole_install => 'n',
|
32
|
-
}
|
33
|
-
|
34
|
-
master_dns_altnames = [master.to_s, master['ip'], 'puppet'].compact.uniq.join(',')
|
35
|
-
master_a = {
|
36
|
-
:q_puppetmaster_install => 'y',
|
37
|
-
:q_puppetmaster_certname => master.to_s,
|
38
|
-
:q_puppetmaster_dnsaltnames => master_dns_altnames,
|
39
|
-
:q_puppetmaster_enterpriseconsole_hostname => dashboard.to_s,
|
40
|
-
:q_puppetmaster_enterpriseconsole_port => answer_for(options, :q_puppetmaster_enterpriseconsole_port, 443),
|
41
|
-
:q_puppetmaster_forward_facts => 'y',
|
42
|
-
}
|
43
|
-
|
44
|
-
dashboard_user = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_user_email)}'"
|
45
|
-
smtp_host = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_host, dashboard.to_s)}'"
|
46
|
-
dashboard_password = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_password)}'"
|
47
|
-
smtp_port = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_port)}'"
|
48
|
-
smtp_username = answer_for(options, :q_puppet_enterpriseconsole_smtp_username)
|
49
|
-
smtp_password = answer_for(options, :q_puppet_enterpriseconsole_smtp_password)
|
50
|
-
smtp_use_tls = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_use_tls)}'"
|
51
|
-
auth_database_name = answer_for(options, :q_puppet_enterpriseconsole_auth_database_name, 'console_auth')
|
52
|
-
auth_database_user = answer_for(options, :q_puppet_enterpriseconsole_auth_database_user, 'mYu7hu3r')
|
53
|
-
console_database_name = answer_for(options, :q_puppet_enterpriseconsole_database_name, 'console')
|
54
|
-
console_database_user = answer_for(options, :q_puppet_enterpriseconsole_database_user, 'mYc0nS03u3r')
|
55
|
-
console_inventory_port = answer_for(options, :q_puppet_enterpriseconsole_inventory_port, 8140)
|
56
|
-
console_httpd_port = answer_for(options, :q_puppet_enterpriseconsole_httpd_port, 443)
|
57
|
-
|
58
|
-
console_a = {
|
59
|
-
:q_puppet_enterpriseconsole_install => 'y',
|
60
|
-
:q_puppet_enterpriseconsole_database_install => 'y',
|
61
|
-
:q_puppet_enterpriseconsole_auth_database_name => auth_database_name,
|
62
|
-
:q_puppet_enterpriseconsole_auth_database_user => auth_database_user,
|
63
|
-
:q_puppet_enterpriseconsole_auth_database_password => dashboard_password,
|
64
|
-
:q_puppet_enterpriseconsole_database_name => console_database_name,
|
65
|
-
:q_puppet_enterpriseconsole_database_user => console_database_user,
|
66
|
-
:q_puppet_enterpriseconsole_database_password => dashboard_password,
|
67
|
-
:q_puppet_enterpriseconsole_inventory_hostname => host.to_s,
|
68
|
-
:q_puppet_enterpriseconsole_inventory_certname => host.to_s,
|
69
|
-
:q_puppet_enterpriseconsole_inventory_dnsaltnames => master.to_s,
|
70
|
-
:q_puppet_enterpriseconsole_inventory_port => console_inventory_port,
|
71
|
-
:q_puppet_enterpriseconsole_master_hostname => master.to_s,
|
72
|
-
:q_puppet_enterpriseconsole_auth_user_email => dashboard_user,
|
73
|
-
:q_puppet_enterpriseconsole_auth_password => dashboard_password,
|
74
|
-
:q_puppet_enterpriseconsole_httpd_port => console_httpd_port,
|
75
|
-
:q_puppet_enterpriseconsole_smtp_host => smtp_host,
|
76
|
-
:q_puppet_enterpriseconsole_smtp_use_tls => smtp_use_tls,
|
77
|
-
:q_puppet_enterpriseconsole_smtp_port => smtp_port,
|
78
|
-
}
|
79
|
-
|
80
|
-
console_a[:q_puppet_enterpriseconsole_auth_user] = console_a[:q_puppet_enterpriseconsole_auth_user_email]
|
81
|
-
|
82
|
-
if smtp_password and smtp_username
|
83
|
-
console_a.merge!({
|
84
|
-
:q_puppet_enterpriseconsole_smtp_password => "'#{smtp_password}'",
|
85
|
-
:q_puppet_enterpriseconsole_smtp_username => "'#{smtp_username}'",
|
86
|
-
:q_puppet_enterpriseconsole_smtp_user_auth => 'y'
|
87
|
-
})
|
88
|
-
end
|
89
|
-
|
90
|
-
answers = agent_a.dup
|
91
|
-
if host == master
|
92
|
-
answers.merge! master_a
|
93
|
-
end
|
94
|
-
|
95
|
-
if host == dashboard
|
96
|
-
answers.merge! console_a
|
97
|
-
end
|
98
|
-
|
99
|
-
return answers
|
100
|
-
end
|
101
|
-
|
102
|
-
# Return answer data for all hosts.
|
103
|
-
#
|
104
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
105
|
-
# data.
|
106
|
-
def generate_answers
|
107
|
-
the_answers = {}
|
108
|
-
dashboard = only_host_with_role(@hosts, 'dashboard')
|
109
|
-
master = only_host_with_role(@hosts, 'master')
|
110
|
-
@hosts.each do |h|
|
111
|
-
the_answers[h.name] = host_answers(h, master, dashboard, @options)
|
112
|
-
if the_answers[h.name] && h[:custom_answers]
|
113
|
-
the_answers[h.name] = the_answers[h.name].merge(h[:custom_answers])
|
114
|
-
end
|
115
|
-
h[:answers] = the_answers[h.name]
|
116
|
-
end
|
117
|
-
return the_answers
|
118
|
-
end
|
119
|
-
|
120
|
-
end
|
121
|
-
end
|