aws_helper.rb 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. require 'fileutils'
  2. module OpenShift
  3. module Ops
  4. class AwsHelper
  5. MYDIR = File.expand_path(File.dirname(__FILE__))
  6. def self.get_list()
  7. cmd = "#{MYDIR}/../inventory/aws/ec2.py --list"
  8. hosts = %x[#{cmd} 2>&1]
  9. raise "Error: failed to list hosts\n#{hosts}" unless $?.exitstatus == 0
  10. return JSON.parse(hosts)
  11. end
  12. def self.get_hosts()
  13. hosts = get_list()
  14. retval = []
  15. hosts['_meta']['hostvars'].each do |host, info|
  16. retval << OpenStruct.new({
  17. :name => info['ec2_tag_Name'],
  18. :env => info['ec2_tag_environment'] || 'UNSET',
  19. :public_ip => info['ec2_ip_address'],
  20. :public_dns => info['ec2_public_dns_name'],
  21. :state => info['ec2_state'],
  22. :created_by => info['ec2_tag_created-by']
  23. })
  24. end
  25. retval.sort_by! { |h| [h.env, h.state, h.name] }
  26. return retval
  27. end
  28. def self.get_host_details(host)
  29. hosts = get_list()
  30. dns_names = hosts["tag_Name_#{host}"]
  31. raise "Error: host not found [#{host}]" if dns_names.nil?
  32. return hosts['_meta']['hostvars'][dns_names.first]
  33. end
  34. def self.check_creds()
  35. raise "AWS_ACCESS_KEY_ID environment variable must be set" if ENV['AWS_ACCESS_KEY_ID'].nil?
  36. raise "AWS_SECRET_ACCESS_KEY environment variable must be set" if ENV['AWS_SECRET_ACCESS_KEY'].nil?
  37. end
  38. def self.clear_inventory_cache()
  39. path = "#{ENV['HOME']}/.ansible/tmp"
  40. cache_files = ["#{path}/ansible-ec2.cache", "#{path}/ansible-ec2.index"]
  41. FileUtils.rm(cache_files)
  42. end
  43. def self.generate_env_tag(env)
  44. return { "environment" => env }
  45. end
  46. def self.generate_env_tag_name(env)
  47. h = generate_env_tag(env)
  48. return "tag_#{h.keys.first}_#{h.values.first}"
  49. end
  50. def self.generate_host_type_tag(host_type)
  51. return { "host-type" => host_type }
  52. end
  53. def self.generate_host_type_tag_name(host_type)
  54. h = generate_host_type_tag(host_type)
  55. return "tag_#{h.keys.first}_#{h.values.first}"
  56. end
  57. def self.generate_env_host_type_tag(env, host_type)
  58. return { "env-host-type" => "#{env}-#{host_type}" }
  59. end
  60. def self.generate_env_host_type_tag_name(env, host_type)
  61. h = generate_env_host_type_tag(env, host_type)
  62. return "tag_#{h.keys.first}_#{h.values.first}"
  63. end
  64. end
  65. end
  66. end