beaker 2.18.3 → 2.19.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|