beaker-answers 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ module BeakerAnswers
2
+ module Version
3
+ STRING = '0.0.0'
4
+ end
5
+ end
@@ -0,0 +1,126 @@
1
+ module BeakerAnswers
2
+
3
+ # This class provides answer file information for PE version 2.0
4
+ #
5
+ class Version20 < Answers
6
+
7
+ # The version of PE that this set of answers is appropriate for
8
+ def self.pe_version_matcher
9
+ /\A2\.0/
10
+ end
11
+
12
+ # Return answer data for a host
13
+ #
14
+ # @param [Beaker::Host] host Host to return data for
15
+ # @param [Beaker::Host] master Host object representing the master
16
+ # @param [Beaker::Host] dashboard Host object representing the dashboard
17
+ # @param [Hash] options options for answer files
18
+ # @option options [Symbol] :type Should be one of :upgrade or :install.
19
+ # @return [Hash] A hash (keyed from hosts) containing hashes of answer file
20
+ # data.
21
+ def host_answers(host, master, dashboard, options)
22
+ return nil if host['platform'] =~ /windows/
23
+
24
+ agent_a = {
25
+ :q_install => 'y',
26
+ :q_puppetagent_install => 'y',
27
+ :q_puppet_cloud_install => 'y',
28
+ :q_puppet_symlinks_install => 'y',
29
+ :q_vendor_packages_install => 'y',
30
+ :q_puppetagent_certname => host.to_s,
31
+ :q_puppetagent_server => master.to_s,
32
+
33
+ # Disable console and master by default
34
+ # This will be overridden by other blocks being merged in
35
+ :q_puppetmaster_install => 'n',
36
+ :q_puppet_enterpriseconsole_install => 'n',
37
+ }
38
+
39
+ master_dns_altnames = [master.to_s, master['ip'], 'puppet'].compact.uniq.join(',')
40
+ master_a = {
41
+ :q_puppetmaster_install => 'y',
42
+ :q_puppetmaster_certname => master.to_s,
43
+ :q_puppetmaster_dnsaltnames => master_dns_altnames,
44
+ :q_puppetmaster_enterpriseconsole_hostname => dashboard.to_s,
45
+ :q_puppetmaster_enterpriseconsole_port => answer_for(options, :q_puppetmaster_enterpriseconsole_port, 443),
46
+ :q_puppetmaster_forward_facts => 'y',
47
+ }
48
+
49
+ dashboard_user = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_user_email)}'"
50
+ smtp_host = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_host, dashboard.to_s)}'"
51
+ dashboard_password = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_password)}'"
52
+ smtp_port = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_port)}'"
53
+ smtp_username = answer_for(options, :q_puppet_enterpriseconsole_smtp_username)
54
+ smtp_password = answer_for(options, :q_puppet_enterpriseconsole_smtp_password)
55
+ smtp_use_tls = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_use_tls)}'"
56
+ auth_database_name = answer_for(options, :q_puppet_enterpriseconsole_auth_database_name, 'console_auth')
57
+ auth_database_user = answer_for(options, :q_puppet_enterpriseconsole_auth_database_user, 'mYu7hu3r')
58
+ console_database_name = answer_for(options, :q_puppet_enterpriseconsole_database_name, 'console')
59
+ console_database_user = answer_for(options, :q_puppet_enterpriseconsole_database_user, 'mYc0nS03u3r')
60
+ console_inventory_port = answer_for(options, :q_puppet_enterpriseconsole_inventory_port, 8140)
61
+ console_httpd_port = answer_for(options, :q_puppet_enterpriseconsole_httpd_port, 443)
62
+
63
+ console_a = {
64
+ :q_puppet_enterpriseconsole_install => 'y',
65
+ :q_puppet_enterpriseconsole_database_install => 'y',
66
+ :q_puppet_enterpriseconsole_auth_database_name => auth_database_name,
67
+ :q_puppet_enterpriseconsole_auth_database_user => auth_database_user,
68
+ :q_puppet_enterpriseconsole_auth_database_password => dashboard_password,
69
+ :q_puppet_enterpriseconsole_database_name => console_database_name,
70
+ :q_puppet_enterpriseconsole_database_user => console_database_user,
71
+ :q_puppet_enterpriseconsole_database_root_password => dashboard_password,
72
+ :q_puppet_enterpriseconsole_database_password => dashboard_password,
73
+ :q_puppet_enterpriseconsole_inventory_hostname => host.to_s,
74
+ :q_puppet_enterpriseconsole_inventory_certname => host.to_s,
75
+ :q_puppet_enterpriseconsole_inventory_dnsaltnames => master.to_s,
76
+ :q_puppet_enterpriseconsole_inventory_port => console_inventory_port,
77
+ :q_puppet_enterpriseconsole_master_hostname => master.to_s,
78
+ :q_puppet_enterpriseconsole_auth_user_email => dashboard_user,
79
+ :q_puppet_enterpriseconsole_auth_password => dashboard_password,
80
+ :q_puppet_enterpriseconsole_httpd_port => console_httpd_port,
81
+ :q_puppet_enterpriseconsole_smtp_host => smtp_host,
82
+ :q_puppet_enterpriseconsole_smtp_use_tls => smtp_use_tls,
83
+ :q_puppet_enterpriseconsole_smtp_port => smtp_port,
84
+ }
85
+
86
+ console_a[:q_puppet_enterpriseconsole_auth_user] = console_a[:q_puppet_enterpriseconsole_auth_user_email]
87
+
88
+ if smtp_password and smtp_username
89
+ console_a.merge!({
90
+ :q_puppet_enterpriseconsole_smtp_password => "'#{smtp_password}'",
91
+ :q_puppet_enterpriseconsole_smtp_username => "'#{smtp_username}'",
92
+ :q_puppet_enterpriseconsole_smtp_user_auth => 'y'
93
+ })
94
+ end
95
+
96
+ answers = agent_a.dup
97
+ if host == master
98
+ answers.merge! master_a
99
+ end
100
+
101
+ if host == dashboard
102
+ answers.merge! console_a
103
+ end
104
+
105
+ return answers
106
+ end
107
+
108
+ # Return answer data for all hosts.
109
+ #
110
+ # @return [Hash] A hash (keyed from hosts) containing hashes of answer file
111
+ # data.
112
+ def generate_answers
113
+ the_answers = {}
114
+ dashboard = only_host_with_role(@hosts, 'dashboard')
115
+ master = only_host_with_role(@hosts, 'master')
116
+ @hosts.each do |h|
117
+ the_answers[h.name] = host_answers(h, master, dashboard, @options)
118
+ if the_answers[h.name] && h[:custom_answers]
119
+ the_answers[h.name] = the_answers[h.name].merge(h[:custom_answers])
120
+ end
121
+ h[:answers] = the_answers[h.name]
122
+ end
123
+ return the_answers
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,126 @@
1
+ module BeakerAnswers
2
+ # This class provides answer file information for PE version 2.8
3
+ #
4
+ # @api private
5
+ class Version28 < Answers
6
+
7
+ # The version of PE that this set of answers is appropriate for
8
+ def self.pe_version_matcher
9
+ /\A2\.8/
10
+ end
11
+
12
+ # Return answer data for a host
13
+ #
14
+ # @param [Beaker::Host] host Host to return data for
15
+ # @param [Beaker::Host] master Host object representing the master
16
+ # @param [Beaker::Host] dashboard Host object representing the dashboard
17
+ # @param [Hash] options options for answer files
18
+ # @option options [Symbol] :type Should be one of :upgrade or :install.
19
+ # @return [Hash] A hash (keyed from hosts) containing hashes of answer file
20
+ # data.
21
+ def host_answers(host, master, dashboard, options)
22
+ return nil if host['platform'] =~ /windows/
23
+
24
+ agent_a = {
25
+ :q_install => 'y',
26
+ :q_puppetagent_install => 'y',
27
+ :q_puppet_cloud_install => 'y',
28
+ :q_puppet_symlinks_install => 'y',
29
+ :q_vendor_packages_install => 'y',
30
+ :q_puppetagent_certname => host.to_s,
31
+ :q_puppetagent_server => master.to_s,
32
+
33
+ # Disable console and master by default
34
+ # This will be overridden by other blocks being merged in
35
+ :q_puppetmaster_install => 'n',
36
+ :q_puppet_enterpriseconsole_install => 'n',
37
+ }
38
+
39
+ master_dns_altnames = [master.to_s, master['ip'], 'puppet'].compact.uniq.join(',')
40
+ master_a = {
41
+ :q_puppetmaster_install => 'y',
42
+ :q_puppetmaster_certname => master.to_s,
43
+ :q_puppetmaster_dnsaltnames => master_dns_altnames,
44
+ :q_puppetmaster_enterpriseconsole_hostname => dashboard.to_s,
45
+ :q_puppetmaster_enterpriseconsole_port => answer_for(options, :q_puppetmaster_enterpriseconsole_port, 443),
46
+ :q_puppetmaster_forward_facts => 'y',
47
+ }
48
+
49
+ dashboard_user = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_user_email)}'"
50
+ smtp_host = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_host, dashboard.to_s)}'"
51
+ dashboard_password = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_password)}'"
52
+ smtp_port = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_port)}'"
53
+ smtp_username = answer_for(options, :q_puppet_enterpriseconsole_smtp_username)
54
+ smtp_password = answer_for(options, :q_puppet_enterpriseconsole_smtp_password)
55
+ smtp_use_tls = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_use_tls)}'"
56
+ auth_database_name = answer_for(options, :q_puppet_enterpriseconsole_auth_database_name, 'console_auth')
57
+ auth_database_user = answer_for(options, :q_puppet_enterpriseconsole_auth_database_user, 'mYu7hu3r')
58
+ console_database_name = answer_for(options, :q_puppet_enterpriseconsole_database_name, 'console')
59
+ console_database_user = answer_for(options, :q_puppet_enterpriseconsole_database_user, 'mYc0nS03u3r')
60
+ console_inventory_port = answer_for(options, :q_puppet_enterpriseconsole_inventory_port, 8140)
61
+ console_httpd_port = answer_for(options, :q_puppet_enterpriseconsole_httpd_port, 443)
62
+
63
+ console_a = {
64
+ :q_puppet_enterpriseconsole_install => 'y',
65
+ :q_puppet_enterpriseconsole_database_install => 'y',
66
+ :q_puppet_enterpriseconsole_auth_database_name => auth_database_name,
67
+ :q_puppet_enterpriseconsole_auth_database_user => auth_database_user,
68
+ :q_puppet_enterpriseconsole_auth_database_password => dashboard_password,
69
+ :q_puppet_enterpriseconsole_database_name => console_database_name,
70
+ :q_puppet_enterpriseconsole_database_user => console_database_user,
71
+ :q_puppet_enterpriseconsole_database_password => dashboard_password,
72
+ :q_puppet_enterpriseconsole_inventory_hostname => host.to_s,
73
+ :q_puppet_enterpriseconsole_inventory_certname => host.to_s,
74
+ :q_puppet_enterpriseconsole_inventory_dnsaltnames => master.to_s,
75
+ :q_puppet_enterpriseconsole_inventory_port => console_inventory_port,
76
+ :q_puppet_enterpriseconsole_master_hostname => master.to_s,
77
+ :q_puppet_enterpriseconsole_auth_user_email => dashboard_user,
78
+ :q_puppet_enterpriseconsole_auth_password => dashboard_password,
79
+ :q_puppet_enterpriseconsole_httpd_port => console_httpd_port,
80
+ :q_puppet_enterpriseconsole_smtp_host => smtp_host,
81
+ :q_puppet_enterpriseconsole_smtp_use_tls => smtp_use_tls,
82
+ :q_puppet_enterpriseconsole_smtp_port => smtp_port,
83
+ }
84
+
85
+ console_a[:q_puppet_enterpriseconsole_auth_user] = console_a[:q_puppet_enterpriseconsole_auth_user_email]
86
+
87
+ if smtp_password and smtp_username
88
+ console_a.merge!({
89
+ :q_puppet_enterpriseconsole_smtp_password => "'#{smtp_password}'",
90
+ :q_puppet_enterpriseconsole_smtp_username => "'#{smtp_username}'",
91
+ :q_puppet_enterpriseconsole_smtp_user_auth => 'y'
92
+ })
93
+ end
94
+
95
+ answers = agent_a.dup
96
+ if host == master
97
+ answers.merge! master_a
98
+ end
99
+
100
+ if host == dashboard
101
+ answers.merge! console_a
102
+ end
103
+
104
+ return answers
105
+ end
106
+
107
+ # Return answer data for all hosts.
108
+ #
109
+ # @return [Hash] A hash (keyed from hosts) containing hashes of answer file
110
+ # data.
111
+ def generate_answers
112
+ the_answers = {}
113
+ dashboard = only_host_with_role(@hosts, 'dashboard')
114
+ master = only_host_with_role(@hosts, 'master')
115
+ @hosts.each do |h|
116
+ the_answers[h.name] = host_answers(h, master, dashboard, @options)
117
+ if the_answers[h.name] && h[:custom_answers]
118
+ the_answers[h.name] = the_answers[h.name].merge(h[:custom_answers])
119
+ end
120
+ h[:answers] = the_answers[h.name]
121
+ end
122
+ return the_answers
123
+ end
124
+
125
+ end
126
+ end
@@ -0,0 +1,233 @@
1
+ module BeakerAnswers
2
+ # This class provides answer file information for PE version 3.x
3
+ #
4
+ # @api private
5
+ class Version30 < Answers
6
+
7
+ # The version of PE that this set of answers is appropriate for
8
+ def self.pe_version_matcher
9
+ /\A3\.(0|1)/
10
+ end
11
+
12
+ # Return answer data for a host
13
+ #
14
+ # @param [Beaker::Host] host Host to return data for
15
+ # @param [Beaker::Host] master Host object representing the master
16
+ # @param [Beaker::Host] dashboard Host object representing the dashboard
17
+ # @param [Hash] options options for answer files
18
+ # @option options [Symbol] :type Should be one of :upgrade or :install.
19
+ # @return [Hash] A hash (keyed from hosts) containing hashes of answer file
20
+ # data.
21
+ def host_answers(host, master, database, dashboard, options)
22
+ # Windows hosts don't have normal answers...
23
+ return nil if host['platform'] =~ /windows/
24
+ masterless = options[:masterless]
25
+
26
+ # Everything's an agent
27
+ agent_a = {
28
+ :q_puppetagent_install => answer_for(options, :q_puppetagent_install, 'y'),
29
+ :q_puppet_cloud_install => answer_for(options, :q_puppet_cloud_install, 'y'),
30
+ :q_verify_packages => answer_for(options, :q_verify_packages, 'y'),
31
+ :q_puppet_symlinks_install => answer_for(options, :q_puppet_symlinks_install, 'y'),
32
+ :q_puppetagent_certname => answer_for(options, :q_puppetagent_certname, host.to_s),
33
+
34
+ # Disable database, console, and master by default
35
+ # This will be overridden by other blocks being merged in.
36
+ :q_puppetmaster_install => answer_for(options, :q_puppetmaster_install, 'n'),
37
+ :q_all_in_one_install => answer_for(options, :q_all_in_one_install, 'n'),
38
+ :q_puppet_enterpriseconsole_install => answer_for(options, :q_puppet_enterpriseconsole_install, 'n'),
39
+ :q_puppetdb_install => answer_for(options, :q_puppetdb_install, 'n'),
40
+ :q_database_install => answer_for(options, :q_database_install, 'n'),
41
+ }
42
+ agent_a[:q_puppetagent_server] = masterless ? host.to_s : master.to_s
43
+ agent_a[:q_continue_or_reenter_master_hostname] = 'c' if masterless
44
+
45
+ # These base answers are needed by all
46
+ common_a = {
47
+ :q_install => answer_for(options, :q_install, 'y'),
48
+ :q_vendor_packages_install => answer_for(options, :q_vendor_packages_install, 'y'),
49
+ }
50
+
51
+ unless masterless
52
+ # master/database answers
53
+ master_database_a = {
54
+ :q_puppetmaster_certname => answer_for(options, :q_puppetmaster_certname, master.to_s)
55
+ }
56
+
57
+ # Master/dashboard answers
58
+ master_console_a = {
59
+ :q_puppetdb_hostname => answer_for(options, :q_puppetdb_hostname, database.to_s),
60
+ :q_puppetdb_port => answer_for(options, :q_puppetdb_port, 8081)
61
+ }
62
+
63
+ # Master only answers
64
+ master_dns_altnames = [master.to_s, master['ip'], 'puppet'].compact.uniq.join(',')
65
+ master_a = {
66
+ :q_puppetmaster_install => answer_for(options, :q_puppetmaster_install, 'y'),
67
+ :q_puppetmaster_dnsaltnames => master_dns_altnames,
68
+ :q_puppetmaster_enterpriseconsole_hostname => answer_for(options, :q_puppetmaster_enterpriseconsole_hostname, dashboard.to_s),
69
+ :q_puppetmaster_enterpriseconsole_port => answer_for(options, :q_puppetmaster_enterpriseconsole_port, 443),
70
+ }
71
+
72
+ # Common answers for console and database
73
+ console_auth_password = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_password)}'"
74
+ puppetdb_database_name = answer_for(options, :q_puppetdb_database_name, 'pe-puppetdb')
75
+ puppetdb_database_user = answer_for(options, :q_puppetdb_database_user, 'mYpdBu3r')
76
+ puppetdb_database_password = answer_for(options, :q_puppetdb_database_password, "'#{answer_for(options, :q_puppetdb_password)}'")
77
+ console_auth_database_name = answer_for(options, :q_puppet_enterpriseconsole_auth_database_name, 'console_auth')
78
+ console_auth_database_user = answer_for(options, :q_puppet_enterpriseconsole_auth_database_user, 'mYu7hu3r')
79
+ console_auth_database_password = answer_for(options, :q_puppet_enterpriseconsole_auth_database_password, console_auth_password)
80
+ console_database_name = answer_for(options, :q_puppet_enterpriseconsole_database_name, 'console')
81
+ console_database_user = answer_for(options, :q_puppet_enterpriseconsole_database_user, 'mYc0nS03u3r')
82
+ console_database_host = answer_for(options, :q_database_host, database.to_s)
83
+ console_database_port = answer_for(options, :q_database_port, 5432)
84
+ console_database_password = answer_for(options, :q_puppet_enterpriseconsole_database_password, console_auth_password)
85
+
86
+ console_database_a = {
87
+ :q_puppetdb_database_name => puppetdb_database_name,
88
+ :q_puppetdb_database_user => puppetdb_database_user,
89
+ :q_puppetdb_database_password => puppetdb_database_password,
90
+ :q_puppet_enterpriseconsole_auth_database_name => console_auth_database_name,
91
+ :q_puppet_enterpriseconsole_auth_database_user => console_auth_database_user,
92
+ :q_puppet_enterpriseconsole_auth_database_password => console_auth_database_password,
93
+ :q_puppet_enterpriseconsole_database_name => console_database_name,
94
+ :q_puppet_enterpriseconsole_database_user => console_database_user,
95
+ :q_puppet_enterpriseconsole_database_password => console_database_password,
96
+ :q_database_host => console_database_host,
97
+ :q_database_port => console_database_port,
98
+ }
99
+
100
+ # Console only answers
101
+ dashboard_user = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_user_email)}'"
102
+
103
+
104
+ console_install = answer_for(options, :q_puppet_enterpriseconsole_install, 'y')
105
+ console_inventory_hostname = answer_for(options, :q_puppet_enterpriseconsole_inventory_hostname, host.to_s)
106
+ console_inventory_certname = answer_for(options, :q_puppet_enterpriseconsole_inventory_certname, host.to_s)
107
+ console_inventory_dnsaltnames = answer_for(options, :q_puppet_enterpriseconsole_inventory_dnsaltnames, dashboard.to_s)
108
+ smtp_host = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_host, dashboard.to_s)}'"
109
+ smtp_port = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_port)}'"
110
+ smtp_username = answer_for(options, :q_puppet_enterpriseconsole_smtp_username)
111
+ smtp_password = answer_for(options, :q_puppet_enterpriseconsole_smtp_password)
112
+ smtp_use_tls = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_use_tls)}'"
113
+ console_inventory_port = answer_for(options, :q_puppet_enterpriseconsole_inventory_port, 8140)
114
+ master_hostname = answer_for(options, :q_puppet_enterpriseconsole_master_hostname, master.to_s)
115
+ console_httpd_port = answer_for(options, :q_puppet_enterpriseconsole_httpd_port, 443)
116
+
117
+ console_a = {
118
+ :q_puppet_enterpriseconsole_install => console_install,
119
+ :q_puppet_enterpriseconsole_inventory_hostname => console_inventory_hostname,
120
+ :q_puppet_enterpriseconsole_inventory_certname => console_inventory_certname,
121
+ :q_puppet_enterpriseconsole_inventory_dnsaltnames => console_inventory_dnsaltnames,
122
+ :q_puppet_enterpriseconsole_inventory_port => console_inventory_port,
123
+ :q_puppet_enterpriseconsole_master_hostname => master_hostname,
124
+ :q_puppet_enterpriseconsole_auth_user_email => dashboard_user,
125
+ :q_puppet_enterpriseconsole_auth_password => console_auth_password,
126
+ :q_puppet_enterpriseconsole_httpd_port => console_httpd_port,
127
+ :q_puppet_enterpriseconsole_smtp_host => smtp_host,
128
+ :q_puppet_enterpriseconsole_smtp_use_tls => smtp_use_tls,
129
+ :q_puppet_enterpriseconsole_smtp_port => smtp_port,
130
+ }
131
+
132
+ if smtp_password and smtp_username
133
+ console_smtp_user_auth = answer_for(options, :q_puppet_enterpriseconsole_smtp_user_auth, 'y')
134
+ console_a.merge!({
135
+ :q_puppet_enterpriseconsole_smtp_password => "'#{smtp_password}'",
136
+ :q_puppet_enterpriseconsole_smtp_username => "'#{smtp_username}'",
137
+ :q_puppet_enterpriseconsole_smtp_user_auth => console_smtp_user_auth
138
+ })
139
+ end
140
+
141
+ # Database only answers
142
+ database_a = {
143
+ :q_puppetdb_install => answer_for(options, :q_puppetdb_install, 'y'),
144
+ :q_database_install => answer_for(options, :q_database_install, 'y'),
145
+ :q_database_root_password => "'#{answer_for(options, :q_database_root_password, '=ZYdjiP3jCwV5eo9s1MBd')}'",
146
+ :q_database_root_user => answer_for(options, :q_database_root_user, 'pe-postgres'),
147
+ }
148
+ end
149
+
150
+ # Special answers for special hosts
151
+ aix_a = {
152
+ :q_run_updtvpkg => answer_for(options, :q_run_updtvpkg, 'y'),
153
+ }
154
+
155
+ answers = common_a.dup
156
+
157
+ unless options[:type] == :upgrade
158
+ answers.merge! agent_a
159
+ end
160
+
161
+ if host == master
162
+ answers.merge! master_console_a
163
+ unless options[:type] == :upgrade
164
+ answers.merge! master_a
165
+ answers.merge! master_database_a
166
+ end
167
+ end
168
+
169
+ if host == dashboard
170
+ answers.merge! master_console_a
171
+ answers.merge! console_database_a
172
+ answers[:q_pe_database] = answer_for(options, :q_pe_database, 'y')
173
+ unless options[:type] == :upgrade
174
+ answers.merge! console_a
175
+ else
176
+ answers[:q_database_export_dir] = answer_for(options, :q_database_export_dir, '/tmp')
177
+ end
178
+ end
179
+
180
+ if host == database
181
+ if database != master
182
+ if options[:type] == :upgrade
183
+ # This is kinda annoying - if we're upgrading to 3.0 and are
184
+ # puppetdb, we're actually doing a clean install. We thus
185
+ # need the core agent answers.
186
+ answers.merge! agent_a
187
+ end
188
+ answers.merge! master_database_a
189
+ end
190
+ answers.merge! database_a
191
+ answers.merge! console_database_a
192
+ end
193
+
194
+ if host == master and host == database and host == dashboard
195
+ answers[:q_all_in_one_install] = 'y'
196
+ end
197
+
198
+ if host['platform'].include? 'aix'
199
+ answers.merge! aix_a
200
+ end
201
+
202
+ return answers
203
+ end
204
+
205
+ # Return answer data for all hosts.
206
+ #
207
+ # @return [Hash] A hash (keyed from hosts) containing hashes of answer file
208
+ # data.
209
+ def generate_answers
210
+ the_answers = {}
211
+ masterless = @options[:masterless]
212
+ database = masterless ? nil : only_host_with_role(@hosts, 'database')
213
+ dashboard = masterless ? nil : only_host_with_role(@hosts, 'dashboard')
214
+ master = masterless ? nil : only_host_with_role(@hosts, 'master')
215
+ @hosts.each do |h|
216
+ if @options[:type] == :upgrade and h[:pe_ver] =~ /\A3.0/
217
+ # 3.0.x to 3.0.x should require no answers
218
+ the_answers[h.name] = {
219
+ :q_install => answer_for(@options, :q_install, 'y'),
220
+ :q_install_vendor_packages => answer_for(@options, :q_install_vendor_packages, 'y'),
221
+ }
222
+ else
223
+ the_answers[h.name] = host_answers(h, master, database, dashboard, @options)
224
+ end
225
+ if the_answers[h.name] && h[:custom_answers]
226
+ the_answers[h.name] = the_answers[h.name].merge(h[:custom_answers])
227
+ end
228
+ h[:answers] = the_answers[h.name]
229
+ end
230
+ return the_answers
231
+ end
232
+ end
233
+ end