Class: Provisionator::Ec2Launcher
- Inherits:
-
Object
- Object
- Provisionator::Ec2Launcher
- Defined in:
- lib/provisionator/ec2_launcher.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Ec2Launcher
constructor
A new instance of Ec2Launcher.
- #launch ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Ec2Launcher
Returns a new instance of Ec2Launcher.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/provisionator/ec2_launcher.rb', line 12 def initialize ={} = [:instance_type] ||= ENV['P_INSTANCE_TYPE'] || 'm1.small' [:no_release] ||= ENV['P_NO_RELEASE'] [:ec2_region] ||= ENV['P_EC2_REGION'] || 'us-east-1' [:ec2_endpoint] ||= ENV['P_EC2_ENDPOINT'] || "ec2.#{@options[:ec2_region]}.amazonaws.com" [:ami_id] ||= ENV['P_AMI_ID'] [:ebs_volumes] ||= [] [:key_name] ||= ENV['P_KEY_NAME'] [:security_groups] ||= ENV['P_SECURITY_GROUPS'].try(:split, ',') [:availability_zones] ||= ENV['P_AVAILABILITY_ZONES'].try(:split, ',') || ec2.regions[[:ec2_region]].availability_zones.map(&:name) [:instance_count] ||= ENV['P_INSTANCE_COUNT'].try(:to_i) || 1 [:load_balancer_name] ||= ENV['P_LOAD_BALANCER_NAME'] [:app_name, :chef_node, :ami_id, :key_name, :security_groups].each do |option| raise "option ':#{option}' is required" if [option].nil? end end |
Class Method Details
.launch(options = {}) ⇒ Object
8 9 10 |
# File 'lib/provisionator/ec2_launcher.rb', line 8 def self.launch ={} new().launch end |
Instance Method Details
#launch ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/provisionator/ec2_launcher.rb', line 32 def launch puts "Launching #{@options[:instance_count]} #{@options[:instance_type]} instance/s..." instances = launch_instances wait_for_instances instances register_with_load_balancer instances assign_elastic_ip instances.first instances.each do |instance| puts "Launched instance #{instance.id}, status: #{instance.status}, public dns: #{instance.dns_name}, public ip: #{instance.ip_address}" end end |