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.
Files changed (63) hide show
  1. checksums.yaml +8 -8
  2. data/HISTORY.md +439 -2
  3. data/acceptance/lib/beaker/acceptance/install_utils.rb +58 -0
  4. data/acceptance/pre_suite/puppet_git/install.rb +6 -65
  5. data/acceptance/tests/foss_utils/clone_git_repo_on.rb +49 -0
  6. data/beaker.gemspec +2 -0
  7. data/lib/beaker/dsl/helpers/web_helpers.rb +2 -1
  8. data/lib/beaker/dsl/install_utils/aio_defaults.rb +0 -2
  9. data/lib/beaker/dsl/install_utils/foss_utils.rb +97 -60
  10. data/lib/beaker/dsl/install_utils/pe_utils.rb +30 -53
  11. data/lib/beaker/dsl/install_utils/puppet_utils.rb +43 -0
  12. data/lib/beaker/dsl/install_utils/windows_utils.rb +144 -0
  13. data/lib/beaker/dsl/roles.rb +20 -3
  14. data/lib/beaker/dsl/structure.rb +14 -3
  15. data/lib/beaker/host.rb +24 -3
  16. data/lib/beaker/host/unix/pkg.rb +9 -0
  17. data/lib/beaker/host/windows/exec.rb +3 -0
  18. data/lib/beaker/host_prebuilt_steps.rb +5 -9
  19. data/lib/beaker/hypervisor/aws_sdk.rb +22 -18
  20. data/lib/beaker/hypervisor/docker.rb +7 -0
  21. data/lib/beaker/hypervisor/vmpooler.rb +4 -0
  22. data/lib/beaker/logger.rb +12 -1
  23. data/lib/beaker/options/command_line_parser.rb +9 -0
  24. data/lib/beaker/options/options_hash.rb +3 -296
  25. data/lib/beaker/options/parser.rb +12 -0
  26. data/lib/beaker/options/presets.rb +0 -1
  27. data/lib/beaker/ssh_connection.rb +48 -23
  28. data/lib/beaker/test_case.rb +1 -1
  29. data/lib/beaker/version.rb +1 -1
  30. data/spec/beaker/dsl/helpers/web_helpers_spec.rb +10 -1
  31. data/spec/beaker/dsl/install_utils/foss_utils_spec.rb +194 -49
  32. data/spec/beaker/dsl/install_utils/pe_utils_spec.rb +112 -22
  33. data/spec/beaker/dsl/install_utils/puppet_utils_spec.rb +57 -0
  34. data/spec/beaker/dsl/install_utils/windows_utils_spec.rb +132 -0
  35. data/spec/beaker/dsl/roles_spec.rb +36 -5
  36. data/spec/beaker/dsl/structure_spec.rb +9 -2
  37. data/spec/beaker/host/unix/pkg_spec.rb +26 -6
  38. data/spec/beaker/host_prebuilt_steps_spec.rb +3 -2
  39. data/spec/beaker/host_spec.rb +18 -0
  40. data/spec/beaker/hypervisor/aixer_spec.rb +1 -1
  41. data/spec/beaker/hypervisor/aws_sdk_spec.rb +595 -58
  42. data/spec/beaker/hypervisor/docker_spec.rb +2 -1
  43. data/spec/beaker/hypervisor/solaris_spec.rb +1 -0
  44. data/spec/beaker/hypervisor/vagrant_spec.rb +2 -1
  45. data/spec/beaker/logger_spec.rb +39 -0
  46. data/spec/beaker/options/command_line_parser_spec.rb +2 -2
  47. data/spec/beaker/options/options_hash_spec.rb +1 -102
  48. data/spec/beaker/options/parser_spec.rb +19 -0
  49. data/spec/beaker/options/pe_version_scaper_spec.rb +11 -1
  50. data/spec/beaker/options/presets_spec.rb +8 -0
  51. data/spec/beaker/ssh_connection_spec.rb +39 -21
  52. data/spec/helpers.rb +9 -3
  53. data/spec/mocks.rb +2 -0
  54. metadata +34 -11
  55. data/lib/beaker/answers.rb +0 -143
  56. data/lib/beaker/answers/version20.rb +0 -120
  57. data/lib/beaker/answers/version28.rb +0 -121
  58. data/lib/beaker/answers/version30.rb +0 -227
  59. data/lib/beaker/answers/version32.rb +0 -44
  60. data/lib/beaker/answers/version34.rb +0 -51
  61. data/lib/beaker/answers/version38.rb +0 -29
  62. data/lib/beaker/answers/version40.rb +0 -44
  63. data/spec/beaker/answers_spec.rb +0 -547
@@ -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.18.3
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-07-28 00:00:00.000000000 Z
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
@@ -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