beaker 2.18.3 → 2.19.0

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