Guest User

Untitled

a guest
Jul 22nd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. require 'fog'
  2. require 'ubuntu_ami'
  3. require 'chef/knife/ec2_server_create'
  4.  
  5. # Here are some defaults
  6. # TODO: accept command line options
  7.  
  8. REGION = "eu-west-1"
  9. RELEASE = "lucid"
  10. SECURITY_GROUP = "default"
  11. FLAVOUR = "m1.small"
  12. KEY = "gsg-opseng"
  13. ZONE = "eu-west-1b"
  14. EBS = nil
  15.  
  16. def select_hostname
  17. available_hosts = search(:hostnames, 'NOT status:TAKEN').map do |hostname|
  18. hostname['id']
  19. end
  20.  
  21. return available_hosts[rand(available_hosts.size)]
  22. end
  23.  
  24. def select_ami(release)
  25. ami_generator = UbuntuAmi.new(RELEASE)
  26. region = ami_generator.region_fix(REGION)
  27. size = "_" + FLAVOUR.split(".").last
  28. ebs = EBS ? "_ebs" : ""
  29. key = region + size + ebs
  30. return ami_generator.run[key]
  31. end
  32.  
  33. connection = Fog::AWS::Compute.new(
  34. :aws_access_key_id => Chef::Config[:knife][:aws_access_key_id],
  35. :aws_secret_access_key => Chef::Config[:knife][:aws_secret_access_key],
  36. :region => REGION
  37. )
  38.  
  39. server = connection.servers.create(
  40. :image_id => select_ami(RELEASE),
  41. :groups => [ SECURITY_GROUP ],
  42. :flavor_id => FLAVOUR,
  43. :key_name => KEY,
  44. :availability_zone => ZONE
  45. )
  46.  
  47. puts "Instance ID: #{server.id}"
  48. puts "Flavour: #{server.flavor_id}"
  49. puts "Image: #{server.image_id}"
  50. puts "Availability Zone: #{server.availability_zone}"
  51. puts "Security Groups: #{server.groups.join(", ")}"
  52. puts "SSH Key: #{server.key_name}"
  53.  
  54. print "\nWaiting for server"
  55. server.wait_for { print "."; ready? }
  56. puts("\n")
  57.  
  58. puts "Public DNS Name: #{server.dns_name}"
  59. puts "Public IP Address: #{server.ip_address}"
  60. puts "Private DNS Name: #{server.private_dns_name}"
  61. puts "Private IP Address: #{server.private_ip_address}"
  62.  
  63. nodename = select_hostname
  64.  
  65. puts "Now bootstrap with the following command:"
  66. puts "knife bootstrap #{server.ip_address} -N #{nodename}"
Add Comment
Please, Sign In to add comment