Class: Zest::BootstrapGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/knife-instance/bootstrap_generator.rb

Constant Summary collapse

CONFIG_FILE_TEMPLATE =
File.expand_path 'templates/boot.sh.erb', File.dirname(__FILE__)

Instance Method Summary collapse

Constructor Details

#initialize(validation_key_file, validation_client_name, chef_server_url, encrypted_databag_secret_file, attr = {}) ⇒ BootstrapGenerator

Returns a new instance of BootstrapGenerator.



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/knife-instance/bootstrap_generator.rb', line 6

def initialize(validation_key_file, validation_client_name, chef_server_url, encrypted_databag_secret_file, attr = {})
  @validation_client_name = validation_client_name
  @validation_key_file = validation_key_file
  @chef_server_url = chef_server_url
  @encrypted_databag_secret_file = encrypted_databag_secret_file

  @environment = attr[:environment]
  @run_list = attr[:run_list]
  @hostname = attr[:hostname]
  @color = attr[:color]
  @base_domain = attr[:base_domain]
  @domain = attr[:domain]
end

Instance Method Details

#config_contentObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/knife-instance/bootstrap_generator.rb', line 43

def config_content
  <<-CONFIG
  require 'syslog-logger'
  Logger::Syslog.class_eval do
attr_accessor :sync, :formatter
  end

  log_level              :info
  log_location           Logger::Syslog.new("chef-client")
  chef_server_url        "#{@chef_server_url}"
  validation_client_name "#{@validation_client_name}"
  node_name              "#{@hostname}"
  CONFIG
end

#encrypted_data_bag_secretObject



34
35
36
# File 'lib/knife-instance/bootstrap_generator.rb', line 34

def encrypted_data_bag_secret
  File.read @encrypted_databag_secret_file
end

#first_bootObject



20
21
22
23
24
25
26
27
28
# File 'lib/knife-instance/bootstrap_generator.rb', line 20

def first_boot
  {
    "run_list"          => @run_list,
    "assigned_hostname" => @hostname,
    "rails"             => {"cluster" => {"color" => @color}},
    "base_domain"       => @base_domain,
    "domain"            => @domain
  }.to_json
end

#generateObject



38
39
40
41
# File 'lib/knife-instance/bootstrap_generator.rb', line 38

def generate
  template = File.read(CONFIG_FILE_TEMPLATE)
  Erubis::Eruby.new(template).evaluate(self)
end

#start_chefObject



58
59
60
# File 'lib/knife-instance/bootstrap_generator.rb', line 58

def start_chef
  "/usr/bin/chef-client -j /etc/chef/first-boot.json -E #{@environment}"
end

#validation_keyObject



30
31
32
# File 'lib/knife-instance/bootstrap_generator.rb', line 30

def validation_key
  File.read(@validation_key_file)
end