Sha256: 34dd8afe63db1fe2f06c1da9bfb7b5902f0a7c6736d8068ed1de3d7c4bc601a1

Contents?: true

Size: 881 Bytes

Versions: 3

Compression:

Stored size: 881 Bytes

Contents

require 'net/http'

def get_from_ec2(key = '')
  base_url = "http://instance-data.ec2.internal/latest/meta-data/" + key
  url = URI.parse(base_url)
  req = Net::HTTP::Get.new(url.path)
  res = Net::HTTP.start(url.host, url.port) do |http|
    http.request(req)
  end
  
  res.body
end

def get_keys(key = '')
  keys = get_from_ec2(key).split("\n")
  
  keys.inject([]) do |accum, k|
    if k =~ /\/$/
      get_keys(key + k).each do |k|
        accum << k
      end
      
      accum
    elsif k =~ /=/
      get_keys(key + $` + '/').each do |k|
        accum << k
      end
      
      accum
    else
      accum << key + k
      
      accum
    end
  end
end

if attrib?('domain') =~ /(\.amazonaws.com|compute-1.internal|ec2.internal)$/
  replace_attrib("ec2", "true")

  get_keys.each do |key|
    replace_attrib("ec2-#{key.gsub('/', '-')}", get_from_ec2("#{key}"))
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
loe-iclassify-interface-1.0.13 recipes/02_ec2.rb
loe-iclassify-interface-1.0.14 recipes/02_ec2.rb
loe-iclassify-interface-1.0.15 recipes/02_ec2.rb