6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
|
# File 'lib/mystro/userdata.rb', line 6
def create(name, roles, environment, opts={ })
package = opts.delete(:package)
dependencies = opts.delete(:dependencies)
gems = opts.delete(:gems)
files = opts.delete(:files)
templates = opts.delete(:templates)
directory = "#{Mystro.directory}/userdata/#{package}"
file = "#{directory}/userdata.yml"
raise "userdata error: package not specified" unless package
raise "userdata error: pacakge #{package} directory does not exist (#{directory})" unless File.directory?(directory)
raise "userdata error: configuration file does not exist (#{file})" unless File.exists?(file)
config = YAML.load_file(file)
data = {
:name => name,
:roles => roles,
:environment => environment,
:nickname => name,
:organization => "unknown",
:zone => "unknown.local",
:dependencies => [],
:gems => [],
:files => [],
:templates => [],
:directory => directory,
:template => "userdata.sh.erb",
}.deep_merge(config.symbolize_keys!).deep_merge(opts.symbolize_keys!)
data[:data] = data
data[:gems] += gems if gems
data[:dependencies] += dependencies if dependencies
data[:files] += files if files
data[:templates] += templates if templates
template = File.open("#{directory}/#{data[:template]}").read
erb = Erubis::Eruby.new(template)
out = erb.evaluate(data)
end
|