Class: BeakerAnswers::Version20

Inherits:
Answers
  • Object
show all
Defined in:
lib/beaker-answers/versions/version20.rb

Overview

This class provides answer file information for PE version 2.0

Constant Summary

Constants inherited from Answers

Answers::DEFAULT_ANSWERS, Answers::DEFAULT_FORMAT, Answers::DEFAULT_HIERA_ANSWERS

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Answers

#answer_for, #answer_hiera, #answer_string, #answers, create, #get_defaults_or_answers, #initialize, #installer_configuration_string, #only_host_with_role, supported_upgrade_versions, supported_versions

Constructor Details

This class inherits a constructor from BeakerAnswers::Answers

Class Method Details

.pe_version_matcherObject

The version of PE that this set of answers is appropriate for



8
9
10
# File 'lib/beaker-answers/versions/version20.rb', line 8

def self.pe_version_matcher
  /\A2\.0/
end

Instance Method Details

#generate_answersHash

Return answer data for all hosts.



112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/beaker-answers/versions/version20.rb', line 112

def generate_answers
  the_answers = {}
  dashboard = only_host_with_role(@hosts, 'dashboard')
  master = only_host_with_role(@hosts, 'master')
  @hosts.each do |h|
    the_answers[h.name] = host_answers(h, master, dashboard, @options)
    if the_answers[h.name] && h[:custom_answers]
      the_answers[h.name] = the_answers[h.name].merge(h[:custom_answers])
    end
    h[:answers] = the_answers[h.name]
  end
  return the_answers
end

#host_answers(host, master, dashboard, options) ⇒ Hash

Return answer data for a host

Options Hash (options):

  • :type (Symbol)

    Should be one of :upgrade or :install.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/beaker-answers/versions/version20.rb', line 21

def host_answers(host, master, dashboard, options)
  return nil if host['platform'] =~ /windows/

  agent_a = {
    :q_install => 'y',
    :q_puppetagent_install => 'y',
    :q_puppet_cloud_install => 'y',
    :q_puppet_symlinks_install => 'y',
    :q_vendor_packages_install => 'y',
    :q_puppetagent_certname => host.to_s,
    :q_puppetagent_server => master.to_s,

    # Disable console and master by default
    # This will be overridden by other blocks being merged in
    :q_puppetmaster_install => 'n',
    :q_puppet_enterpriseconsole_install => 'n',
  }

  master_dns_altnames = [master.to_s, master['ip'], 'puppet'].compact.uniq.join(',')
  master_a = {
    :q_puppetmaster_install => 'y',
    :q_puppetmaster_certname => master.to_s,
    :q_puppetmaster_dnsaltnames => master_dns_altnames,
    :q_puppetmaster_enterpriseconsole_hostname => dashboard.to_s,
    :q_puppetmaster_enterpriseconsole_port => answer_for(options, :q_puppetmaster_enterpriseconsole_port, 443),
    :q_puppetmaster_forward_facts => 'y',
  }

  dashboard_user = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_user_email)}'"
  smtp_host = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_host, dashboard.to_s)}'"
  dashboard_password = "'#{answer_for(options, :q_puppet_enterpriseconsole_auth_password)}'"
  smtp_port = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_port)}'"
  smtp_username = answer_for(options, :q_puppet_enterpriseconsole_smtp_username)
  smtp_password = answer_for(options, :q_puppet_enterpriseconsole_smtp_password)
  smtp_use_tls = "'#{answer_for(options, :q_puppet_enterpriseconsole_smtp_use_tls)}'"
  auth_database_name = answer_for(options, :q_puppet_enterpriseconsole_auth_database_name, 'console_auth')
  auth_database_user = answer_for(options, :q_puppet_enterpriseconsole_auth_database_user, 'mYu7hu3r')
  console_database_name = answer_for(options, :q_puppet_enterpriseconsole_database_name, 'console')
  console_database_user = answer_for(options, :q_puppet_enterpriseconsole_database_user, 'mYc0nS03u3r')
  console_inventory_port = answer_for(options, :q_puppet_enterpriseconsole_inventory_port, 8140)
  console_httpd_port = answer_for(options, :q_puppet_enterpriseconsole_httpd_port, 443)

  console_a = {
    :q_puppet_enterpriseconsole_install => 'y',
    :q_puppet_enterpriseconsole_database_install => 'y',
    :q_puppet_enterpriseconsole_auth_database_name => auth_database_name,
    :q_puppet_enterpriseconsole_auth_database_user => auth_database_user,
    :q_puppet_enterpriseconsole_auth_database_password => dashboard_password,
    :q_puppet_enterpriseconsole_database_name => console_database_name,
    :q_puppet_enterpriseconsole_database_user => console_database_user,
    :q_puppet_enterpriseconsole_database_root_password => dashboard_password,
    :q_puppet_enterpriseconsole_database_password => dashboard_password,
    :q_puppet_enterpriseconsole_inventory_hostname => host.to_s,
    :q_puppet_enterpriseconsole_inventory_certname => host.to_s,
    :q_puppet_enterpriseconsole_inventory_dnsaltnames => master.to_s,
    :q_puppet_enterpriseconsole_inventory_port => console_inventory_port,
    :q_puppet_enterpriseconsole_master_hostname => master.to_s,
    :q_puppet_enterpriseconsole_auth_user_email => dashboard_user,
    :q_puppet_enterpriseconsole_auth_password => dashboard_password,
    :q_puppet_enterpriseconsole_httpd_port => console_httpd_port,
    :q_puppet_enterpriseconsole_smtp_host => smtp_host,
    :q_puppet_enterpriseconsole_smtp_use_tls => smtp_use_tls,
    :q_puppet_enterpriseconsole_smtp_port => smtp_port,
  }

  console_a[:q_puppet_enterpriseconsole_auth_user] = console_a[:q_puppet_enterpriseconsole_auth_user_email]

  if smtp_password and smtp_username
    console_a.merge!({
                       :q_puppet_enterpriseconsole_smtp_password => "'#{smtp_password}'",
                       :q_puppet_enterpriseconsole_smtp_username => "'#{smtp_username}'",
                       :q_puppet_enterpriseconsole_smtp_user_auth => 'y'
                     })
  end

  answers = agent_a.dup
  if host == master
    answers.merge! master_a
  end

  if host == dashboard
    answers.merge! console_a
  end

  return answers
end