Class: Pec::Builder::UserData

Inherits:
Object
  • Object
show all
Defined in:
lib/pec/builder/user_data.rb

Instance Method Summary collapse

Instance Method Details

#build(host, port_user_data) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/pec/builder/user_data.rb', line 4

def build(host, port_user_data) 
    user_data = default(host)
    user_data["write_files"] = port_user_data if port_user_data
    if template = load_template(host)
      user_data.deep_merge!(template) 
    end 
    { user_data: "#cloud-config\n" + user_data.to_yaml }
end

#default(host) ⇒ Object



21
22
23
24
25
# File 'lib/pec/builder/user_data.rb', line 21

def default(host)
  _def = host.user_data || {}
  _def['fqdn'] = host.name if host.user_data && !host.user_data['fqdn'] 
  _def
end

#load_template(host) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/pec/builder/user_data.rb', line 13

def load_template(host)
  host.templates.inject({}) do |merge_template, template|
    template.to_s.concat('.yaml') unless template.to_s.match(/.*\.yaml/)
    raise "#{template} not fond!" unless FileTest.exist?("user_data/#{template}")
    merge_template.deep_merge!(YAML.load_file("user_data/#{template}").to_hash)
  end if host.templates
end