class AWSCarb::UserData

Attributes

combined_user_data[RW]

Public Instance Methods

combine_user_data(config, user_data_template_resolved) click to toggle source
# File lib/aws-carb/user_data.rb, line 54
def combine_user_data(config, user_data_template_resolved)

  # if user_data_template and user_data are supplied then combine them, otherwise just
  # use user_data (which is empty by default)
  begin
    if config[:ec2].andand[:user_data]
      user_data = config[:ec2][:user_data]
    end

    if ! user_data_template_resolved.nil? and ! user_data.nil?
      puts "# combining user_data with user_data_template"
      user_data = user_data_template_resolved + user_data
      puts
    elsif ! user_data_template_resolved.nil? and user_data.nil?
      debug "# no raw user_data parsed in"
      user_data = user_data_template_resolved
      debug
    elsif user_data.nil?
      debug "# no user_data or user_data_template specified on the command line"
      user_data = ""
      debug
    else
      debug "# using user_data from cli argument"
      debug
    end

  rescue => e
    puts "# failed to combine user_data!"
    die e
  end

  return user_data
end
create(config) click to toggle source
# File lib/aws-carb/user_data.rb, line 10
def create(config)
  user_data_template_resolved = resolve_template(config)
  @combined_user_data         = combine_user_data(config, user_data_template_resolved)
  return @combined_user_data
end
display() click to toggle source
# File lib/aws-carb/user_data.rb, line 88
def display
  return if @combined_user_data.nil?

  puts "# --- beginning of user_data ---"
  puts
  begin
    puts @combined_user_data
  rescue => e
    puts "error: could not display user_data!"
    puts e
  end
  puts
  puts "# --- end of user_data ---"
  puts
end
resolve_template(config) click to toggle source
# File lib/aws-carb/user_data.rb, line 16
def resolve_template(config)

  user_data_template         = nil
  resolved_template          = nil

  # FIXME: blank templates / empty templates / no template should work..

  return nil unless config[:ec2] and config[:user_data_template][:file]

  ShellSpinner "# loading template", false do
    begin
      template_file = config[:user_data_template][:file]

      raise ArgumentError, "no such file: #{template_file}" unless File.exist?(template_file)

      user_data_template = File.read(template_file)
    rescue => e
      puts "# unable to open template file:"
      die e
    end
  end

  puts

 ShellSpinner "# parsing template"  do
    begin
      resolved_template = Erubis::Eruby.new(user_data_template).result(config[:user_data_template_variables])
    rescue => e
      puts "# failed to resolve variables in user_data_template:"
      die e
    end
  end

  puts

  return resolved_template
end