Class: Stacco::Template
- Inherits:
-
Object
- Object
- Stacco::Template
- Defined in:
- lib/stacco.rb
Defined Under Namespace
Classes: RenderContext
Instance Method Summary collapse
-
#initialize(stack, template_body) ⇒ Template
constructor
A new instance of Template.
- #result(vars) ⇒ Object
- #udscript(roles, vars) ⇒ Object
Constructor Details
#initialize(stack, template_body) ⇒ Template
Returns a new instance of Template.
392 393 394 395 396 |
# File 'lib/stacco.rb', line 392 def initialize(stack, template_body) @stack = stack template_body = template_body.read if template_body.respond_to?(:read) @template_body = template_body end |
Instance Method Details
#result(vars) ⇒ Object
398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 |
# File 'lib/stacco.rb', line 398 def result(vars) cloudformation_vars = {} cloudformation_vars.update vars cloudformation_vars.update vars['cloudformation'] cloudinit_vars = {} cloudinit_vars.update vars cloudinit_vars.update vars['cloud-init'] cloudinit_vars.each do |k, v| cloudinit_vars.delete(k) if v.kind_of?(Hash) or v.kind_of?(Array) end cloudformation_vars['userdata'] = {} cloudformation_vars['roles'].each do |host_name, host_roles| cloudformation_vars['userdata'][host_name] = udscript(host_roles, cloudinit_vars) end b = RenderContext.new(@stack, vars, cloudformation_vars).instance_eval{ binding } ERB.new(@template_body).result(b) end |
#udscript(roles, vars) ⇒ Object
373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 |
# File 'lib/stacco.rb', line 373 def udscript(roles, vars) roles = roles.map{ |role| role.intern } unless roles.include? :backend vars = vars.dup vars.delete 'wallet_data' end lns = [] lns.concat(vars.map do |k, v| var_val = v.include?("\0") ? Base64.encode64(v) : v "export #{k.to_s.upcase}=#{Shellwords.escape(var_val)}\n" end) lns.concat Stacco::Resources::CloudInit::CommonScripts[:before] roles.each{ |role| lns.concat Stacco::Resources::CloudInit::RoleScripts[role] } lns.concat Stacco::Resources::CloudInit::CommonScripts[:after] lns end |